<?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=Snukara</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=Snukara"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Snukara"/>
	<updated>2026-06-03T21:17:42Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160933</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160933"/>
		<updated>2024-12-10T03:52:50Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Code Snippets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
To improve the usability and visual appeal of the &amp;quot;Etc&amp;quot; tab, we integrated icons into each functional tile. These icons, primarily sourced from React Material UI, were selected to align with their respective actions:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
React Material UI provides a rich library of customizable icons that seamlessly integrate with React-based projects. We used the following command to install the required packages:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install @mui/material @emotion/styled @emotion/react @mui/icons-material.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These visually distinct icons make the tiles more descriptive and user-friendly, acting as intuitive visual cues for administrators. This enhancement not only improves navigation but also adheres to modern design standards, giving the &amp;quot;Etc&amp;quot; tab a polished and professional appearance.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 6: Adding a Title to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
In this step, we added a descriptive title, &amp;quot;Editing Assignment: Meta Review Fix_1&amp;quot;, at the top of the &amp;quot;Etc&amp;quot; tab. This title dynamically reflects the assignment being edited, providing administrators with clear context for the task they are performing.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i6.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 7: Implementing Save Confirmation Banner'''&lt;br /&gt;
&lt;br /&gt;
We added a confirmation banner that notifies users of successful changes after clicking the &amp;quot;Save&amp;quot; button. The banner displays the message &amp;quot;The assignment was successfully saved!&amp;quot; in a green box, positioned at the top of the page to provide clear feedback.&lt;br /&gt;
&lt;br /&gt;
The banner is designed to appear immediately and automatically disappear after 3 seconds, offering a non-intrusive way to confirm user actions while maintaining a clean and seamless interface. This feature enhances usability by ensuring users are informed without disrupting their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i71.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 8: Navigating to Manage Assignments Page'''&lt;br /&gt;
&lt;br /&gt;
We implemented a seamless navigation flow where clicking the Back button on the &amp;quot;Edit Assignment&amp;quot; page redirects users to the Manage Assignments page. This page features an organized layout with search fields for assignment name, course name, creation date, and updated date, along with pagination controls for browsing through assignments.&lt;br /&gt;
&lt;br /&gt;
The design ensures administrators can efficiently manage assignments while maintaining an intuitive user experience. This functionality aligns with the overall navigation framework, keeping the interface consistent and user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i8.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
  const [showBanner, setShowBanner] = useState(false);&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Save Button click handler&lt;br /&gt;
  const handleSave = () =&amp;gt; {&lt;br /&gt;
    setShowBanner(true);&lt;br /&gt;
    // Hide banner after 3 seconds&lt;br /&gt;
    setTimeout(() =&amp;gt; {&lt;br /&gt;
      setShowBanner(false);&lt;br /&gt;
    }, 3000);&lt;br /&gt;
  };&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This code snippet shows the back button click handler &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  const handleBack = () =&amp;gt; {&lt;br /&gt;
    window.location.href = '/assignments';&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
      {/* Save banner which pops up once save is clicked  */}&lt;br /&gt;
      {showBanner &amp;amp;&amp;amp; (&lt;br /&gt;
        &amp;lt;div className=&amp;quot;success-banner&amp;quot;&amp;gt;&lt;br /&gt;
          The assignment was successfully saved!&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
      &amp;lt;h2&amp;gt;Editing Assignment: Meta Review Fix_1&amp;lt;/h2&amp;gt;&lt;br /&gt;
      {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''TabContent.tsx :'''&lt;br /&gt;
This React component, likely part of a larger tab-based interface, dynamically displays content based on the currently selected tab (activeTab).&lt;br /&gt;
&lt;br /&gt;
If the activeTab is set to &amp;quot;Badges&amp;quot;, the component renders a simple message (&amp;quot;Badges Content&amp;quot;).&lt;br /&gt;
If the activeTab is set to &amp;quot;Etc&amp;quot;, the component displays a grid of interactive items, each representing a different administrative action. These items are associated with icons and labels, including options like &amp;quot;Add Participant&amp;quot;, &amp;quot;Create Teams&amp;quot;, &amp;quot;Assign Reviewer&amp;quot;, &amp;quot;View Submissions&amp;quot;, &amp;quot;View Scores&amp;quot;, &amp;quot;View Reports&amp;quot;, and &amp;quot;View Delayed Jobs&amp;quot;. These items are structured using the etc-grid and etc-item CSS classes for layout.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {/* {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;} */}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp;  (&lt;br /&gt;
          &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
        )}&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This code snippet shows the code for the footer action button.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleSave} className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleBack} className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
Since this is primarily a frontend-focused project, the scope of testing was limited to validating user interactions, navigation flows, and visual consistency. Most of the testing efforts were concentrated on ensuring that the interface behaved as expected and provided a seamless experience for the user.&lt;br /&gt;
&lt;br /&gt;
* '''Save Button :'''&lt;br /&gt;
The &amp;quot;Save&amp;quot; button was tested to ensure it successfully saved changes to assignments and displayed a confirmation banner. After making modifications to assignment details and clicking &amp;quot;Save,&amp;quot; a green success banner appeared at the top of the screen, lasting for 3 seconds before disappearing. To confirm the functionality, the page was reloaded, and the changes were verified as correctly saved. This ensured that the save operation performed as intended without any issues.&lt;br /&gt;
&lt;br /&gt;
* '''Back Button :'''&lt;br /&gt;
The &amp;quot;Back&amp;quot; button was tested to confirm that it redirected users to the &amp;quot;Manage Assignments&amp;quot; page as expected. After clicking the &amp;quot;Back&amp;quot; button from the &amp;quot;Etc&amp;quot; tab, the system navigated seamlessly to the appropriate page. All data remained intact, and the redirection was smooth, ensuring the user could return to the assignment management page without complications.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Demo Video ==&lt;br /&gt;
&lt;br /&gt;
For a detailed walkthrough of the UI we implemented, you can watch this [https://youtu.be/A_FB3_QycVs demo video] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/pankhuri03/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
'''These changes can be viewed in this pull request''' [https://github.com/expertiza/reimplementation-front-end/pull/78].&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160932</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160932"/>
		<updated>2024-12-10T03:50:18Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Code Snippets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
To improve the usability and visual appeal of the &amp;quot;Etc&amp;quot; tab, we integrated icons into each functional tile. These icons, primarily sourced from React Material UI, were selected to align with their respective actions:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
React Material UI provides a rich library of customizable icons that seamlessly integrate with React-based projects. We used the following command to install the required packages:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install @mui/material @emotion/styled @emotion/react @mui/icons-material.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These visually distinct icons make the tiles more descriptive and user-friendly, acting as intuitive visual cues for administrators. This enhancement not only improves navigation but also adheres to modern design standards, giving the &amp;quot;Etc&amp;quot; tab a polished and professional appearance.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 6: Adding a Title to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
In this step, we added a descriptive title, &amp;quot;Editing Assignment: Meta Review Fix_1&amp;quot;, at the top of the &amp;quot;Etc&amp;quot; tab. This title dynamically reflects the assignment being edited, providing administrators with clear context for the task they are performing.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i6.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 7: Implementing Save Confirmation Banner'''&lt;br /&gt;
&lt;br /&gt;
We added a confirmation banner that notifies users of successful changes after clicking the &amp;quot;Save&amp;quot; button. The banner displays the message &amp;quot;The assignment was successfully saved!&amp;quot; in a green box, positioned at the top of the page to provide clear feedback.&lt;br /&gt;
&lt;br /&gt;
The banner is designed to appear immediately and automatically disappear after 3 seconds, offering a non-intrusive way to confirm user actions while maintaining a clean and seamless interface. This feature enhances usability by ensuring users are informed without disrupting their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i71.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 8: Navigating to Manage Assignments Page'''&lt;br /&gt;
&lt;br /&gt;
We implemented a seamless navigation flow where clicking the Back button on the &amp;quot;Edit Assignment&amp;quot; page redirects users to the Manage Assignments page. This page features an organized layout with search fields for assignment name, course name, creation date, and updated date, along with pagination controls for browsing through assignments.&lt;br /&gt;
&lt;br /&gt;
The design ensures administrators can efficiently manage assignments while maintaining an intuitive user experience. This functionality aligns with the overall navigation framework, keeping the interface consistent and user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i8.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
  const [showBanner, setShowBanner] = useState(false);&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Save Button click handler&lt;br /&gt;
  const handleSave = () =&amp;gt; {&lt;br /&gt;
    setShowBanner(true);&lt;br /&gt;
    // Hide banner after 3 seconds&lt;br /&gt;
    setTimeout(() =&amp;gt; {&lt;br /&gt;
      setShowBanner(false);&lt;br /&gt;
    }, 3000);&lt;br /&gt;
  };&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  // Back button click handler&lt;br /&gt;
  const handleBack = () =&amp;gt; {&lt;br /&gt;
    window.location.href = '/assignments';&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
      {/* Save banner which pops up once save is clicked  */}&lt;br /&gt;
      {showBanner &amp;amp;&amp;amp; (&lt;br /&gt;
        &amp;lt;div className=&amp;quot;success-banner&amp;quot;&amp;gt;&lt;br /&gt;
          The assignment was successfully saved!&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
      &amp;lt;h2&amp;gt;Editing Assignment: Meta Review Fix_1&amp;lt;/h2&amp;gt;&lt;br /&gt;
      {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''TabContent.tsx :'''&lt;br /&gt;
This React component, likely part of a larger tab-based interface, dynamically displays content based on the currently selected tab (activeTab).&lt;br /&gt;
&lt;br /&gt;
If the activeTab is set to &amp;quot;Badges&amp;quot;, the component renders a simple message (&amp;quot;Badges Content&amp;quot;).&lt;br /&gt;
If the activeTab is set to &amp;quot;Etc&amp;quot;, the component displays a grid of interactive items, each representing a different administrative action. These items are associated with icons and labels, including options like &amp;quot;Add Participant&amp;quot;, &amp;quot;Create Teams&amp;quot;, &amp;quot;Assign Reviewer&amp;quot;, &amp;quot;View Submissions&amp;quot;, &amp;quot;View Scores&amp;quot;, &amp;quot;View Reports&amp;quot;, and &amp;quot;View Delayed Jobs&amp;quot;. These items are structured using the etc-grid and etc-item CSS classes for layout.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {/* {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;} */}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp;  (&lt;br /&gt;
          &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
        )}&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
      {/* Footer Action buttons */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleSave} className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleBack} className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
Since this is primarily a frontend-focused project, the scope of testing was limited to validating user interactions, navigation flows, and visual consistency. Most of the testing efforts were concentrated on ensuring that the interface behaved as expected and provided a seamless experience for the user.&lt;br /&gt;
&lt;br /&gt;
* '''Save Button :'''&lt;br /&gt;
The &amp;quot;Save&amp;quot; button was tested to ensure it successfully saved changes to assignments and displayed a confirmation banner. After making modifications to assignment details and clicking &amp;quot;Save,&amp;quot; a green success banner appeared at the top of the screen, lasting for 3 seconds before disappearing. To confirm the functionality, the page was reloaded, and the changes were verified as correctly saved. This ensured that the save operation performed as intended without any issues.&lt;br /&gt;
&lt;br /&gt;
* '''Back Button :'''&lt;br /&gt;
The &amp;quot;Back&amp;quot; button was tested to confirm that it redirected users to the &amp;quot;Manage Assignments&amp;quot; page as expected. After clicking the &amp;quot;Back&amp;quot; button from the &amp;quot;Etc&amp;quot; tab, the system navigated seamlessly to the appropriate page. All data remained intact, and the redirection was smooth, ensuring the user could return to the assignment management page without complications.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Demo Video ==&lt;br /&gt;
&lt;br /&gt;
For a detailed walkthrough of the UI we implemented, you can watch this [https://youtu.be/A_FB3_QycVs demo video] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/pankhuri03/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
'''These changes can be viewed in this pull request''' [https://github.com/expertiza/reimplementation-front-end/pull/78].&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160931</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160931"/>
		<updated>2024-12-10T03:49:41Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Code Snippets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
To improve the usability and visual appeal of the &amp;quot;Etc&amp;quot; tab, we integrated icons into each functional tile. These icons, primarily sourced from React Material UI, were selected to align with their respective actions:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
React Material UI provides a rich library of customizable icons that seamlessly integrate with React-based projects. We used the following command to install the required packages:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install @mui/material @emotion/styled @emotion/react @mui/icons-material.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These visually distinct icons make the tiles more descriptive and user-friendly, acting as intuitive visual cues for administrators. This enhancement not only improves navigation but also adheres to modern design standards, giving the &amp;quot;Etc&amp;quot; tab a polished and professional appearance.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 6: Adding a Title to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
In this step, we added a descriptive title, &amp;quot;Editing Assignment: Meta Review Fix_1&amp;quot;, at the top of the &amp;quot;Etc&amp;quot; tab. This title dynamically reflects the assignment being edited, providing administrators with clear context for the task they are performing.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i6.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 7: Implementing Save Confirmation Banner'''&lt;br /&gt;
&lt;br /&gt;
We added a confirmation banner that notifies users of successful changes after clicking the &amp;quot;Save&amp;quot; button. The banner displays the message &amp;quot;The assignment was successfully saved!&amp;quot; in a green box, positioned at the top of the page to provide clear feedback.&lt;br /&gt;
&lt;br /&gt;
The banner is designed to appear immediately and automatically disappear after 3 seconds, offering a non-intrusive way to confirm user actions while maintaining a clean and seamless interface. This feature enhances usability by ensuring users are informed without disrupting their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i71.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 8: Navigating to Manage Assignments Page'''&lt;br /&gt;
&lt;br /&gt;
We implemented a seamless navigation flow where clicking the Back button on the &amp;quot;Edit Assignment&amp;quot; page redirects users to the Manage Assignments page. This page features an organized layout with search fields for assignment name, course name, creation date, and updated date, along with pagination controls for browsing through assignments.&lt;br /&gt;
&lt;br /&gt;
The design ensures administrators can efficiently manage assignments while maintaining an intuitive user experience. This functionality aligns with the overall navigation framework, keeping the interface consistent and user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i8.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
  const [showBanner, setShowBanner] = useState(false);&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Save Button click handler&lt;br /&gt;
  const handleSave = () =&amp;gt; {&lt;br /&gt;
    setShowBanner(true);&lt;br /&gt;
    // Hide banner after 3 seconds&lt;br /&gt;
    setTimeout(() =&amp;gt; {&lt;br /&gt;
      setShowBanner(false);&lt;br /&gt;
    }, 3000);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Back button click handler&lt;br /&gt;
  const handleBack = () =&amp;gt; {&lt;br /&gt;
    window.location.href = '/assignments';&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
      {/* Save banner which pops up once save is clicked  */}&lt;br /&gt;
      {showBanner &amp;amp;&amp;amp; (&lt;br /&gt;
        &amp;lt;div className=&amp;quot;success-banner&amp;quot;&amp;gt;&lt;br /&gt;
          The assignment was successfully saved!&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
      &amp;lt;h2&amp;gt;Editing Assignment: Meta Review Fix_1&amp;lt;/h2&amp;gt;&lt;br /&gt;
      {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''TabContent.tsx :'''&lt;br /&gt;
This React component, likely part of a larger tab-based interface, dynamically displays content based on the currently selected tab (activeTab).&lt;br /&gt;
&lt;br /&gt;
If the activeTab is set to &amp;quot;Badges&amp;quot;, the component renders a simple message (&amp;quot;Badges Content&amp;quot;).&lt;br /&gt;
If the activeTab is set to &amp;quot;Etc&amp;quot;, the component displays a grid of interactive items, each representing a different administrative action. These items are associated with icons and labels, including options like &amp;quot;Add Participant&amp;quot;, &amp;quot;Create Teams&amp;quot;, &amp;quot;Assign Reviewer&amp;quot;, &amp;quot;View Submissions&amp;quot;, &amp;quot;View Scores&amp;quot;, &amp;quot;View Reports&amp;quot;, and &amp;quot;View Delayed Jobs&amp;quot;. These items are structured using the etc-grid and etc-item CSS classes for layout.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {/* {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;} */}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp;  (&lt;br /&gt;
          &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
        )}&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
      {/* Footer Action buttons */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleSave} className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleBack} className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
Since this is primarily a frontend-focused project, the scope of testing was limited to validating user interactions, navigation flows, and visual consistency. Most of the testing efforts were concentrated on ensuring that the interface behaved as expected and provided a seamless experience for the user.&lt;br /&gt;
&lt;br /&gt;
* '''Save Button :'''&lt;br /&gt;
The &amp;quot;Save&amp;quot; button was tested to ensure it successfully saved changes to assignments and displayed a confirmation banner. After making modifications to assignment details and clicking &amp;quot;Save,&amp;quot; a green success banner appeared at the top of the screen, lasting for 3 seconds before disappearing. To confirm the functionality, the page was reloaded, and the changes were verified as correctly saved. This ensured that the save operation performed as intended without any issues.&lt;br /&gt;
&lt;br /&gt;
* '''Back Button :'''&lt;br /&gt;
The &amp;quot;Back&amp;quot; button was tested to confirm that it redirected users to the &amp;quot;Manage Assignments&amp;quot; page as expected. After clicking the &amp;quot;Back&amp;quot; button from the &amp;quot;Etc&amp;quot; tab, the system navigated seamlessly to the appropriate page. All data remained intact, and the redirection was smooth, ensuring the user could return to the assignment management page without complications.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Demo Video ==&lt;br /&gt;
&lt;br /&gt;
For a detailed walkthrough of the UI we implemented, you can watch this [https://youtu.be/A_FB3_QycVs demo video] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/pankhuri03/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
'''These changes can be viewed in this pull request''' [https://github.com/expertiza/reimplementation-front-end/pull/78].&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160930</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160930"/>
		<updated>2024-12-10T03:48:42Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Code Snippets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
To improve the usability and visual appeal of the &amp;quot;Etc&amp;quot; tab, we integrated icons into each functional tile. These icons, primarily sourced from React Material UI, were selected to align with their respective actions:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
React Material UI provides a rich library of customizable icons that seamlessly integrate with React-based projects. We used the following command to install the required packages:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install @mui/material @emotion/styled @emotion/react @mui/icons-material.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These visually distinct icons make the tiles more descriptive and user-friendly, acting as intuitive visual cues for administrators. This enhancement not only improves navigation but also adheres to modern design standards, giving the &amp;quot;Etc&amp;quot; tab a polished and professional appearance.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 6: Adding a Title to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
In this step, we added a descriptive title, &amp;quot;Editing Assignment: Meta Review Fix_1&amp;quot;, at the top of the &amp;quot;Etc&amp;quot; tab. This title dynamically reflects the assignment being edited, providing administrators with clear context for the task they are performing.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i6.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 7: Implementing Save Confirmation Banner'''&lt;br /&gt;
&lt;br /&gt;
We added a confirmation banner that notifies users of successful changes after clicking the &amp;quot;Save&amp;quot; button. The banner displays the message &amp;quot;The assignment was successfully saved!&amp;quot; in a green box, positioned at the top of the page to provide clear feedback.&lt;br /&gt;
&lt;br /&gt;
The banner is designed to appear immediately and automatically disappear after 3 seconds, offering a non-intrusive way to confirm user actions while maintaining a clean and seamless interface. This feature enhances usability by ensuring users are informed without disrupting their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i71.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 8: Navigating to Manage Assignments Page'''&lt;br /&gt;
&lt;br /&gt;
We implemented a seamless navigation flow where clicking the Back button on the &amp;quot;Edit Assignment&amp;quot; page redirects users to the Manage Assignments page. This page features an organized layout with search fields for assignment name, course name, creation date, and updated date, along with pagination controls for browsing through assignments.&lt;br /&gt;
&lt;br /&gt;
The design ensures administrators can efficiently manage assignments while maintaining an intuitive user experience. This functionality aligns with the overall navigation framework, keeping the interface consistent and user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i8.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
  const [showBanner, setShowBanner] = useState(false);&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Save Button click handler&lt;br /&gt;
  const handleSave = () =&amp;gt; {&lt;br /&gt;
    setShowBanner(true);&lt;br /&gt;
    // Hide banner after 3 seconds&lt;br /&gt;
    setTimeout(() =&amp;gt; {&lt;br /&gt;
      setShowBanner(false);&lt;br /&gt;
    }, 3000);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Back button click handler&lt;br /&gt;
  const handleBack = () =&amp;gt; {&lt;br /&gt;
    window.location.href = '/assignments';&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
      {/* Save banner which pops up once save is clicked  */}&lt;br /&gt;
      {showBanner &amp;amp;&amp;amp; (&lt;br /&gt;
        &amp;lt;div className=&amp;quot;success-banner&amp;quot;&amp;gt;&lt;br /&gt;
          The assignment was successfully saved!&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
      &amp;lt;h2&amp;gt;Editing Assignment: Meta Review Fix_1&amp;lt;/h2&amp;gt;&lt;br /&gt;
      {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''TabContent.tsx :'''&lt;br /&gt;
This React component, likely part of a larger tab-based interface, dynamically displays content based on the currently selected tab (activeTab).&lt;br /&gt;
&lt;br /&gt;
If the activeTab is set to &amp;quot;Badges&amp;quot;, the component renders a simple message (&amp;quot;Badges Content&amp;quot;).&lt;br /&gt;
If the activeTab is set to &amp;quot;Etc&amp;quot;, the component displays a grid of interactive items, each representing a different administrative action. These items are associated with icons and labels, including options like &amp;quot;Add Participant&amp;quot;, &amp;quot;Create Teams&amp;quot;, &amp;quot;Assign Reviewer&amp;quot;, &amp;quot;View Submissions&amp;quot;, &amp;quot;View Scores&amp;quot;, &amp;quot;View Reports&amp;quot;, and &amp;quot;View Delayed Jobs&amp;quot;. These items are structured using the etc-grid and etc-item CSS classes for layout.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {/* {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;} */}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp;  (&lt;br /&gt;
          &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
        )}&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
      {/* Footer Action buttons */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleSave} className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleBack} className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
Since this is primarily a frontend-focused project, the scope of testing was limited to validating user interactions, navigation flows, and visual consistency. Most of the testing efforts were concentrated on ensuring that the interface behaved as expected and provided a seamless experience for the user.&lt;br /&gt;
&lt;br /&gt;
* '''Save Button :'''&lt;br /&gt;
The &amp;quot;Save&amp;quot; button was tested to ensure it successfully saved changes to assignments and displayed a confirmation banner. After making modifications to assignment details and clicking &amp;quot;Save,&amp;quot; a green success banner appeared at the top of the screen, lasting for 3 seconds before disappearing. To confirm the functionality, the page was reloaded, and the changes were verified as correctly saved. This ensured that the save operation performed as intended without any issues.&lt;br /&gt;
&lt;br /&gt;
* '''Back Button :'''&lt;br /&gt;
The &amp;quot;Back&amp;quot; button was tested to confirm that it redirected users to the &amp;quot;Manage Assignments&amp;quot; page as expected. After clicking the &amp;quot;Back&amp;quot; button from the &amp;quot;Etc&amp;quot; tab, the system navigated seamlessly to the appropriate page. All data remained intact, and the redirection was smooth, ensuring the user could return to the assignment management page without complications.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Demo Video ==&lt;br /&gt;
&lt;br /&gt;
For a detailed walkthrough of the UI we implemented, you can watch this [https://youtu.be/A_FB3_QycVs demo video] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/pankhuri03/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
'''These changes can be viewed in this pull request''' [https://github.com/expertiza/reimplementation-front-end/pull/78].&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160929</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160929"/>
		<updated>2024-12-10T03:47:46Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Code Snippets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
To improve the usability and visual appeal of the &amp;quot;Etc&amp;quot; tab, we integrated icons into each functional tile. These icons, primarily sourced from React Material UI, were selected to align with their respective actions:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
React Material UI provides a rich library of customizable icons that seamlessly integrate with React-based projects. We used the following command to install the required packages:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install @mui/material @emotion/styled @emotion/react @mui/icons-material.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These visually distinct icons make the tiles more descriptive and user-friendly, acting as intuitive visual cues for administrators. This enhancement not only improves navigation but also adheres to modern design standards, giving the &amp;quot;Etc&amp;quot; tab a polished and professional appearance.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 6: Adding a Title to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
In this step, we added a descriptive title, &amp;quot;Editing Assignment: Meta Review Fix_1&amp;quot;, at the top of the &amp;quot;Etc&amp;quot; tab. This title dynamically reflects the assignment being edited, providing administrators with clear context for the task they are performing.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i6.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 7: Implementing Save Confirmation Banner'''&lt;br /&gt;
&lt;br /&gt;
We added a confirmation banner that notifies users of successful changes after clicking the &amp;quot;Save&amp;quot; button. The banner displays the message &amp;quot;The assignment was successfully saved!&amp;quot; in a green box, positioned at the top of the page to provide clear feedback.&lt;br /&gt;
&lt;br /&gt;
The banner is designed to appear immediately and automatically disappear after 3 seconds, offering a non-intrusive way to confirm user actions while maintaining a clean and seamless interface. This feature enhances usability by ensuring users are informed without disrupting their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i71.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 8: Navigating to Manage Assignments Page'''&lt;br /&gt;
&lt;br /&gt;
We implemented a seamless navigation flow where clicking the Back button on the &amp;quot;Edit Assignment&amp;quot; page redirects users to the Manage Assignments page. This page features an organized layout with search fields for assignment name, course name, creation date, and updated date, along with pagination controls for browsing through assignments.&lt;br /&gt;
&lt;br /&gt;
The design ensures administrators can efficiently manage assignments while maintaining an intuitive user experience. This functionality aligns with the overall navigation framework, keeping the interface consistent and user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i8.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
  const [showBanner, setShowBanner] = useState(false);&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Save Button click handler&lt;br /&gt;
  const handleSave = () =&amp;gt; {&lt;br /&gt;
    setShowBanner(true);&lt;br /&gt;
    // Hide banner after 3 seconds&lt;br /&gt;
    setTimeout(() =&amp;gt; {&lt;br /&gt;
      setShowBanner(false);&lt;br /&gt;
    }, 3000);&lt;br /&gt;
  };&lt;br /&gt;
&amp;lt;\pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  // Back button click handler&lt;br /&gt;
  const handleBack = () =&amp;gt; {&lt;br /&gt;
    window.location.href = '/assignments';&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
      {/* Save banner which pops up once save is clicked  */}&lt;br /&gt;
      {showBanner &amp;amp;&amp;amp; (&lt;br /&gt;
        &amp;lt;div className=&amp;quot;success-banner&amp;quot;&amp;gt;&lt;br /&gt;
          The assignment was successfully saved!&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
      &amp;lt;h2&amp;gt;Editing Assignment: Meta Review Fix_1&amp;lt;/h2&amp;gt;&lt;br /&gt;
      {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''TabContent.tsx :'''&lt;br /&gt;
This React component, likely part of a larger tab-based interface, dynamically displays content based on the currently selected tab (activeTab).&lt;br /&gt;
&lt;br /&gt;
If the activeTab is set to &amp;quot;Badges&amp;quot;, the component renders a simple message (&amp;quot;Badges Content&amp;quot;).&lt;br /&gt;
If the activeTab is set to &amp;quot;Etc&amp;quot;, the component displays a grid of interactive items, each representing a different administrative action. These items are associated with icons and labels, including options like &amp;quot;Add Participant&amp;quot;, &amp;quot;Create Teams&amp;quot;, &amp;quot;Assign Reviewer&amp;quot;, &amp;quot;View Submissions&amp;quot;, &amp;quot;View Scores&amp;quot;, &amp;quot;View Reports&amp;quot;, and &amp;quot;View Delayed Jobs&amp;quot;. These items are structured using the etc-grid and etc-item CSS classes for layout.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {/* {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;} */}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp;  (&lt;br /&gt;
          &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
        )}&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
      {/* Footer Action buttons */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleSave} className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleBack} className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
Since this is primarily a frontend-focused project, the scope of testing was limited to validating user interactions, navigation flows, and visual consistency. Most of the testing efforts were concentrated on ensuring that the interface behaved as expected and provided a seamless experience for the user.&lt;br /&gt;
&lt;br /&gt;
* '''Save Button :'''&lt;br /&gt;
The &amp;quot;Save&amp;quot; button was tested to ensure it successfully saved changes to assignments and displayed a confirmation banner. After making modifications to assignment details and clicking &amp;quot;Save,&amp;quot; a green success banner appeared at the top of the screen, lasting for 3 seconds before disappearing. To confirm the functionality, the page was reloaded, and the changes were verified as correctly saved. This ensured that the save operation performed as intended without any issues.&lt;br /&gt;
&lt;br /&gt;
* '''Back Button :'''&lt;br /&gt;
The &amp;quot;Back&amp;quot; button was tested to confirm that it redirected users to the &amp;quot;Manage Assignments&amp;quot; page as expected. After clicking the &amp;quot;Back&amp;quot; button from the &amp;quot;Etc&amp;quot; tab, the system navigated seamlessly to the appropriate page. All data remained intact, and the redirection was smooth, ensuring the user could return to the assignment management page without complications.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Demo Video ==&lt;br /&gt;
&lt;br /&gt;
For a detailed walkthrough of the UI we implemented, you can watch this [https://youtu.be/A_FB3_QycVs demo video] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/pankhuri03/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
'''These changes can be viewed in this pull request''' [https://github.com/expertiza/reimplementation-front-end/pull/78].&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160928</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160928"/>
		<updated>2024-12-10T03:45:49Z</updated>

		<summary type="html">&lt;p&gt;Snukara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
To improve the usability and visual appeal of the &amp;quot;Etc&amp;quot; tab, we integrated icons into each functional tile. These icons, primarily sourced from React Material UI, were selected to align with their respective actions:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
React Material UI provides a rich library of customizable icons that seamlessly integrate with React-based projects. We used the following command to install the required packages:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install @mui/material @emotion/styled @emotion/react @mui/icons-material.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These visually distinct icons make the tiles more descriptive and user-friendly, acting as intuitive visual cues for administrators. This enhancement not only improves navigation but also adheres to modern design standards, giving the &amp;quot;Etc&amp;quot; tab a polished and professional appearance.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 6: Adding a Title to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
In this step, we added a descriptive title, &amp;quot;Editing Assignment: Meta Review Fix_1&amp;quot;, at the top of the &amp;quot;Etc&amp;quot; tab. This title dynamically reflects the assignment being edited, providing administrators with clear context for the task they are performing.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i6.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 7: Implementing Save Confirmation Banner'''&lt;br /&gt;
&lt;br /&gt;
We added a confirmation banner that notifies users of successful changes after clicking the &amp;quot;Save&amp;quot; button. The banner displays the message &amp;quot;The assignment was successfully saved!&amp;quot; in a green box, positioned at the top of the page to provide clear feedback.&lt;br /&gt;
&lt;br /&gt;
The banner is designed to appear immediately and automatically disappear after 3 seconds, offering a non-intrusive way to confirm user actions while maintaining a clean and seamless interface. This feature enhances usability by ensuring users are informed without disrupting their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i71.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 8: Navigating to Manage Assignments Page'''&lt;br /&gt;
&lt;br /&gt;
We implemented a seamless navigation flow where clicking the Back button on the &amp;quot;Edit Assignment&amp;quot; page redirects users to the Manage Assignments page. This page features an organized layout with search fields for assignment name, course name, creation date, and updated date, along with pagination controls for browsing through assignments.&lt;br /&gt;
&lt;br /&gt;
The design ensures administrators can efficiently manage assignments while maintaining an intuitive user experience. This functionality aligns with the overall navigation framework, keeping the interface consistent and user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i8.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
  const [showBanner, setShowBanner] = useState(false);&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Save Button click handler&lt;br /&gt;
  const handleSave = () =&amp;gt; {&lt;br /&gt;
    setShowBanner(true);&lt;br /&gt;
    // Hide banner after 3 seconds&lt;br /&gt;
    setTimeout(() =&amp;gt; {&lt;br /&gt;
      setShowBanner(false);&lt;br /&gt;
    }, 3000);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Back button click handler&lt;br /&gt;
  const handleBack = () =&amp;gt; {&lt;br /&gt;
    window.location.href = '/assignments';&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
      {/* Save banner which pops up once save is clicked  */}&lt;br /&gt;
      {showBanner &amp;amp;&amp;amp; (&lt;br /&gt;
        &amp;lt;div className=&amp;quot;success-banner&amp;quot;&amp;gt;&lt;br /&gt;
          The assignment was successfully saved!&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
      &amp;lt;h2&amp;gt;Editing Assignment: Meta Review Fix_1&amp;lt;/h2&amp;gt;&lt;br /&gt;
      {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''TabContent.tsx :'''&lt;br /&gt;
This React component, likely part of a larger tab-based interface, dynamically displays content based on the currently selected tab (activeTab).&lt;br /&gt;
&lt;br /&gt;
If the activeTab is set to &amp;quot;Badges&amp;quot;, the component renders a simple message (&amp;quot;Badges Content&amp;quot;).&lt;br /&gt;
If the activeTab is set to &amp;quot;Etc&amp;quot;, the component displays a grid of interactive items, each representing a different administrative action. These items are associated with icons and labels, including options like &amp;quot;Add Participant&amp;quot;, &amp;quot;Create Teams&amp;quot;, &amp;quot;Assign Reviewer&amp;quot;, &amp;quot;View Submissions&amp;quot;, &amp;quot;View Scores&amp;quot;, &amp;quot;View Reports&amp;quot;, and &amp;quot;View Delayed Jobs&amp;quot;. These items are structured using the etc-grid and etc-item CSS classes for layout.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {/* {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;} */}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp;  (&lt;br /&gt;
          &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
        )}&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
      {/* Footer Action buttons */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleSave} className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleBack} className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
Since this is primarily a frontend-focused project, the scope of testing was limited to validating user interactions, navigation flows, and visual consistency. Most of the testing efforts were concentrated on ensuring that the interface behaved as expected and provided a seamless experience for the user.&lt;br /&gt;
&lt;br /&gt;
* '''Save Button :'''&lt;br /&gt;
The &amp;quot;Save&amp;quot; button was tested to ensure it successfully saved changes to assignments and displayed a confirmation banner. After making modifications to assignment details and clicking &amp;quot;Save,&amp;quot; a green success banner appeared at the top of the screen, lasting for 3 seconds before disappearing. To confirm the functionality, the page was reloaded, and the changes were verified as correctly saved. This ensured that the save operation performed as intended without any issues.&lt;br /&gt;
&lt;br /&gt;
* '''Back Button :'''&lt;br /&gt;
The &amp;quot;Back&amp;quot; button was tested to confirm that it redirected users to the &amp;quot;Manage Assignments&amp;quot; page as expected. After clicking the &amp;quot;Back&amp;quot; button from the &amp;quot;Etc&amp;quot; tab, the system navigated seamlessly to the appropriate page. All data remained intact, and the redirection was smooth, ensuring the user could return to the assignment management page without complications.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Demo Video ==&lt;br /&gt;
&lt;br /&gt;
For a detailed walkthrough of the UI we implemented, you can watch this [https://youtu.be/A_FB3_QycVs demo video] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/pankhuri03/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
'''These changes can be viewed in this pull request''' [https://github.com/expertiza/reimplementation-front-end/pull/78].&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160926</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160926"/>
		<updated>2024-12-07T19:39:24Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
To improve the usability and visual appeal of the &amp;quot;Etc&amp;quot; tab, we integrated icons into each functional tile. These icons, primarily sourced from React Material UI, were selected to align with their respective actions:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
React Material UI provides a rich library of customizable icons that seamlessly integrate with React-based projects. We used the following command to install the required packages:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install @mui/material @emotion/styled @emotion/react @mui/icons-material.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These visually distinct icons make the tiles more descriptive and user-friendly, acting as intuitive visual cues for administrators. This enhancement not only improves navigation but also adheres to modern design standards, giving the &amp;quot;Etc&amp;quot; tab a polished and professional appearance.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 6: Adding a Title to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
In this step, we added a descriptive title, &amp;quot;Editing Assignment: Meta Review Fix_1&amp;quot;, at the top of the &amp;quot;Etc&amp;quot; tab. This title dynamically reflects the assignment being edited, providing administrators with clear context for the task they are performing.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i6.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 7: Implementing Save Confirmation Banner'''&lt;br /&gt;
&lt;br /&gt;
We added a confirmation banner that notifies users of successful changes after clicking the &amp;quot;Save&amp;quot; button. The banner displays the message &amp;quot;The assignment was successfully saved!&amp;quot; in a green box, positioned at the top of the page to provide clear feedback.&lt;br /&gt;
&lt;br /&gt;
The banner is designed to appear immediately and automatically disappear after 3 seconds, offering a non-intrusive way to confirm user actions while maintaining a clean and seamless interface. This feature enhances usability by ensuring users are informed without disrupting their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i71.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 8: Navigating to Manage Assignments Page'''&lt;br /&gt;
&lt;br /&gt;
We implemented a seamless navigation flow where clicking the Back button on the &amp;quot;Edit Assignment&amp;quot; page redirects users to the Manage Assignments page. This page features an organized layout with search fields for assignment name, course name, creation date, and updated date, along with pagination controls for browsing through assignments.&lt;br /&gt;
&lt;br /&gt;
The design ensures administrators can efficiently manage assignments while maintaining an intuitive user experience. This functionality aligns with the overall navigation framework, keeping the interface consistent and user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i8.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
  const [showBanner, setShowBanner] = useState(false);&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Save Button click handler&lt;br /&gt;
  const handleSave = () =&amp;gt; {&lt;br /&gt;
    setShowBanner(true);&lt;br /&gt;
    // Hide banner after 3 seconds&lt;br /&gt;
    setTimeout(() =&amp;gt; {&lt;br /&gt;
      setShowBanner(false);&lt;br /&gt;
    }, 3000);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Back button click handler&lt;br /&gt;
  const handleBack = () =&amp;gt; {&lt;br /&gt;
    window.location.href = '/assignments';&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
      {/* Save banner which pops up once save is clicked  */}&lt;br /&gt;
      {showBanner &amp;amp;&amp;amp; (&lt;br /&gt;
        &amp;lt;div className=&amp;quot;success-banner&amp;quot;&amp;gt;&lt;br /&gt;
          The assignment was successfully saved!&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
      &amp;lt;h2&amp;gt;Editing Assignment: Meta Review Fix_1&amp;lt;/h2&amp;gt;&lt;br /&gt;
      {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {/* {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;} */}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp;  (&lt;br /&gt;
          &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
        )}&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
      {/* Footer Action buttons */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleSave} className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleBack} className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
Since this is primarily a frontend-focused project, the scope of testing was limited to validating user interactions, navigation flows, and visual consistency. Most of the testing efforts were concentrated on ensuring that the interface behaved as expected and provided a seamless experience for the user.&lt;br /&gt;
&lt;br /&gt;
* '''Save Button :'''&lt;br /&gt;
The &amp;quot;Save&amp;quot; button was tested to ensure it successfully saved changes to assignments and displayed a confirmation banner. After making modifications to assignment details and clicking &amp;quot;Save,&amp;quot; a green success banner appeared at the top of the screen, lasting for 3 seconds before disappearing. To confirm the functionality, the page was reloaded, and the changes were verified as correctly saved. This ensured that the save operation performed as intended without any issues.&lt;br /&gt;
&lt;br /&gt;
* '''Back Button :'''&lt;br /&gt;
The &amp;quot;Back&amp;quot; button was tested to confirm that it redirected users to the &amp;quot;Manage Assignments&amp;quot; page as expected. After clicking the &amp;quot;Back&amp;quot; button from the &amp;quot;Etc&amp;quot; tab, the system navigated seamlessly to the appropriate page. All data remained intact, and the redirection was smooth, ensuring the user could return to the assignment management page without complications.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Demo Video ==&lt;br /&gt;
&lt;br /&gt;
For a detailed walkthrough of the UI we implemented, you can watch this [https://youtu.be/A_FB3_QycVs demo video] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/pankhuri03/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
'''These changes can be viewed in this pull request''' [https://github.com/expertiza/reimplementation-front-end/pull/78].&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160684</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160684"/>
		<updated>2024-12-04T04:55:02Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Reimplementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
To improve the usability and visual appeal of the &amp;quot;Etc&amp;quot; tab, we integrated icons into each functional tile. These icons, primarily sourced from React Material UI, were selected to align with their respective actions:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
React Material UI provides a rich library of customizable icons that seamlessly integrate with React-based projects. We used the following command to install the required packages:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install @mui/material @emotion/styled @emotion/react @mui/icons-material.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These visually distinct icons make the tiles more descriptive and user-friendly, acting as intuitive visual cues for administrators. This enhancement not only improves navigation but also adheres to modern design standards, giving the &amp;quot;Etc&amp;quot; tab a polished and professional appearance.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 6: Adding a Title to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
In this step, we added a descriptive title, &amp;quot;Editing Assignment: Meta Review Fix_1&amp;quot;, at the top of the &amp;quot;Etc&amp;quot; tab. This title dynamically reflects the assignment being edited, providing administrators with clear context for the task they are performing.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i6.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 7: Implementing Save Confirmation Banner'''&lt;br /&gt;
&lt;br /&gt;
We added a confirmation banner that notifies users of successful changes after clicking the &amp;quot;Save&amp;quot; button. The banner displays the message &amp;quot;The assignment was successfully saved!&amp;quot; in a green box, positioned at the top of the page to provide clear feedback.&lt;br /&gt;
&lt;br /&gt;
The banner is designed to appear immediately and automatically disappear after 3 seconds, offering a non-intrusive way to confirm user actions while maintaining a clean and seamless interface. This feature enhances usability by ensuring users are informed without disrupting their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i71.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 8: Navigating to Manage Assignments Page'''&lt;br /&gt;
&lt;br /&gt;
We implemented a seamless navigation flow where clicking the Back button on the &amp;quot;Edit Assignment&amp;quot; page redirects users to the Manage Assignments page. This page features an organized layout with search fields for assignment name, course name, creation date, and updated date, along with pagination controls for browsing through assignments.&lt;br /&gt;
&lt;br /&gt;
The design ensures administrators can efficiently manage assignments while maintaining an intuitive user experience. This functionality aligns with the overall navigation framework, keeping the interface consistent and user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i8.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
  const [showBanner, setShowBanner] = useState(false);&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Save Button click handler&lt;br /&gt;
  const handleSave = () =&amp;gt; {&lt;br /&gt;
    setShowBanner(true);&lt;br /&gt;
    // Hide banner after 3 seconds&lt;br /&gt;
    setTimeout(() =&amp;gt; {&lt;br /&gt;
      setShowBanner(false);&lt;br /&gt;
    }, 3000);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Back button click handler&lt;br /&gt;
  const handleBack = () =&amp;gt; {&lt;br /&gt;
    window.location.href = '/assignments';&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
      {/* Save banner which pops up once save is clicked  */}&lt;br /&gt;
      {showBanner &amp;amp;&amp;amp; (&lt;br /&gt;
        &amp;lt;div className=&amp;quot;success-banner&amp;quot;&amp;gt;&lt;br /&gt;
          The assignment was successfully saved!&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
      &amp;lt;h2&amp;gt;Editing Assignment: Meta Review Fix_1&amp;lt;/h2&amp;gt;&lt;br /&gt;
      {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {/* {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;} */}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp;  (&lt;br /&gt;
          &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
        )}&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
      {/* Footer Action buttons */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleSave} className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleBack} className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
Since this is primarily a frontend-focused project, the scope of testing was limited to validating user interactions, navigation flows, and visual consistency. Most of the testing efforts were concentrated on ensuring that the interface behaved as expected and provided a seamless experience for the user.&lt;br /&gt;
&lt;br /&gt;
* '''Save Button :'''&lt;br /&gt;
The &amp;quot;Save&amp;quot; button was tested to ensure it successfully saved changes to assignments and displayed a confirmation banner. After making modifications to assignment details and clicking &amp;quot;Save,&amp;quot; a green success banner appeared at the top of the screen, lasting for 3 seconds before disappearing. To confirm the functionality, the page was reloaded, and the changes were verified as correctly saved. This ensured that the save operation performed as intended without any issues.&lt;br /&gt;
&lt;br /&gt;
* '''Back Button :'''&lt;br /&gt;
The &amp;quot;Back&amp;quot; button was tested to confirm that it redirected users to the &amp;quot;Manage Assignments&amp;quot; page as expected. After clicking the &amp;quot;Back&amp;quot; button from the &amp;quot;Etc&amp;quot; tab, the system navigated seamlessly to the appropriate page. All data remained intact, and the redirection was smooth, ensuring the user could return to the assignment management page without complications. &lt;br /&gt;
&lt;br /&gt;
* '''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Demo Video ==&lt;br /&gt;
&lt;br /&gt;
For a detailed walkthrough of the UI we implemented, you can watch this [https://youtu.be/A_FB3_QycVs demo video] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/pankhuri03/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
'''These changes can be viewed in this pull request''' [https://github.com/expertiza/reimplementation-front-end/pull/78].&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160679</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160679"/>
		<updated>2024-12-04T04:51:33Z</updated>

		<summary type="html">&lt;p&gt;Snukara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
To improve the usability and visual appeal of the &amp;quot;Etc&amp;quot; tab, we integrated icons into each functional tile. These icons, primarily sourced from React Material UI, were selected to align with their respective actions:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
React Material UI offers a dynamic set of customizable icons that fit naturally into React-based projects. By incorporating these visually appealing icons, the updated tiles became more descriptive and user-friendly. The icons provide clear, intuitive visual markers, helping users navigate more efficiently. This improvement aligns with modern design standards, ensuring that even tabs like &amp;quot;Etc&amp;quot; maintain a sleek and contemporary look.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 6: Adding a Title to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
In this step, we added a descriptive title, &amp;quot;Editing Assignment: Meta Review Fix_1&amp;quot;, at the top of the &amp;quot;Etc&amp;quot; tab. This title dynamically reflects the assignment being edited, providing administrators with clear context for the task they are performing.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i6.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 7: Implementing Save Confirmation Banner'''&lt;br /&gt;
&lt;br /&gt;
We added a confirmation banner that notifies users of successful changes after clicking the &amp;quot;Save&amp;quot; button. The banner displays the message &amp;quot;The assignment was successfully saved!&amp;quot; in a green box, positioned at the top of the page to provide clear feedback.&lt;br /&gt;
&lt;br /&gt;
The banner is designed to appear immediately and automatically disappear after 3 seconds, offering a non-intrusive way to confirm user actions while maintaining a clean and seamless interface. This feature enhances usability by ensuring users are informed without disrupting their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i71.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 8: Navigating to Manage Assignments Page'''&lt;br /&gt;
&lt;br /&gt;
We implemented a seamless navigation flow where clicking the Back button on the &amp;quot;Edit Assignment&amp;quot; page redirects users to the Manage Assignments page. This page features an organized layout with search fields for assignment name, course name, creation date, and updated date, along with pagination controls for browsing through assignments.&lt;br /&gt;
&lt;br /&gt;
The design ensures administrators can efficiently manage assignments while maintaining an intuitive user experience. This functionality aligns with the overall navigation framework, keeping the interface consistent and user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i8.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
  const [showBanner, setShowBanner] = useState(false);&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Save Button click handler&lt;br /&gt;
  const handleSave = () =&amp;gt; {&lt;br /&gt;
    setShowBanner(true);&lt;br /&gt;
    // Hide banner after 3 seconds&lt;br /&gt;
    setTimeout(() =&amp;gt; {&lt;br /&gt;
      setShowBanner(false);&lt;br /&gt;
    }, 3000);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Back button click handler&lt;br /&gt;
  const handleBack = () =&amp;gt; {&lt;br /&gt;
    window.location.href = '/assignments';&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
      {/* Save banner which pops up once save is clicked  */}&lt;br /&gt;
      {showBanner &amp;amp;&amp;amp; (&lt;br /&gt;
        &amp;lt;div className=&amp;quot;success-banner&amp;quot;&amp;gt;&lt;br /&gt;
          The assignment was successfully saved!&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
      &amp;lt;h2&amp;gt;Editing Assignment: Meta Review Fix_1&amp;lt;/h2&amp;gt;&lt;br /&gt;
      {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {/* {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;} */}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp;  (&lt;br /&gt;
          &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
        )}&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
      {/* Footer Action buttons */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleSave} className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleBack} className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
Since this is primarily a frontend-focused project, the scope of testing was limited to validating user interactions, navigation flows, and visual consistency. Most of the testing efforts were concentrated on ensuring that the interface behaved as expected and provided a seamless experience for the user.&lt;br /&gt;
&lt;br /&gt;
* '''Save Button :'''&lt;br /&gt;
The &amp;quot;Save&amp;quot; button was tested to ensure it successfully saved changes to assignments and displayed a confirmation banner. After making modifications to assignment details and clicking &amp;quot;Save,&amp;quot; a green success banner appeared at the top of the screen, lasting for 3 seconds before disappearing. To confirm the functionality, the page was reloaded, and the changes were verified as correctly saved. This ensured that the save operation performed as intended without any issues.&lt;br /&gt;
&lt;br /&gt;
* '''Back Button :'''&lt;br /&gt;
The &amp;quot;Back&amp;quot; button was tested to confirm that it redirected users to the &amp;quot;Manage Assignments&amp;quot; page as expected. After clicking the &amp;quot;Back&amp;quot; button from the &amp;quot;Etc&amp;quot; tab, the system navigated seamlessly to the appropriate page. All data remained intact, and the redirection was smooth, ensuring the user could return to the assignment management page without complications. &lt;br /&gt;
&lt;br /&gt;
* '''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Demo Video ==&lt;br /&gt;
&lt;br /&gt;
For a detailed walkthrough of the UI we implemented, you can watch this [https://youtu.be/A_FB3_QycVs demo video] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/pankhuri03/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
'''These changes can be viewed in this pull request''' [https://github.com/expertiza/reimplementation-front-end/pull/78].&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160497</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160497"/>
		<updated>2024-12-04T03:00:16Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Manual Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
To improve the usability and visual appeal of the &amp;quot;Etc&amp;quot; tab, we integrated icons into each functional tile. These icons, primarily sourced from React Material UI, were selected to align with their respective actions:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
React Material UI offers a dynamic set of customizable icons that fit naturally into React-based projects. By incorporating these visually appealing icons, the updated tiles became more descriptive and user-friendly. The icons provide clear, intuitive visual markers, helping users navigate more efficiently. This improvement aligns with modern design standards, ensuring that even tabs like &amp;quot;Etc&amp;quot; maintain a sleek and contemporary look.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 6: Adding a Title to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
In this step, we added a descriptive title, &amp;quot;Editing Assignment: Meta Review Fix_1&amp;quot;, at the top of the &amp;quot;Etc&amp;quot; tab. This title dynamically reflects the assignment being edited, providing administrators with clear context for the task they are performing.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i6.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 7: Implementing Save Confirmation Banner'''&lt;br /&gt;
&lt;br /&gt;
We added a confirmation banner that notifies users of successful changes after clicking the &amp;quot;Save&amp;quot; button. The banner displays the message &amp;quot;The assignment was successfully saved!&amp;quot; in a green box, positioned at the top of the page to provide clear feedback.&lt;br /&gt;
&lt;br /&gt;
The banner is designed to appear immediately and automatically disappear after 3 seconds, offering a non-intrusive way to confirm user actions while maintaining a clean and seamless interface. This feature enhances usability by ensuring users are informed without disrupting their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i71.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 8: Navigating to Manage Assignments Page'''&lt;br /&gt;
&lt;br /&gt;
We implemented a seamless navigation flow where clicking the Back button on the &amp;quot;Edit Assignment&amp;quot; page redirects users to the Manage Assignments page. This page features an organized layout with search fields for assignment name, course name, creation date, and updated date, along with pagination controls for browsing through assignments.&lt;br /&gt;
&lt;br /&gt;
The design ensures administrators can efficiently manage assignments while maintaining an intuitive user experience. This functionality aligns with the overall navigation framework, keeping the interface consistent and user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i8.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
  const [showBanner, setShowBanner] = useState(false);&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Save Button click handler&lt;br /&gt;
  const handleSave = () =&amp;gt; {&lt;br /&gt;
    setShowBanner(true);&lt;br /&gt;
    // Hide banner after 3 seconds&lt;br /&gt;
    setTimeout(() =&amp;gt; {&lt;br /&gt;
      setShowBanner(false);&lt;br /&gt;
    }, 3000);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Back button click handler&lt;br /&gt;
  const handleBack = () =&amp;gt; {&lt;br /&gt;
    window.location.href = '/assignments';&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
      {/* Save banner which pops up once save is clicked  */}&lt;br /&gt;
      {showBanner &amp;amp;&amp;amp; (&lt;br /&gt;
        &amp;lt;div className=&amp;quot;success-banner&amp;quot;&amp;gt;&lt;br /&gt;
          The assignment was successfully saved!&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
      &amp;lt;h2&amp;gt;Editing Assignment: Meta Review Fix_1&amp;lt;/h2&amp;gt;&lt;br /&gt;
      {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {/* {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;} */}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp;  (&lt;br /&gt;
          &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
        )}&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
      {/* Footer Action buttons */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleSave} className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleBack} className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
Since this is primarily a frontend-focused project, the scope of testing was limited to validating user interactions, navigation flows, and visual consistency. Most of the testing efforts were concentrated on ensuring that the interface behaved as expected and provided a seamless experience for the user.&lt;br /&gt;
&lt;br /&gt;
* '''Save Button :'''&lt;br /&gt;
The &amp;quot;Save&amp;quot; button was tested to ensure it successfully saved changes to assignments and displayed a confirmation banner. After making modifications to assignment details and clicking &amp;quot;Save,&amp;quot; a green success banner appeared at the top of the screen, lasting for 3 seconds before disappearing. To confirm the functionality, the page was reloaded, and the changes were verified as correctly saved. This ensured that the save operation performed as intended without any issues.&lt;br /&gt;
&lt;br /&gt;
* '''Back Button :'''&lt;br /&gt;
The &amp;quot;Back&amp;quot; button was tested to confirm that it redirected users to the &amp;quot;Manage Assignments&amp;quot; page as expected. After clicking the &amp;quot;Back&amp;quot; button from the &amp;quot;Etc&amp;quot; tab, the system navigated seamlessly to the appropriate page. All data remained intact, and the redirection was smooth, ensuring the user could return to the assignment management page without complications. &lt;br /&gt;
&lt;br /&gt;
* '''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/pankhuri03/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
'''These changes can be viewed in this pull request''' [https://github.com/expertiza/reimplementation-front-end/pull/78].&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160496</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160496"/>
		<updated>2024-12-04T02:59:51Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
To improve the usability and visual appeal of the &amp;quot;Etc&amp;quot; tab, we integrated icons into each functional tile. These icons, primarily sourced from React Material UI, were selected to align with their respective actions:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
React Material UI offers a dynamic set of customizable icons that fit naturally into React-based projects. By incorporating these visually appealing icons, the updated tiles became more descriptive and user-friendly. The icons provide clear, intuitive visual markers, helping users navigate more efficiently. This improvement aligns with modern design standards, ensuring that even tabs like &amp;quot;Etc&amp;quot; maintain a sleek and contemporary look.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 6: Adding a Title to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
In this step, we added a descriptive title, &amp;quot;Editing Assignment: Meta Review Fix_1&amp;quot;, at the top of the &amp;quot;Etc&amp;quot; tab. This title dynamically reflects the assignment being edited, providing administrators with clear context for the task they are performing.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i6.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 7: Implementing Save Confirmation Banner'''&lt;br /&gt;
&lt;br /&gt;
We added a confirmation banner that notifies users of successful changes after clicking the &amp;quot;Save&amp;quot; button. The banner displays the message &amp;quot;The assignment was successfully saved!&amp;quot; in a green box, positioned at the top of the page to provide clear feedback.&lt;br /&gt;
&lt;br /&gt;
The banner is designed to appear immediately and automatically disappear after 3 seconds, offering a non-intrusive way to confirm user actions while maintaining a clean and seamless interface. This feature enhances usability by ensuring users are informed without disrupting their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i71.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 8: Navigating to Manage Assignments Page'''&lt;br /&gt;
&lt;br /&gt;
We implemented a seamless navigation flow where clicking the Back button on the &amp;quot;Edit Assignment&amp;quot; page redirects users to the Manage Assignments page. This page features an organized layout with search fields for assignment name, course name, creation date, and updated date, along with pagination controls for browsing through assignments.&lt;br /&gt;
&lt;br /&gt;
The design ensures administrators can efficiently manage assignments while maintaining an intuitive user experience. This functionality aligns with the overall navigation framework, keeping the interface consistent and user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i8.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
  const [showBanner, setShowBanner] = useState(false);&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Save Button click handler&lt;br /&gt;
  const handleSave = () =&amp;gt; {&lt;br /&gt;
    setShowBanner(true);&lt;br /&gt;
    // Hide banner after 3 seconds&lt;br /&gt;
    setTimeout(() =&amp;gt; {&lt;br /&gt;
      setShowBanner(false);&lt;br /&gt;
    }, 3000);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Back button click handler&lt;br /&gt;
  const handleBack = () =&amp;gt; {&lt;br /&gt;
    window.location.href = '/assignments';&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
      {/* Save banner which pops up once save is clicked  */}&lt;br /&gt;
      {showBanner &amp;amp;&amp;amp; (&lt;br /&gt;
        &amp;lt;div className=&amp;quot;success-banner&amp;quot;&amp;gt;&lt;br /&gt;
          The assignment was successfully saved!&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
      &amp;lt;h2&amp;gt;Editing Assignment: Meta Review Fix_1&amp;lt;/h2&amp;gt;&lt;br /&gt;
      {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {/* {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;} */}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp;  (&lt;br /&gt;
          &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
        )}&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
      {/* Footer Action buttons */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleSave} className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleBack} className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
&lt;br /&gt;
Since this is primarily a frontend-focused project, the scope of testing was limited to validating user interactions, navigation flows, and visual consistency. Most of the testing efforts were concentrated on ensuring that the interface behaved as expected and provided a seamless experience for the user.&lt;br /&gt;
&lt;br /&gt;
# '''Save Button :'''&lt;br /&gt;
The &amp;quot;Save&amp;quot; button was tested to ensure it successfully saved changes to assignments and displayed a confirmation banner. After making modifications to assignment details and clicking &amp;quot;Save,&amp;quot; a green success banner appeared at the top of the screen, lasting for 3 seconds before disappearing. To confirm the functionality, the page was reloaded, and the changes were verified as correctly saved. This ensured that the save operation performed as intended without any issues.&lt;br /&gt;
&lt;br /&gt;
# '''Back Button :'''&lt;br /&gt;
The &amp;quot;Back&amp;quot; button was tested to confirm that it redirected users to the &amp;quot;Manage Assignments&amp;quot; page as expected. After clicking the &amp;quot;Back&amp;quot; button from the &amp;quot;Etc&amp;quot; tab, the system navigated seamlessly to the appropriate page. All data remained intact, and the redirection was smooth, ensuring the user could return to the assignment management page without complications. &lt;br /&gt;
&lt;br /&gt;
# '''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/pankhuri03/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
'''These changes can be viewed in this pull request''' [https://github.com/expertiza/reimplementation-front-end/pull/78].&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160443</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160443"/>
		<updated>2024-12-04T02:01:03Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Code Snippets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
To improve the usability and visual appeal of the &amp;quot;Etc&amp;quot; tab, we integrated icons into each functional tile. These icons, primarily sourced from React Material UI, were selected to align with their respective actions:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
React Material UI offers a dynamic set of customizable icons that fit naturally into React-based projects. By incorporating these visually appealing icons, the updated tiles became more descriptive and user-friendly. The icons provide clear, intuitive visual markers, helping users navigate more efficiently. This improvement aligns with modern design standards, ensuring that even tabs like &amp;quot;Etc&amp;quot; maintain a sleek and contemporary look.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 6: Adding a Title to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
In this step, we added a descriptive title, &amp;quot;Editing Assignment: Meta Review Fix_1&amp;quot;, at the top of the &amp;quot;Etc&amp;quot; tab. This title dynamically reflects the assignment being edited, providing administrators with clear context for the task they are performing.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i6.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 7: Implementing Save Confirmation Banner'''&lt;br /&gt;
&lt;br /&gt;
We added a confirmation banner that notifies users of successful changes after clicking the &amp;quot;Save&amp;quot; button. The banner displays the message &amp;quot;The assignment was successfully saved!&amp;quot; in a green box, positioned at the top of the page to provide clear feedback.&lt;br /&gt;
&lt;br /&gt;
The banner is designed to appear immediately and automatically disappear after 3 seconds, offering a non-intrusive way to confirm user actions while maintaining a clean and seamless interface. This feature enhances usability by ensuring users are informed without disrupting their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i71.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 8: Navigating to Manage Assignments Page'''&lt;br /&gt;
&lt;br /&gt;
We implemented a seamless navigation flow where clicking the Back button on the &amp;quot;Edit Assignment&amp;quot; page redirects users to the Manage Assignments page. This page features an organized layout with search fields for assignment name, course name, creation date, and updated date, along with pagination controls for browsing through assignments.&lt;br /&gt;
&lt;br /&gt;
The design ensures administrators can efficiently manage assignments while maintaining an intuitive user experience. This functionality aligns with the overall navigation framework, keeping the interface consistent and user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i8.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
  const [showBanner, setShowBanner] = useState(false);&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Save Button click handler&lt;br /&gt;
  const handleSave = () =&amp;gt; {&lt;br /&gt;
    setShowBanner(true);&lt;br /&gt;
    // Hide banner after 3 seconds&lt;br /&gt;
    setTimeout(() =&amp;gt; {&lt;br /&gt;
      setShowBanner(false);&lt;br /&gt;
    }, 3000);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Back button click handler&lt;br /&gt;
  const handleBack = () =&amp;gt; {&lt;br /&gt;
    window.location.href = '/assignments';&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
      {/* Save banner which pops up once save is clicked  */}&lt;br /&gt;
      {showBanner &amp;amp;&amp;amp; (&lt;br /&gt;
        &amp;lt;div className=&amp;quot;success-banner&amp;quot;&amp;gt;&lt;br /&gt;
          The assignment was successfully saved!&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
      &amp;lt;h2&amp;gt;Editing Assignment: Meta Review Fix_1&amp;lt;/h2&amp;gt;&lt;br /&gt;
      {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {/* {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;} */}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp;  (&lt;br /&gt;
          &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
        )}&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
      {/* Footer Action buttons */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleSave} className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleBack} className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Unit Testing :'''&lt;br /&gt;
&lt;br /&gt;
To ensure the &amp;quot;Etc&amp;quot; tab functions as intended, we conducted thorough testing at multiple levels. First, individual elements like buttons, icons, and text fields were tested to verify that they behaved correctly. For instance, we checked if buttons responded to clicks or if icons displayed without issues. This approach helped us confirm the reliability of each component before assembling the full interface.&lt;br /&gt;
&lt;br /&gt;
* '''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/ntummal3/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
'''These changes can be viewed in this pull request''' [https://github.com/expertiza/reimplementation-front-end/pull/78].&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160441</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160441"/>
		<updated>2024-12-04T01:59:57Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Reimplementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
To improve the usability and visual appeal of the &amp;quot;Etc&amp;quot; tab, we integrated icons into each functional tile. These icons, primarily sourced from React Material UI, were selected to align with their respective actions:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
React Material UI offers a dynamic set of customizable icons that fit naturally into React-based projects. By incorporating these visually appealing icons, the updated tiles became more descriptive and user-friendly. The icons provide clear, intuitive visual markers, helping users navigate more efficiently. This improvement aligns with modern design standards, ensuring that even tabs like &amp;quot;Etc&amp;quot; maintain a sleek and contemporary look.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 6: Adding a Title to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
In this step, we added a descriptive title, &amp;quot;Editing Assignment: Meta Review Fix_1&amp;quot;, at the top of the &amp;quot;Etc&amp;quot; tab. This title dynamically reflects the assignment being edited, providing administrators with clear context for the task they are performing.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i6.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 7: Implementing Save Confirmation Banner'''&lt;br /&gt;
&lt;br /&gt;
We added a confirmation banner that notifies users of successful changes after clicking the &amp;quot;Save&amp;quot; button. The banner displays the message &amp;quot;The assignment was successfully saved!&amp;quot; in a green box, positioned at the top of the page to provide clear feedback.&lt;br /&gt;
&lt;br /&gt;
The banner is designed to appear immediately and automatically disappear after 3 seconds, offering a non-intrusive way to confirm user actions while maintaining a clean and seamless interface. This feature enhances usability by ensuring users are informed without disrupting their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i71.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 8: Navigating to Manage Assignments Page'''&lt;br /&gt;
&lt;br /&gt;
We implemented a seamless navigation flow where clicking the Back button on the &amp;quot;Edit Assignment&amp;quot; page redirects users to the Manage Assignments page. This page features an organized layout with search fields for assignment name, course name, creation date, and updated date, along with pagination controls for browsing through assignments.&lt;br /&gt;
&lt;br /&gt;
The design ensures administrators can efficiently manage assignments while maintaining an intuitive user experience. This functionality aligns with the overall navigation framework, keeping the interface consistent and user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i8.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import React, { useState } from 'react';&lt;br /&gt;
import './Etc.css';&lt;br /&gt;
import scoreIcon from '../../assets/scores.png';&lt;br /&gt;
import ParticipantIcon from '@mui/icons-material/Person';&lt;br /&gt;
import CreateTeamIcon from '@mui/icons-material/Groups3';&lt;br /&gt;
import ReviewerIcon from '@mui/icons-material/AssignmentInd';&lt;br /&gt;
import SubmissionIcon from '@mui/icons-material/Assignment';&lt;br /&gt;
import ReportIcon from '@mui/icons-material/Summarize';&lt;br /&gt;
import DelayedIcon from '@mui/icons-material/AccessTime';&lt;br /&gt;
&lt;br /&gt;
const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
  const [showBanner, setShowBanner] = useState(false);&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Save Button click handler&lt;br /&gt;
  const handleSave = () =&amp;gt; {&lt;br /&gt;
    setShowBanner(true);&lt;br /&gt;
    // Hide banner after 3 seconds&lt;br /&gt;
    setTimeout(() =&amp;gt; {&lt;br /&gt;
      setShowBanner(false);&lt;br /&gt;
    }, 3000);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Back button click handler&lt;br /&gt;
  const handleBack = () =&amp;gt; {&lt;br /&gt;
    window.location.href = '/assignments';&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
      {/* Save banner which pops up once save is clicked  */}&lt;br /&gt;
      {showBanner &amp;amp;&amp;amp; (&lt;br /&gt;
        &amp;lt;div className=&amp;quot;success-banner&amp;quot;&amp;gt;&lt;br /&gt;
          The assignment was successfully saved!&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
      &amp;lt;h2&amp;gt;Editing Assignment: Meta Review Fix_1&amp;lt;/h2&amp;gt;&lt;br /&gt;
      {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {/* {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;} */}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp;  (&lt;br /&gt;
          &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
        )}&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
      {/* Footer Action buttons */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleSave} className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleBack} className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Unit Testing :'''&lt;br /&gt;
&lt;br /&gt;
To ensure the &amp;quot;Etc&amp;quot; tab functions as intended, we conducted thorough testing at multiple levels. First, individual elements like buttons, icons, and text fields were tested to verify that they behaved correctly. For instance, we checked if buttons responded to clicks or if icons displayed without issues. This approach helped us confirm the reliability of each component before assembling the full interface.&lt;br /&gt;
&lt;br /&gt;
* '''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/ntummal3/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
'''These changes can be viewed in this pull request''' [https://github.com/expertiza/reimplementation-front-end/pull/78].&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160435</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160435"/>
		<updated>2024-12-04T01:53:55Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Reimplementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
We enhanced the tiles in the &amp;quot;Etc&amp;quot; tab by incorporating icons that visually represent each action. Here’s how we aligned the icons with their respective functionalities:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
By adding these icons, we improved both the visual appeal and usability of the interface. The icons provide quick visual cues, making it easier for administrators to recognize and access the tools they need. This update not only makes the &amp;quot;Etc&amp;quot; tab more intuitive but also ensures a polished and professional look.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 6: Adding a Title to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
In this step, we added a descriptive title, &amp;quot;Editing Assignment: Meta Review Fix_1&amp;quot;, at the top of the &amp;quot;Etc&amp;quot; tab. This title dynamically reflects the assignment being edited, providing administrators with clear context for the task they are performing.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i6.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 7: Implementing Save Confirmation Banner'''&lt;br /&gt;
&lt;br /&gt;
We added a confirmation banner that notifies users of successful changes after clicking the &amp;quot;Save&amp;quot; button. The banner displays the message &amp;quot;The assignment was successfully saved!&amp;quot; in a green box, positioned at the top of the page to provide clear feedback.&lt;br /&gt;
&lt;br /&gt;
The banner is designed to appear immediately and automatically disappear after 3 seconds, offering a non-intrusive way to confirm user actions while maintaining a clean and seamless interface. This feature enhances usability by ensuring users are informed without disrupting their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i71.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 8: Navigating to Manage Assignments Page'''&lt;br /&gt;
&lt;br /&gt;
We implemented a seamless navigation flow where clicking the Back button on the &amp;quot;Edit Assignment&amp;quot; page redirects users to the Manage Assignments page. This page features an organized layout with search fields for assignment name, course name, creation date, and updated date, along with pagination controls for browsing through assignments.&lt;br /&gt;
&lt;br /&gt;
The design ensures administrators can efficiently manage assignments while maintaining an intuitive user experience. This functionality aligns with the overall navigation framework, keeping the interface consistent and user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i8.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import React, { useState } from 'react';&lt;br /&gt;
import './Etc.css';&lt;br /&gt;
import scoreIcon from '../../assets/scores.png';&lt;br /&gt;
import ParticipantIcon from '@mui/icons-material/Person';&lt;br /&gt;
import CreateTeamIcon from '@mui/icons-material/Groups3';&lt;br /&gt;
import ReviewerIcon from '@mui/icons-material/AssignmentInd';&lt;br /&gt;
import SubmissionIcon from '@mui/icons-material/Assignment';&lt;br /&gt;
import ReportIcon from '@mui/icons-material/Summarize';&lt;br /&gt;
import DelayedIcon from '@mui/icons-material/AccessTime';&lt;br /&gt;
&lt;br /&gt;
const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
  const [showBanner, setShowBanner] = useState(false);&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Save Button click handler&lt;br /&gt;
  const handleSave = () =&amp;gt; {&lt;br /&gt;
    setShowBanner(true);&lt;br /&gt;
    // Hide banner after 3 seconds&lt;br /&gt;
    setTimeout(() =&amp;gt; {&lt;br /&gt;
      setShowBanner(false);&lt;br /&gt;
    }, 3000);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Back button click handler&lt;br /&gt;
  const handleBack = () =&amp;gt; {&lt;br /&gt;
    window.location.href = '/assignments';&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
      {/* Save banner which pops up once save is clicked  */}&lt;br /&gt;
      {showBanner &amp;amp;&amp;amp; (&lt;br /&gt;
        &amp;lt;div className=&amp;quot;success-banner&amp;quot;&amp;gt;&lt;br /&gt;
          The assignment was successfully saved!&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
      &amp;lt;h2&amp;gt;Editing Assignment: Meta Review Fix_1&amp;lt;/h2&amp;gt;&lt;br /&gt;
      {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {/* {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;} */}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp;  (&lt;br /&gt;
          &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
        )}&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
      {/* Footer Action buttons */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleSave} className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleBack} className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Unit Testing :'''&lt;br /&gt;
&lt;br /&gt;
To ensure the &amp;quot;Etc&amp;quot; tab functions as intended, we conducted thorough testing at multiple levels. First, individual elements like buttons, icons, and text fields were tested to verify that they behaved correctly. For instance, we checked if buttons responded to clicks or if icons displayed without issues. This approach helped us confirm the reliability of each component before assembling the full interface.&lt;br /&gt;
&lt;br /&gt;
* '''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/ntummal3/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
'''These changes can be viewed in this pull request''' [https://github.com/expertiza/reimplementation-front-end/pull/78].&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160426</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160426"/>
		<updated>2024-12-04T01:47:27Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Code Snippets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
We enhanced the tiles in the &amp;quot;Etc&amp;quot; tab by incorporating icons that visually represent each action. Here’s how we aligned the icons with their respective functionalities:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
By adding these icons, we improved both the visual appeal and usability of the interface. The icons provide quick visual cues, making it easier for administrators to recognize and access the tools they need. This update not only makes the &amp;quot;Etc&amp;quot; tab more intuitive but also ensures a polished and professional look.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 6: Adding a Title to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
In this step, we added a descriptive title, &amp;quot;Editing Assignment: Meta Review Fix_1&amp;quot;, at the top of the &amp;quot;Etc&amp;quot; tab. This title dynamically reflects the assignment being edited, providing administrators with clear context for the task they are performing.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i6.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 7: Implementing Save Confirmation Banner'''&lt;br /&gt;
&lt;br /&gt;
We added a confirmation banner that notifies users of successful changes after clicking the &amp;quot;Save&amp;quot; button. The banner displays the message &amp;quot;The assignment was successfully saved!&amp;quot; in a green box, positioned at the top of the page to provide clear feedback.&lt;br /&gt;
&lt;br /&gt;
The banner is designed to appear immediately and automatically disappear after 3 seconds, offering a non-intrusive way to confirm user actions while maintaining a clean and seamless interface. This feature enhances usability by ensuring users are informed without disrupting their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i7.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 8: Navigating to Manage Assignments Page'''&lt;br /&gt;
&lt;br /&gt;
We implemented a seamless navigation flow where clicking the Back button on the &amp;quot;Edit Assignment&amp;quot; page redirects users to the Manage Assignments page. This page features an organized layout with search fields for assignment name, course name, creation date, and updated date, along with pagination controls for browsing through assignments.&lt;br /&gt;
&lt;br /&gt;
The design ensures administrators can efficiently manage assignments while maintaining an intuitive user experience. This functionality aligns with the overall navigation framework, keeping the interface consistent and user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i8.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import React, { useState } from 'react';&lt;br /&gt;
import './Etc.css';&lt;br /&gt;
import scoreIcon from '../../assets/scores.png';&lt;br /&gt;
import ParticipantIcon from '@mui/icons-material/Person';&lt;br /&gt;
import CreateTeamIcon from '@mui/icons-material/Groups3';&lt;br /&gt;
import ReviewerIcon from '@mui/icons-material/AssignmentInd';&lt;br /&gt;
import SubmissionIcon from '@mui/icons-material/Assignment';&lt;br /&gt;
import ReportIcon from '@mui/icons-material/Summarize';&lt;br /&gt;
import DelayedIcon from '@mui/icons-material/AccessTime';&lt;br /&gt;
&lt;br /&gt;
const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
  const [showBanner, setShowBanner] = useState(false);&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Save Button click handler&lt;br /&gt;
  const handleSave = () =&amp;gt; {&lt;br /&gt;
    setShowBanner(true);&lt;br /&gt;
    // Hide banner after 3 seconds&lt;br /&gt;
    setTimeout(() =&amp;gt; {&lt;br /&gt;
      setShowBanner(false);&lt;br /&gt;
    }, 3000);&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  // Back button click handler&lt;br /&gt;
  const handleBack = () =&amp;gt; {&lt;br /&gt;
    window.location.href = '/assignments';&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
      {/* Save banner which pops up once save is clicked  */}&lt;br /&gt;
      {showBanner &amp;amp;&amp;amp; (&lt;br /&gt;
        &amp;lt;div className=&amp;quot;success-banner&amp;quot;&amp;gt;&lt;br /&gt;
          The assignment was successfully saved!&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
      &amp;lt;h2&amp;gt;Editing Assignment: Meta Review Fix_1&amp;lt;/h2&amp;gt;&lt;br /&gt;
      {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          // onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {/* {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;} */}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp;  (&lt;br /&gt;
          &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
              &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
                &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
        )}&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
      {/* Footer Action buttons */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleSave} className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button onClick={handleBack} className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Unit Testing :'''&lt;br /&gt;
&lt;br /&gt;
To ensure the &amp;quot;Etc&amp;quot; tab functions as intended, we conducted thorough testing at multiple levels. First, individual elements like buttons, icons, and text fields were tested to verify that they behaved correctly. For instance, we checked if buttons responded to clicks or if icons displayed without issues. This approach helped us confirm the reliability of each component before assembling the full interface.&lt;br /&gt;
&lt;br /&gt;
* '''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/ntummal3/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
'''These changes can be viewed in this pull request''' [https://github.com/expertiza/reimplementation-front-end/pull/78].&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160420</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160420"/>
		<updated>2024-12-04T01:44:57Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Github repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
We enhanced the tiles in the &amp;quot;Etc&amp;quot; tab by incorporating icons that visually represent each action. Here’s how we aligned the icons with their respective functionalities:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
By adding these icons, we improved both the visual appeal and usability of the interface. The icons provide quick visual cues, making it easier for administrators to recognize and access the tools they need. This update not only makes the &amp;quot;Etc&amp;quot; tab more intuitive but also ensures a polished and professional look.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 6: Adding a Title to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
In this step, we added a descriptive title, &amp;quot;Editing Assignment: Meta Review Fix_1&amp;quot;, at the top of the &amp;quot;Etc&amp;quot; tab. This title dynamically reflects the assignment being edited, providing administrators with clear context for the task they are performing.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i6.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 7: Implementing Save Confirmation Banner'''&lt;br /&gt;
&lt;br /&gt;
We added a confirmation banner that notifies users of successful changes after clicking the &amp;quot;Save&amp;quot; button. The banner displays the message &amp;quot;The assignment was successfully saved!&amp;quot; in a green box, positioned at the top of the page to provide clear feedback.&lt;br /&gt;
&lt;br /&gt;
The banner is designed to appear immediately and automatically disappear after 3 seconds, offering a non-intrusive way to confirm user actions while maintaining a clean and seamless interface. This feature enhances usability by ensuring users are informed without disrupting their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i7.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 8: Navigating to Manage Assignments Page'''&lt;br /&gt;
&lt;br /&gt;
We implemented a seamless navigation flow where clicking the Back button on the &amp;quot;Edit Assignment&amp;quot; page redirects users to the Manage Assignments page. This page features an organized layout with search fields for assignment name, course name, creation date, and updated date, along with pagination controls for browsing through assignments.&lt;br /&gt;
&lt;br /&gt;
The design ensures administrators can efficiently manage assignments while maintaining an intuitive user experience. This functionality aligns with the overall navigation framework, keeping the interface consistent and user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i8.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  // const [currentView, setCurrentView] = useState(&amp;quot;general&amp;quot;);&lt;br /&gt;
  // State to track the active tab&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
        {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* &amp;lt;Tabs&lt;br /&gt;
                id=&amp;quot;assignment-tab&amp;quot;&lt;br /&gt;
                activeKey={currentView}&lt;br /&gt;
                // onSelect={(k) =&amp;gt; setCurrentView(k)}&lt;br /&gt;
                className=&amp;quot;mb-3&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Rubrics&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Review Strategy&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Due Dates&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Badges&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Etc&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;EtcView /&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
            &amp;lt;/Tabs&amp;gt;  */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp; (&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          {/* &amp;lt;ScoreIcon/&amp;gt; */}&lt;br /&gt;
          &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
);&lt;br /&gt;
};&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Unit Testing :'''&lt;br /&gt;
&lt;br /&gt;
To ensure the &amp;quot;Etc&amp;quot; tab functions as intended, we conducted thorough testing at multiple levels. First, individual elements like buttons, icons, and text fields were tested to verify that they behaved correctly. For instance, we checked if buttons responded to clicks or if icons displayed without issues. This approach helped us confirm the reliability of each component before assembling the full interface.&lt;br /&gt;
&lt;br /&gt;
* '''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/ntummal3/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
'''These changes can be viewed in this pull request''' [https://github.com/expertiza/reimplementation-front-end/pull/78].&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160410</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160410"/>
		<updated>2024-12-04T01:39:09Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
We enhanced the tiles in the &amp;quot;Etc&amp;quot; tab by incorporating icons that visually represent each action. Here’s how we aligned the icons with their respective functionalities:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
By adding these icons, we improved both the visual appeal and usability of the interface. The icons provide quick visual cues, making it easier for administrators to recognize and access the tools they need. This update not only makes the &amp;quot;Etc&amp;quot; tab more intuitive but also ensures a polished and professional look.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 6: Adding a Title to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
In this step, we added a descriptive title, &amp;quot;Editing Assignment: Meta Review Fix_1&amp;quot;, at the top of the &amp;quot;Etc&amp;quot; tab. This title dynamically reflects the assignment being edited, providing administrators with clear context for the task they are performing.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i6.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 7: Implementing Save Confirmation Banner'''&lt;br /&gt;
&lt;br /&gt;
We added a confirmation banner that notifies users of successful changes after clicking the &amp;quot;Save&amp;quot; button. The banner displays the message &amp;quot;The assignment was successfully saved!&amp;quot; in a green box, positioned at the top of the page to provide clear feedback.&lt;br /&gt;
&lt;br /&gt;
The banner is designed to appear immediately and automatically disappear after 3 seconds, offering a non-intrusive way to confirm user actions while maintaining a clean and seamless interface. This feature enhances usability by ensuring users are informed without disrupting their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i7.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 8: Navigating to Manage Assignments Page'''&lt;br /&gt;
&lt;br /&gt;
We implemented a seamless navigation flow where clicking the Back button on the &amp;quot;Edit Assignment&amp;quot; page redirects users to the Manage Assignments page. This page features an organized layout with search fields for assignment name, course name, creation date, and updated date, along with pagination controls for browsing through assignments.&lt;br /&gt;
&lt;br /&gt;
The design ensures administrators can efficiently manage assignments while maintaining an intuitive user experience. This functionality aligns with the overall navigation framework, keeping the interface consistent and user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i8.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  // const [currentView, setCurrentView] = useState(&amp;quot;general&amp;quot;);&lt;br /&gt;
  // State to track the active tab&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
        {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* &amp;lt;Tabs&lt;br /&gt;
                id=&amp;quot;assignment-tab&amp;quot;&lt;br /&gt;
                activeKey={currentView}&lt;br /&gt;
                // onSelect={(k) =&amp;gt; setCurrentView(k)}&lt;br /&gt;
                className=&amp;quot;mb-3&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Rubrics&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Review Strategy&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Due Dates&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Badges&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Etc&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;EtcView /&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
            &amp;lt;/Tabs&amp;gt;  */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp; (&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          {/* &amp;lt;ScoreIcon/&amp;gt; */}&lt;br /&gt;
          &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
);&lt;br /&gt;
};&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Unit Testing :'''&lt;br /&gt;
&lt;br /&gt;
To ensure the &amp;quot;Etc&amp;quot; tab functions as intended, we conducted thorough testing at multiple levels. First, individual elements like buttons, icons, and text fields were tested to verify that they behaved correctly. For instance, we checked if buttons responded to clicks or if icons displayed without issues. This approach helped us confirm the reliability of each component before assembling the full interface.&lt;br /&gt;
&lt;br /&gt;
* '''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/ntummal3/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd_i71.jpg&amp;diff=160403</id>
		<title>File:Oodd i71.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd_i71.jpg&amp;diff=160403"/>
		<updated>2024-12-04T01:37:54Z</updated>

		<summary type="html">&lt;p&gt;Snukara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160193</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160193"/>
		<updated>2024-12-03T19:06:02Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Use Case Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
We enhanced the tiles in the &amp;quot;Etc&amp;quot; tab by incorporating icons that visually represent each action. Here’s how we aligned the icons with their respective functionalities:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
By adding these icons, we improved both the visual appeal and usability of the interface. The icons provide quick visual cues, making it easier for administrators to recognize and access the tools they need. This update not only makes the &amp;quot;Etc&amp;quot; tab more intuitive but also ensures a polished and professional look.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 6: Adding a Title to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
In this step, we added a descriptive title, &amp;quot;Editing Assignment: Meta Review Fix_1&amp;quot;, at the top of the &amp;quot;Etc&amp;quot; tab. This title dynamically reflects the assignment being edited, providing administrators with clear context for the task they are performing.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i6.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 7: Implementing Save Confirmation Banner'''&lt;br /&gt;
&lt;br /&gt;
We added a confirmation banner that notifies users of successful changes after clicking the &amp;quot;Save&amp;quot; button. The banner displays the message &amp;quot;The assignment was successfully saved!&amp;quot; in a green box, positioned at the top of the page to provide clear feedback.&lt;br /&gt;
&lt;br /&gt;
The banner is designed to appear immediately and automatically disappear after 3 seconds, offering a non-intrusive way to confirm user actions while maintaining a clean and seamless interface. This feature enhances usability by ensuring users are informed without disrupting their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i7.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 8: Navigating to Manage Assignments Page'''&lt;br /&gt;
&lt;br /&gt;
We implemented a seamless navigation flow where clicking the Back button on the &amp;quot;Edit Assignment&amp;quot; page redirects users to the Manage Assignments page. This page features an organized layout with search fields for assignment name, course name, creation date, and updated date, along with pagination controls for browsing through assignments.&lt;br /&gt;
&lt;br /&gt;
The design ensures administrators can efficiently manage assignments while maintaining an intuitive user experience. This functionality aligns with the overall navigation framework, keeping the interface consistent and user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i8.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  // const [currentView, setCurrentView] = useState(&amp;quot;general&amp;quot;);&lt;br /&gt;
  // State to track the active tab&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
        {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* &amp;lt;Tabs&lt;br /&gt;
                id=&amp;quot;assignment-tab&amp;quot;&lt;br /&gt;
                activeKey={currentView}&lt;br /&gt;
                // onSelect={(k) =&amp;gt; setCurrentView(k)}&lt;br /&gt;
                className=&amp;quot;mb-3&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Rubrics&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Review Strategy&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Due Dates&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Badges&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Etc&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;EtcView /&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
            &amp;lt;/Tabs&amp;gt;  */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp; (&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          {/* &amp;lt;ScoreIcon/&amp;gt; */}&lt;br /&gt;
          &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
);&lt;br /&gt;
};&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Unit Testing :'''&lt;br /&gt;
&lt;br /&gt;
To ensure the &amp;quot;Etc&amp;quot; tab functions as intended, we conducted thorough testing at multiple levels. First, individual elements like buttons, icons, and text fields were tested to verify that they behaved correctly. For instance, we checked if buttons responded to clicks or if icons displayed without issues. This approach helped us confirm the reliability of each component before assembling the full interface.&lt;br /&gt;
&lt;br /&gt;
* '''Integration Testing :'''&lt;br /&gt;
&lt;br /&gt;
Next, we focused on how components worked together. Features such as adding participants, creating teams, and assigning reviewers were tested in combination to ensure seamless interaction. These tests confirmed that the features in the &amp;quot;Etc&amp;quot; tab work harmoniously and that data updates flow properly throughout the system.&lt;br /&gt;
&lt;br /&gt;
* '''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/ntummal3/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160177</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160177"/>
		<updated>2024-12-03T18:46:50Z</updated>

		<summary type="html">&lt;p&gt;Snukara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
We enhanced the tiles in the &amp;quot;Etc&amp;quot; tab by incorporating icons that visually represent each action. Here’s how we aligned the icons with their respective functionalities:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
By adding these icons, we improved both the visual appeal and usability of the interface. The icons provide quick visual cues, making it easier for administrators to recognize and access the tools they need. This update not only makes the &amp;quot;Etc&amp;quot; tab more intuitive but also ensures a polished and professional look.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 6: Adding a Title to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
In this step, we added a descriptive title, &amp;quot;Editing Assignment: Meta Review Fix_1&amp;quot;, at the top of the &amp;quot;Etc&amp;quot; tab. This title dynamically reflects the assignment being edited, providing administrators with clear context for the task they are performing.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i6.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 7: Implementing Save Confirmation Banner'''&lt;br /&gt;
&lt;br /&gt;
We added a confirmation banner that notifies users of successful changes after clicking the &amp;quot;Save&amp;quot; button. The banner displays the message &amp;quot;The assignment was successfully saved!&amp;quot; in a green box, positioned at the top of the page to provide clear feedback.&lt;br /&gt;
&lt;br /&gt;
The banner is designed to appear immediately and automatically disappear after 3 seconds, offering a non-intrusive way to confirm user actions while maintaining a clean and seamless interface. This feature enhances usability by ensuring users are informed without disrupting their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i7.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 8: Navigating to Manage Assignments Page'''&lt;br /&gt;
&lt;br /&gt;
We implemented a seamless navigation flow where clicking the Back button on the &amp;quot;Edit Assignment&amp;quot; page redirects users to the Manage Assignments page. This page features an organized layout with search fields for assignment name, course name, creation date, and updated date, along with pagination controls for browsing through assignments.&lt;br /&gt;
&lt;br /&gt;
The design ensures administrators can efficiently manage assignments while maintaining an intuitive user experience. This functionality aligns with the overall navigation framework, keeping the interface consistent and user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i8.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  // const [currentView, setCurrentView] = useState(&amp;quot;general&amp;quot;);&lt;br /&gt;
  // State to track the active tab&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
        {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* &amp;lt;Tabs&lt;br /&gt;
                id=&amp;quot;assignment-tab&amp;quot;&lt;br /&gt;
                activeKey={currentView}&lt;br /&gt;
                // onSelect={(k) =&amp;gt; setCurrentView(k)}&lt;br /&gt;
                className=&amp;quot;mb-3&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Rubrics&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Review Strategy&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Due Dates&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Badges&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Etc&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;EtcView /&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
            &amp;lt;/Tabs&amp;gt;  */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp; (&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          {/* &amp;lt;ScoreIcon/&amp;gt; */}&lt;br /&gt;
          &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
);&lt;br /&gt;
};&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Unit Testing :'''&lt;br /&gt;
&lt;br /&gt;
To ensure the &amp;quot;Etc&amp;quot; tab functions as intended, we conducted thorough testing at multiple levels. First, individual elements like buttons, icons, and text fields were tested to verify that they behaved correctly. For instance, we checked if buttons responded to clicks or if icons displayed without issues. This approach helped us confirm the reliability of each component before assembling the full interface.&lt;br /&gt;
&lt;br /&gt;
* '''Integration Testing :'''&lt;br /&gt;
&lt;br /&gt;
Next, we focused on how components worked together. Features such as adding participants, creating teams, and assigning reviewers were tested in combination to ensure seamless interaction. These tests confirmed that the features in the &amp;quot;Etc&amp;quot; tab work harmoniously and that data updates flow properly throughout the system.&lt;br /&gt;
&lt;br /&gt;
* '''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/ntummal3/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160175</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160175"/>
		<updated>2024-12-03T18:40:41Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Reimplementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
We enhanced the tiles in the &amp;quot;Etc&amp;quot; tab by incorporating icons that visually represent each action. Here’s how we aligned the icons with their respective functionalities:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
By adding these icons, we improved both the visual appeal and usability of the interface. The icons provide quick visual cues, making it easier for administrators to recognize and access the tools they need. This update not only makes the &amp;quot;Etc&amp;quot; tab more intuitive but also ensures a polished and professional look.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 6: Adding a Title to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
In this step, we added a descriptive title, &amp;quot;Editing Assignment: Meta Review Fix_1&amp;quot;, at the top of the &amp;quot;Etc&amp;quot; tab. This title dynamically reflects the assignment being edited, providing administrators with clear context for the task they are performing.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i6.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 7: Implementing Save Confirmation Banner'''&lt;br /&gt;
&lt;br /&gt;
We added a confirmation banner that notifies users of successful changes after clicking the &amp;quot;Save&amp;quot; button. The banner displays the message &amp;quot;The assignment was successfully saved!&amp;quot; in a green box, positioned at the top of the page to provide clear feedback.&lt;br /&gt;
&lt;br /&gt;
The banner is designed to appear immediately and automatically disappear after 3 seconds, offering a non-intrusive way to confirm user actions while maintaining a clean and seamless interface. This feature enhances usability by ensuring users are informed without disrupting their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i7.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 8: Navigating to Manage Assignments Page'''&lt;br /&gt;
&lt;br /&gt;
We implemented a seamless navigation flow where clicking the Back button on the &amp;quot;Edit Assignment&amp;quot; page redirects users to the Manage Assignments page. This page features an organized layout with search fields for assignment name, course name, creation date, and updated date, along with pagination controls for browsing through assignments.&lt;br /&gt;
&lt;br /&gt;
The design ensures administrators can efficiently manage assignments while maintaining an intuitive user experience. This functionality aligns with the overall navigation framework, keeping the interface consistent and user-friendly.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i8.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  // const [currentView, setCurrentView] = useState(&amp;quot;general&amp;quot;);&lt;br /&gt;
  // State to track the active tab&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
        {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* &amp;lt;Tabs&lt;br /&gt;
                id=&amp;quot;assignment-tab&amp;quot;&lt;br /&gt;
                activeKey={currentView}&lt;br /&gt;
                // onSelect={(k) =&amp;gt; setCurrentView(k)}&lt;br /&gt;
                className=&amp;quot;mb-3&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Rubrics&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Review Strategy&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Due Dates&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Badges&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Etc&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;EtcView /&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
            &amp;lt;/Tabs&amp;gt;  */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp; (&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          {/* &amp;lt;ScoreIcon/&amp;gt; */}&lt;br /&gt;
          &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
);&lt;br /&gt;
};&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Unit Testing :'''&lt;br /&gt;
&lt;br /&gt;
To ensure the &amp;quot;Etc&amp;quot; tab functions as intended, we conducted thorough testing at multiple levels. First, individual elements like buttons, icons, and text fields were tested to verify that they behaved correctly. For instance, we checked if buttons responded to clicks or if icons displayed without issues. This approach helped us confirm the reliability of each component before assembling the full interface.&lt;br /&gt;
&lt;br /&gt;
* '''Integration Testing :'''&lt;br /&gt;
&lt;br /&gt;
Next, we focused on how components worked together. Features such as adding participants, creating teams, and assigning reviewers were tested in combination to ensure seamless interaction. These tests confirmed that the features in the &amp;quot;Etc&amp;quot; tab work harmoniously and that data updates flow properly throughout the system.&lt;br /&gt;
&lt;br /&gt;
* '''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/ntummal3/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd_i8.jpg&amp;diff=160174</id>
		<title>File:Oodd i8.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd_i8.jpg&amp;diff=160174"/>
		<updated>2024-12-03T18:39:04Z</updated>

		<summary type="html">&lt;p&gt;Snukara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd_i7.jpg&amp;diff=160173</id>
		<title>File:Oodd i7.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd_i7.jpg&amp;diff=160173"/>
		<updated>2024-12-03T18:38:55Z</updated>

		<summary type="html">&lt;p&gt;Snukara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd_i6.jpg&amp;diff=160172</id>
		<title>File:Oodd i6.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd_i6.jpg&amp;diff=160172"/>
		<updated>2024-12-03T18:38:46Z</updated>

		<summary type="html">&lt;p&gt;Snukara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160171</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160171"/>
		<updated>2024-12-03T18:38:33Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Reimplementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
We enhanced the tiles in the &amp;quot;Etc&amp;quot; tab by incorporating icons that visually represent each action. Here’s how we aligned the icons with their respective functionalities:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
By adding these icons, we improved both the visual appeal and usability of the interface. The icons provide quick visual cues, making it easier for administrators to recognize and access the tools they need. This update not only makes the &amp;quot;Etc&amp;quot; tab more intuitive but also ensures a polished and professional look.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 6: Adding a Title to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
In this step, we added a descriptive title, &amp;quot;Editing Assignment: Meta Review Fix_1&amp;quot;, at the top of the &amp;quot;Etc&amp;quot; tab. This title dynamically reflects the assignment being edited, providing administrators with clear context for the task they are performing.&lt;br /&gt;
&lt;br /&gt;
* '''Step 7: Implementing Save Confirmation Banner'''&lt;br /&gt;
&lt;br /&gt;
We added a confirmation banner that notifies users of successful changes after clicking the &amp;quot;Save&amp;quot; button. The banner displays the message &amp;quot;The assignment was successfully saved!&amp;quot; in a green box, positioned at the top of the page to provide clear feedback.&lt;br /&gt;
&lt;br /&gt;
The banner is designed to appear immediately and automatically disappear after 3 seconds, offering a non-intrusive way to confirm user actions while maintaining a clean and seamless interface. This feature enhances usability by ensuring users are informed without disrupting their workflow.&lt;br /&gt;
&lt;br /&gt;
* '''Step 8: Navigating to Manage Assignments Page'''&lt;br /&gt;
&lt;br /&gt;
We implemented a seamless navigation flow where clicking the Back button on the &amp;quot;Edit Assignment&amp;quot; page redirects users to the Manage Assignments page. This page features an organized layout with search fields for assignment name, course name, creation date, and updated date, along with pagination controls for browsing through assignments.&lt;br /&gt;
&lt;br /&gt;
The design ensures administrators can efficiently manage assignments while maintaining an intuitive user experience. This functionality aligns with the overall navigation framework, keeping the interface consistent and user-friendly.&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  // const [currentView, setCurrentView] = useState(&amp;quot;general&amp;quot;);&lt;br /&gt;
  // State to track the active tab&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
        {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* &amp;lt;Tabs&lt;br /&gt;
                id=&amp;quot;assignment-tab&amp;quot;&lt;br /&gt;
                activeKey={currentView}&lt;br /&gt;
                // onSelect={(k) =&amp;gt; setCurrentView(k)}&lt;br /&gt;
                className=&amp;quot;mb-3&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Rubrics&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Review Strategy&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Due Dates&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Badges&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Etc&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;EtcView /&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
            &amp;lt;/Tabs&amp;gt;  */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp; (&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          {/* &amp;lt;ScoreIcon/&amp;gt; */}&lt;br /&gt;
          &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
);&lt;br /&gt;
};&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Unit Testing :'''&lt;br /&gt;
&lt;br /&gt;
To ensure the &amp;quot;Etc&amp;quot; tab functions as intended, we conducted thorough testing at multiple levels. First, individual elements like buttons, icons, and text fields were tested to verify that they behaved correctly. For instance, we checked if buttons responded to clicks or if icons displayed without issues. This approach helped us confirm the reliability of each component before assembling the full interface.&lt;br /&gt;
&lt;br /&gt;
* '''Integration Testing :'''&lt;br /&gt;
&lt;br /&gt;
Next, we focused on how components worked together. Features such as adding participants, creating teams, and assigning reviewers were tested in combination to ensure seamless interaction. These tests confirmed that the features in the &amp;quot;Etc&amp;quot; tab work harmoniously and that data updates flow properly throughout the system.&lt;br /&gt;
&lt;br /&gt;
* '''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/ntummal3/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160061</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160061"/>
		<updated>2024-12-02T20:46:28Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Plan for Reimplementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
We enhanced the tiles in the &amp;quot;Etc&amp;quot; tab by incorporating icons that visually represent each action. Here’s how we aligned the icons with their respective functionalities:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
By adding these icons, we improved both the visual appeal and usability of the interface. The icons provide quick visual cues, making it easier for administrators to recognize and access the tools they need. This update not only makes the &amp;quot;Etc&amp;quot; tab more intuitive but also ensures a polished and professional look.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  // const [currentView, setCurrentView] = useState(&amp;quot;general&amp;quot;);&lt;br /&gt;
  // State to track the active tab&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
        {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* &amp;lt;Tabs&lt;br /&gt;
                id=&amp;quot;assignment-tab&amp;quot;&lt;br /&gt;
                activeKey={currentView}&lt;br /&gt;
                // onSelect={(k) =&amp;gt; setCurrentView(k)}&lt;br /&gt;
                className=&amp;quot;mb-3&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Rubrics&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Review Strategy&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Due Dates&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Badges&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Etc&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;EtcView /&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
            &amp;lt;/Tabs&amp;gt;  */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp; (&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          {/* &amp;lt;ScoreIcon/&amp;gt; */}&lt;br /&gt;
          &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
);&lt;br /&gt;
};&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Unit Testing :'''&lt;br /&gt;
&lt;br /&gt;
To ensure the &amp;quot;Etc&amp;quot; tab functions as intended, we conducted thorough testing at multiple levels. First, individual elements like buttons, icons, and text fields were tested to verify that they behaved correctly. For instance, we checked if buttons responded to clicks or if icons displayed without issues. This approach helped us confirm the reliability of each component before assembling the full interface.&lt;br /&gt;
&lt;br /&gt;
* '''Integration Testing :'''&lt;br /&gt;
&lt;br /&gt;
Next, we focused on how components worked together. Features such as adding participants, creating teams, and assigning reviewers were tested in combination to ensure seamless interaction. These tests confirmed that the features in the &amp;quot;Etc&amp;quot; tab work harmoniously and that data updates flow properly throughout the system.&lt;br /&gt;
&lt;br /&gt;
* '''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/ntummal3/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160025</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160025"/>
		<updated>2024-12-02T18:43:29Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Reimplementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i1.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i2.jpg|1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i3.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i4.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
We enhanced the tiles in the &amp;quot;Etc&amp;quot; tab by incorporating icons that visually represent each action. Here’s how we aligned the icons with their respective functionalities:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
By adding these icons, we improved both the visual appeal and usability of the interface. The icons provide quick visual cues, making it easier for administrators to recognize and access the tools they need. This update not only makes the &amp;quot;Etc&amp;quot; tab more intuitive but also ensures a polished and professional look.&lt;br /&gt;
&lt;br /&gt;
[[File:oodd i5.jpg |1000px|center]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  // const [currentView, setCurrentView] = useState(&amp;quot;general&amp;quot;);&lt;br /&gt;
  // State to track the active tab&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
        {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* &amp;lt;Tabs&lt;br /&gt;
                id=&amp;quot;assignment-tab&amp;quot;&lt;br /&gt;
                activeKey={currentView}&lt;br /&gt;
                // onSelect={(k) =&amp;gt; setCurrentView(k)}&lt;br /&gt;
                className=&amp;quot;mb-3&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Rubrics&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Review Strategy&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Due Dates&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Badges&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Etc&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;EtcView /&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
            &amp;lt;/Tabs&amp;gt;  */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp; (&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          {/* &amp;lt;ScoreIcon/&amp;gt; */}&lt;br /&gt;
          &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
);&lt;br /&gt;
};&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
The reimplementation of the &amp;quot;Etc&amp;quot; tab will follow a systematic approach using ReactJS and TypeScript, emphasizing maintainability, scalability, and user experience. Each action in the &amp;quot;Etc&amp;quot; tab will be handled as distinct tasks, ensuring modularity and a clear separation of concerns. The following plan outlines the key actions and methods for the new interface:&lt;br /&gt;
&lt;br /&gt;
=== Add Participant Action ===&lt;br /&gt;
The `AddParticipantAction` component will be responsible for handling the addition of new participants. It will collect participant information through a form, perform front-end validations, and send a POST request to the backend API. TypeScript will ensure type safety, while error handling will manage invalid or missing input data. Upon successful addition, the new participant's details will be displayed in the UI, updated in real-time.&lt;br /&gt;
&lt;br /&gt;
=== Create Teams Action ===&lt;br /&gt;
The `CreateTeamsAction` will enable users to group participants into teams. This action will include a user-friendly interface for selecting participants and defining team sizes or names. The component will handle API requests to create and save team data. The state will be managed using React’s Context API, ensuring all updates reflect instantly across the interface. Type checking with TypeScript will prevent errors during team creation, and users will receive feedback on the success or failure of the action.&lt;br /&gt;
&lt;br /&gt;
=== Assign Reviewer Action ===&lt;br /&gt;
The `AssignReviewerAction` will facilitate the reviewer assignment process. It will provide a list of available reviewers and allow users to select and assign them to participants or teams. The action will validate reviewer availability and participant eligibility before sending the assignment request to the backend. Error handling will address conflicts, and the UI will display the updated reviewer assignments in a structured list or table.&lt;br /&gt;
&lt;br /&gt;
=== View Submissions Action ===&lt;br /&gt;
The `ViewSubmissionsAction` component will retrieve and display all submissions related to the assignment. It will fetch submission data from the backend using API calls and present it in a sortable and filterable table. Users can view individual submission details, and TypeScript interfaces will ensure consistent data structures. This action will improve user access to assignment submissions, providing a streamlined review experience.&lt;br /&gt;
&lt;br /&gt;
=== View Scores Action ===&lt;br /&gt;
The `ViewScoresAction` will offer a summary of assignment scores. It will make GET requests to the backend API to fetch scores data, displaying it in an organized format. The component will include options for filtering scores by participant, team, or date. Type safety will be enforced using TypeScript, reducing the likelihood of data-related errors. The action will focus on delivering clear and concise score information to users.&lt;br /&gt;
&lt;br /&gt;
=== View Reports Action ===&lt;br /&gt;
The `ViewReportsAction` will handle the retrieval and display of assignment reports. It will connect with the backend to pull comprehensive reports data, which will be shown in a user-friendly format with options for sorting and exporting. This action will provide users with valuable insights into assignment performance, feedback, and trends, leveraging the structured data from the backend API.&lt;br /&gt;
 &lt;br /&gt;
=== View Delayed Jobs Action ===&lt;br /&gt;
&lt;br /&gt;
The `ViewDelayedJobsAction` allows instructors to check for delayed background jobs related to the assignment, providing visibility into tasks that are pending or scheduled in the system. This feature helps track jobs like notifications and score calculations, ensuring transparency and easy monitoring.&lt;br /&gt;
&lt;br /&gt;
This structured approach will ensure a cohesive and efficient reimplementation of the &amp;quot;Etc&amp;quot; tab, enhancing both the usability and functionality of the Expertiza application. Each action and method is designed with a focus on modularity, data integrity, and user feedback, leveraging modern development practices with React and TypeScript.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Unit Testing :'''&lt;br /&gt;
&lt;br /&gt;
To ensure the &amp;quot;Etc&amp;quot; tab functions as intended, we conducted thorough testing at multiple levels. First, individual elements like buttons, icons, and text fields were tested to verify that they behaved correctly. For instance, we checked if buttons responded to clicks or if icons displayed without issues. This approach helped us confirm the reliability of each component before assembling the full interface.&lt;br /&gt;
&lt;br /&gt;
* '''Integration Testing :'''&lt;br /&gt;
&lt;br /&gt;
Next, we focused on how components worked together. Features such as adding participants, creating teams, and assigning reviewers were tested in combination to ensure seamless interaction. These tests confirmed that the features in the &amp;quot;Etc&amp;quot; tab work harmoniously and that data updates flow properly throughout the system.&lt;br /&gt;
&lt;br /&gt;
* '''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/ntummal3/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd_i5.jpg&amp;diff=160024</id>
		<title>File:Oodd i5.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd_i5.jpg&amp;diff=160024"/>
		<updated>2024-12-02T18:40:04Z</updated>

		<summary type="html">&lt;p&gt;Snukara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd_i4.jpg&amp;diff=160023</id>
		<title>File:Oodd i4.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd_i4.jpg&amp;diff=160023"/>
		<updated>2024-12-02T18:39:55Z</updated>

		<summary type="html">&lt;p&gt;Snukara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd_i3.jpg&amp;diff=160022</id>
		<title>File:Oodd i3.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd_i3.jpg&amp;diff=160022"/>
		<updated>2024-12-02T18:39:47Z</updated>

		<summary type="html">&lt;p&gt;Snukara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd_i2.jpg&amp;diff=160021</id>
		<title>File:Oodd i2.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd_i2.jpg&amp;diff=160021"/>
		<updated>2024-12-02T18:39:36Z</updated>

		<summary type="html">&lt;p&gt;Snukara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd_i1.jpg&amp;diff=160020</id>
		<title>File:Oodd i1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd_i1.jpg&amp;diff=160020"/>
		<updated>2024-12-02T18:39:19Z</updated>

		<summary type="html">&lt;p&gt;Snukara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160019</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160019"/>
		<updated>2024-12-02T18:38:13Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Reimplementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
* '''Step 1: Initial Setup and Navigation Layout'''&lt;br /&gt;
&lt;br /&gt;
The initial phase of our project focused on creating the foundational navigation layout for the admin interface. We introduced a tab-based structure, as illustrated in the provided screenshot, with tabs labeled General, Rubrics, Review Strategy, Due Dates, Badges, and Etc. This design prioritizes clarity, giving administrators straightforward access to different sections of the Assignment Edit page. The active state of the &amp;quot;Etc&amp;quot; tab visually highlights which section the admin is currently working on.&lt;br /&gt;
&lt;br /&gt;
This layout acts as the primary entry point for managing assignments, offering a user-friendly way to navigate the various tools and functionalities available. It ensures that administrators can quickly locate and manage specific features with ease, streamlining the overall workflow.&lt;br /&gt;
&lt;br /&gt;
* '''Step 2: Adding Base Content to the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
The next phase of the project involved establishing the core content structure for the &amp;quot;Etc&amp;quot; tab, as shown in the accompanying screenshot. At this point, placeholder text labeled &amp;quot;Etc Page Content&amp;quot; was used to mark the starting framework for future enhancements.&lt;br /&gt;
&lt;br /&gt;
This foundational step ensured that the tab was fully functional and ready to accommodate additional components and features. It also confirmed that the &amp;quot;Etc&amp;quot; tab integrated seamlessly within the broader navigation system, providing a stable base for iterative improvements.&lt;br /&gt;
&lt;br /&gt;
* '''Step 3: Adding Action Buttons'''&lt;br /&gt;
&lt;br /&gt;
In this phase, action buttons were added to the &amp;quot;Etc&amp;quot; tab to support user interactions. A green &amp;quot;Save&amp;quot; button and a red &amp;quot;Back&amp;quot; button were placed at the bottom of the page. The &amp;quot;Save&amp;quot; button allows users to apply and preserve any changes made, while the &amp;quot;Back&amp;quot; button provides an easy way to return to the previous page.&lt;br /&gt;
&lt;br /&gt;
These additions significantly improve usability by enabling users to take direct and purposeful actions without leaving the &amp;quot;Etc&amp;quot; tab, streamlining their workflow.&lt;br /&gt;
&lt;br /&gt;
* '''Step 4: Integrating Functional Buttons in the &amp;quot;Etc&amp;quot; Tab'''&lt;br /&gt;
&lt;br /&gt;
We’ve enhanced the &amp;quot;Etc&amp;quot; tab by introducing interactive tiles for key administrative actions. These tiles offer direct access to essential tools, including Add Participant, Create Teams, Assign Reviewer, View Submissions, View Scores, View Reports, and View Delayed Jobs. Each tile acts as a gateway to a specific function, streamlining assignment management for administrators.&lt;br /&gt;
&lt;br /&gt;
This update boosts usability by allowing quick navigation to important features. The tiles feature a clean and intuitive design that prioritizes user-friendliness, making it easier for administrators to manage tasks efficiently. The layout integrates seamlessly with the rest of the interface, maintaining consistency across the platform’s tabs and ensuring a cohesive experience.&lt;br /&gt;
&lt;br /&gt;
* '''Step 5: Adding Iconography to Functional Tiles'''&lt;br /&gt;
&lt;br /&gt;
We enhanced the tiles in the &amp;quot;Etc&amp;quot; tab by incorporating icons that visually represent each action. Here’s how we aligned the icons with their respective functionalities:&lt;br /&gt;
&lt;br /&gt;
#Add Participant: User icon.&lt;br /&gt;
#Create Teams: Group icon.&lt;br /&gt;
#Assign Reviewer: Clipboard icon.&lt;br /&gt;
#View Submissions: Document icon.&lt;br /&gt;
#View Scores: Report icon.&lt;br /&gt;
#View Reports: File icon.&lt;br /&gt;
#View Delayed Jobs: Clock icon.&lt;br /&gt;
&lt;br /&gt;
By adding these icons, we improved both the visual appeal and usability of the interface. The icons provide quick visual cues, making it easier for administrators to recognize and access the tools they need. This update not only makes the &amp;quot;Etc&amp;quot; tab more intuitive but also ensures a polished and professional look.&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  // const [currentView, setCurrentView] = useState(&amp;quot;general&amp;quot;);&lt;br /&gt;
  // State to track the active tab&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
        {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* &amp;lt;Tabs&lt;br /&gt;
                id=&amp;quot;assignment-tab&amp;quot;&lt;br /&gt;
                activeKey={currentView}&lt;br /&gt;
                // onSelect={(k) =&amp;gt; setCurrentView(k)}&lt;br /&gt;
                className=&amp;quot;mb-3&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Rubrics&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Review Strategy&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Due Dates&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Badges&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Etc&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;EtcView /&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
            &amp;lt;/Tabs&amp;gt;  */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp; (&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          {/* &amp;lt;ScoreIcon/&amp;gt; */}&lt;br /&gt;
          &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
);&lt;br /&gt;
};&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
The reimplementation of the &amp;quot;Etc&amp;quot; tab will follow a systematic approach using ReactJS and TypeScript, emphasizing maintainability, scalability, and user experience. Each action in the &amp;quot;Etc&amp;quot; tab will be handled as distinct tasks, ensuring modularity and a clear separation of concerns. The following plan outlines the key actions and methods for the new interface:&lt;br /&gt;
&lt;br /&gt;
=== Add Participant Action ===&lt;br /&gt;
The `AddParticipantAction` component will be responsible for handling the addition of new participants. It will collect participant information through a form, perform front-end validations, and send a POST request to the backend API. TypeScript will ensure type safety, while error handling will manage invalid or missing input data. Upon successful addition, the new participant's details will be displayed in the UI, updated in real-time.&lt;br /&gt;
&lt;br /&gt;
=== Create Teams Action ===&lt;br /&gt;
The `CreateTeamsAction` will enable users to group participants into teams. This action will include a user-friendly interface for selecting participants and defining team sizes or names. The component will handle API requests to create and save team data. The state will be managed using React’s Context API, ensuring all updates reflect instantly across the interface. Type checking with TypeScript will prevent errors during team creation, and users will receive feedback on the success or failure of the action.&lt;br /&gt;
&lt;br /&gt;
=== Assign Reviewer Action ===&lt;br /&gt;
The `AssignReviewerAction` will facilitate the reviewer assignment process. It will provide a list of available reviewers and allow users to select and assign them to participants or teams. The action will validate reviewer availability and participant eligibility before sending the assignment request to the backend. Error handling will address conflicts, and the UI will display the updated reviewer assignments in a structured list or table.&lt;br /&gt;
&lt;br /&gt;
=== View Submissions Action ===&lt;br /&gt;
The `ViewSubmissionsAction` component will retrieve and display all submissions related to the assignment. It will fetch submission data from the backend using API calls and present it in a sortable and filterable table. Users can view individual submission details, and TypeScript interfaces will ensure consistent data structures. This action will improve user access to assignment submissions, providing a streamlined review experience.&lt;br /&gt;
&lt;br /&gt;
=== View Scores Action ===&lt;br /&gt;
The `ViewScoresAction` will offer a summary of assignment scores. It will make GET requests to the backend API to fetch scores data, displaying it in an organized format. The component will include options for filtering scores by participant, team, or date. Type safety will be enforced using TypeScript, reducing the likelihood of data-related errors. The action will focus on delivering clear and concise score information to users.&lt;br /&gt;
&lt;br /&gt;
=== View Reports Action ===&lt;br /&gt;
The `ViewReportsAction` will handle the retrieval and display of assignment reports. It will connect with the backend to pull comprehensive reports data, which will be shown in a user-friendly format with options for sorting and exporting. This action will provide users with valuable insights into assignment performance, feedback, and trends, leveraging the structured data from the backend API.&lt;br /&gt;
 &lt;br /&gt;
=== View Delayed Jobs Action ===&lt;br /&gt;
&lt;br /&gt;
The `ViewDelayedJobsAction` allows instructors to check for delayed background jobs related to the assignment, providing visibility into tasks that are pending or scheduled in the system. This feature helps track jobs like notifications and score calculations, ensuring transparency and easy monitoring.&lt;br /&gt;
&lt;br /&gt;
This structured approach will ensure a cohesive and efficient reimplementation of the &amp;quot;Etc&amp;quot; tab, enhancing both the usability and functionality of the Expertiza application. Each action and method is designed with a focus on modularity, data integrity, and user feedback, leveraging modern development practices with React and TypeScript.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Unit Testing :'''&lt;br /&gt;
&lt;br /&gt;
To ensure the &amp;quot;Etc&amp;quot; tab functions as intended, we conducted thorough testing at multiple levels. First, individual elements like buttons, icons, and text fields were tested to verify that they behaved correctly. For instance, we checked if buttons responded to clicks or if icons displayed without issues. This approach helped us confirm the reliability of each component before assembling the full interface.&lt;br /&gt;
&lt;br /&gt;
* '''Integration Testing :'''&lt;br /&gt;
&lt;br /&gt;
Next, we focused on how components worked together. Features such as adding participants, creating teams, and assigning reviewers were tested in combination to ensure seamless interaction. These tests confirmed that the features in the &amp;quot;Etc&amp;quot; tab work harmoniously and that data updates flow properly throughout the system.&lt;br /&gt;
&lt;br /&gt;
* '''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/ntummal3/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160014</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=160014"/>
		<updated>2024-12-02T18:18:42Z</updated>

		<summary type="html">&lt;p&gt;Snukara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  // const [currentView, setCurrentView] = useState(&amp;quot;general&amp;quot;);&lt;br /&gt;
  // State to track the active tab&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
        {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* &amp;lt;Tabs&lt;br /&gt;
                id=&amp;quot;assignment-tab&amp;quot;&lt;br /&gt;
                activeKey={currentView}&lt;br /&gt;
                // onSelect={(k) =&amp;gt; setCurrentView(k)}&lt;br /&gt;
                className=&amp;quot;mb-3&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Rubrics&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Review Strategy&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Due Dates&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Badges&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Etc&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;EtcView /&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
            &amp;lt;/Tabs&amp;gt;  */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp; (&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          {/* &amp;lt;ScoreIcon/&amp;gt; */}&lt;br /&gt;
          &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
);&lt;br /&gt;
};&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
The reimplementation of the &amp;quot;Etc&amp;quot; tab will follow a systematic approach using ReactJS and TypeScript, emphasizing maintainability, scalability, and user experience. Each action in the &amp;quot;Etc&amp;quot; tab will be handled as distinct tasks, ensuring modularity and a clear separation of concerns. The following plan outlines the key actions and methods for the new interface:&lt;br /&gt;
&lt;br /&gt;
=== Add Participant Action ===&lt;br /&gt;
The `AddParticipantAction` component will be responsible for handling the addition of new participants. It will collect participant information through a form, perform front-end validations, and send a POST request to the backend API. TypeScript will ensure type safety, while error handling will manage invalid or missing input data. Upon successful addition, the new participant's details will be displayed in the UI, updated in real-time.&lt;br /&gt;
&lt;br /&gt;
=== Create Teams Action ===&lt;br /&gt;
The `CreateTeamsAction` will enable users to group participants into teams. This action will include a user-friendly interface for selecting participants and defining team sizes or names. The component will handle API requests to create and save team data. The state will be managed using React’s Context API, ensuring all updates reflect instantly across the interface. Type checking with TypeScript will prevent errors during team creation, and users will receive feedback on the success or failure of the action.&lt;br /&gt;
&lt;br /&gt;
=== Assign Reviewer Action ===&lt;br /&gt;
The `AssignReviewerAction` will facilitate the reviewer assignment process. It will provide a list of available reviewers and allow users to select and assign them to participants or teams. The action will validate reviewer availability and participant eligibility before sending the assignment request to the backend. Error handling will address conflicts, and the UI will display the updated reviewer assignments in a structured list or table.&lt;br /&gt;
&lt;br /&gt;
=== View Submissions Action ===&lt;br /&gt;
The `ViewSubmissionsAction` component will retrieve and display all submissions related to the assignment. It will fetch submission data from the backend using API calls and present it in a sortable and filterable table. Users can view individual submission details, and TypeScript interfaces will ensure consistent data structures. This action will improve user access to assignment submissions, providing a streamlined review experience.&lt;br /&gt;
&lt;br /&gt;
=== View Scores Action ===&lt;br /&gt;
The `ViewScoresAction` will offer a summary of assignment scores. It will make GET requests to the backend API to fetch scores data, displaying it in an organized format. The component will include options for filtering scores by participant, team, or date. Type safety will be enforced using TypeScript, reducing the likelihood of data-related errors. The action will focus on delivering clear and concise score information to users.&lt;br /&gt;
&lt;br /&gt;
=== View Reports Action ===&lt;br /&gt;
The `ViewReportsAction` will handle the retrieval and display of assignment reports. It will connect with the backend to pull comprehensive reports data, which will be shown in a user-friendly format with options for sorting and exporting. This action will provide users with valuable insights into assignment performance, feedback, and trends, leveraging the structured data from the backend API.&lt;br /&gt;
 &lt;br /&gt;
=== View Delayed Jobs Action ===&lt;br /&gt;
&lt;br /&gt;
The `ViewDelayedJobsAction` allows instructors to check for delayed background jobs related to the assignment, providing visibility into tasks that are pending or scheduled in the system. This feature helps track jobs like notifications and score calculations, ensuring transparency and easy monitoring.&lt;br /&gt;
&lt;br /&gt;
This structured approach will ensure a cohesive and efficient reimplementation of the &amp;quot;Etc&amp;quot; tab, enhancing both the usability and functionality of the Expertiza application. Each action and method is designed with a focus on modularity, data integrity, and user feedback, leveraging modern development practices with React and TypeScript.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Unit Testing :'''&lt;br /&gt;
&lt;br /&gt;
To ensure the &amp;quot;Etc&amp;quot; tab functions as intended, we conducted thorough testing at multiple levels. First, individual elements like buttons, icons, and text fields were tested to verify that they behaved correctly. For instance, we checked if buttons responded to clicks or if icons displayed without issues. This approach helped us confirm the reliability of each component before assembling the full interface.&lt;br /&gt;
&lt;br /&gt;
* '''Integration Testing :'''&lt;br /&gt;
&lt;br /&gt;
Next, we focused on how components worked together. Features such as adding participants, creating teams, and assigning reviewers were tested in combination to ensure seamless interaction. These tests confirmed that the features in the &amp;quot;Etc&amp;quot; tab work harmoniously and that data updates flow properly throughout the system.&lt;br /&gt;
&lt;br /&gt;
* '''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/ntummal3/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159951</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159951"/>
		<updated>2024-12-01T23:24:12Z</updated>

		<summary type="html">&lt;p&gt;Snukara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  // const [currentView, setCurrentView] = useState(&amp;quot;general&amp;quot;);&lt;br /&gt;
  // State to track the active tab&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
        {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* &amp;lt;Tabs&lt;br /&gt;
                id=&amp;quot;assignment-tab&amp;quot;&lt;br /&gt;
                activeKey={currentView}&lt;br /&gt;
                // onSelect={(k) =&amp;gt; setCurrentView(k)}&lt;br /&gt;
                className=&amp;quot;mb-3&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Rubrics&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Review Strategy&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Due Dates&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Badges&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Etc&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;EtcView /&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
            &amp;lt;/Tabs&amp;gt;  */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp; (&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          {/* &amp;lt;ScoreIcon/&amp;gt; */}&lt;br /&gt;
          &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
);&lt;br /&gt;
};&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
The reimplementation of the &amp;quot;Etc&amp;quot; tab will follow a systematic approach using ReactJS and TypeScript, emphasizing maintainability, scalability, and user experience. Each action in the &amp;quot;Etc&amp;quot; tab will be handled as distinct tasks, ensuring modularity and a clear separation of concerns. The following plan outlines the key actions and methods for the new interface:&lt;br /&gt;
&lt;br /&gt;
=== Add Participant Action ===&lt;br /&gt;
The `AddParticipantAction` component will be responsible for handling the addition of new participants. It will collect participant information through a form, perform front-end validations, and send a POST request to the backend API. TypeScript will ensure type safety, while error handling will manage invalid or missing input data. Upon successful addition, the new participant's details will be displayed in the UI, updated in real-time.&lt;br /&gt;
&lt;br /&gt;
=== Create Teams Action ===&lt;br /&gt;
The `CreateTeamsAction` will enable users to group participants into teams. This action will include a user-friendly interface for selecting participants and defining team sizes or names. The component will handle API requests to create and save team data. The state will be managed using React’s Context API, ensuring all updates reflect instantly across the interface. Type checking with TypeScript will prevent errors during team creation, and users will receive feedback on the success or failure of the action.&lt;br /&gt;
&lt;br /&gt;
=== Assign Reviewer Action ===&lt;br /&gt;
The `AssignReviewerAction` will facilitate the reviewer assignment process. It will provide a list of available reviewers and allow users to select and assign them to participants or teams. The action will validate reviewer availability and participant eligibility before sending the assignment request to the backend. Error handling will address conflicts, and the UI will display the updated reviewer assignments in a structured list or table.&lt;br /&gt;
&lt;br /&gt;
=== View Submissions Action ===&lt;br /&gt;
The `ViewSubmissionsAction` component will retrieve and display all submissions related to the assignment. It will fetch submission data from the backend using API calls and present it in a sortable and filterable table. Users can view individual submission details, and TypeScript interfaces will ensure consistent data structures. This action will improve user access to assignment submissions, providing a streamlined review experience.&lt;br /&gt;
&lt;br /&gt;
=== View Scores Action ===&lt;br /&gt;
The `ViewScoresAction` will offer a summary of assignment scores. It will make GET requests to the backend API to fetch scores data, displaying it in an organized format. The component will include options for filtering scores by participant, team, or date. Type safety will be enforced using TypeScript, reducing the likelihood of data-related errors. The action will focus on delivering clear and concise score information to users.&lt;br /&gt;
&lt;br /&gt;
=== View Reports Action ===&lt;br /&gt;
The `ViewReportsAction` will handle the retrieval and display of assignment reports. It will connect with the backend to pull comprehensive reports data, which will be shown in a user-friendly format with options for sorting and exporting. This action will provide users with valuable insights into assignment performance, feedback, and trends, leveraging the structured data from the backend API.&lt;br /&gt;
 &lt;br /&gt;
=== View Delayed Jobs Action ===&lt;br /&gt;
&lt;br /&gt;
The `ViewDelayedJobsAction` allows instructors to check for delayed background jobs related to the assignment, providing visibility into tasks that are pending or scheduled in the system. This feature helps track jobs like notifications and score calculations, ensuring transparency and easy monitoring.&lt;br /&gt;
&lt;br /&gt;
This structured approach will ensure a cohesive and efficient reimplementation of the &amp;quot;Etc&amp;quot; tab, enhancing both the usability and functionality of the Expertiza application. Each action and method is designed with a focus on modularity, data integrity, and user feedback, leveraging modern development practices with React and TypeScript.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Unit Testing :'''&lt;br /&gt;
&lt;br /&gt;
To ensure the &amp;quot;Etc&amp;quot; tab functions as intended, we conducted thorough testing at multiple levels. First, individual elements like buttons, icons, and text fields were tested to verify that they behaved correctly. For instance, we checked if buttons responded to clicks or if icons displayed without issues. This approach helped us confirm the reliability of each component before assembling the full interface.&lt;br /&gt;
&lt;br /&gt;
* '''Integration Testing :'''&lt;br /&gt;
&lt;br /&gt;
Next, we focused on how components worked together. Features such as adding participants, creating teams, and assigning reviewers were tested in combination to ensure seamless interaction. These tests confirmed that the features in the &amp;quot;Etc&amp;quot; tab work harmoniously and that data updates flow properly throughout the system.&lt;br /&gt;
&lt;br /&gt;
* '''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/ntummal3/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159950</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159950"/>
		<updated>2024-12-01T23:21:19Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Usage of Design Principles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  // const [currentView, setCurrentView] = useState(&amp;quot;general&amp;quot;);&lt;br /&gt;
  // State to track the active tab&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
        {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* &amp;lt;Tabs&lt;br /&gt;
                id=&amp;quot;assignment-tab&amp;quot;&lt;br /&gt;
                activeKey={currentView}&lt;br /&gt;
                // onSelect={(k) =&amp;gt; setCurrentView(k)}&lt;br /&gt;
                className=&amp;quot;mb-3&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Rubrics&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Review Strategy&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Due Dates&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Badges&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Etc&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;EtcView /&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
            &amp;lt;/Tabs&amp;gt;  */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp; (&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          {/* &amp;lt;ScoreIcon/&amp;gt; */}&lt;br /&gt;
          &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
);&lt;br /&gt;
};&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
The reimplementation of the &amp;quot;Etc&amp;quot; tab will follow a systematic approach using ReactJS and TypeScript, emphasizing maintainability, scalability, and user experience. Each action in the &amp;quot;Etc&amp;quot; tab will be handled as distinct tasks, ensuring modularity and a clear separation of concerns. The following plan outlines the key actions and methods for the new interface:&lt;br /&gt;
&lt;br /&gt;
=== Add Participant Action ===&lt;br /&gt;
The `AddParticipantAction` component will be responsible for handling the addition of new participants. It will collect participant information through a form, perform front-end validations, and send a POST request to the backend API. TypeScript will ensure type safety, while error handling will manage invalid or missing input data. Upon successful addition, the new participant's details will be displayed in the UI, updated in real-time.&lt;br /&gt;
&lt;br /&gt;
=== Create Teams Action ===&lt;br /&gt;
The `CreateTeamsAction` will enable users to group participants into teams. This action will include a user-friendly interface for selecting participants and defining team sizes or names. The component will handle API requests to create and save team data. The state will be managed using React’s Context API, ensuring all updates reflect instantly across the interface. Type checking with TypeScript will prevent errors during team creation, and users will receive feedback on the success or failure of the action.&lt;br /&gt;
&lt;br /&gt;
=== Assign Reviewer Action ===&lt;br /&gt;
The `AssignReviewerAction` will facilitate the reviewer assignment process. It will provide a list of available reviewers and allow users to select and assign them to participants or teams. The action will validate reviewer availability and participant eligibility before sending the assignment request to the backend. Error handling will address conflicts, and the UI will display the updated reviewer assignments in a structured list or table.&lt;br /&gt;
&lt;br /&gt;
=== View Submissions Action ===&lt;br /&gt;
The `ViewSubmissionsAction` component will retrieve and display all submissions related to the assignment. It will fetch submission data from the backend using API calls and present it in a sortable and filterable table. Users can view individual submission details, and TypeScript interfaces will ensure consistent data structures. This action will improve user access to assignment submissions, providing a streamlined review experience.&lt;br /&gt;
&lt;br /&gt;
=== View Scores Action ===&lt;br /&gt;
The `ViewScoresAction` will offer a summary of assignment scores. It will make GET requests to the backend API to fetch scores data, displaying it in an organized format. The component will include options for filtering scores by participant, team, or date. Type safety will be enforced using TypeScript, reducing the likelihood of data-related errors. The action will focus on delivering clear and concise score information to users.&lt;br /&gt;
&lt;br /&gt;
=== View Reports Action ===&lt;br /&gt;
The `ViewReportsAction` will handle the retrieval and display of assignment reports. It will connect with the backend to pull comprehensive reports data, which will be shown in a user-friendly format with options for sorting and exporting. This action will provide users with valuable insights into assignment performance, feedback, and trends, leveraging the structured data from the backend API.&lt;br /&gt;
 &lt;br /&gt;
=== View Delayed Jobs Action ===&lt;br /&gt;
&lt;br /&gt;
The `ViewDelayedJobsAction` allows instructors to check for delayed background jobs related to the assignment, providing visibility into tasks that are pending or scheduled in the system. This feature helps track jobs like notifications and score calculations, ensuring transparency and easy monitoring.&lt;br /&gt;
&lt;br /&gt;
This structured approach will ensure a cohesive and efficient reimplementation of the &amp;quot;Etc&amp;quot; tab, enhancing both the usability and functionality of the Expertiza application. Each action and method is designed with a focus on modularity, data integrity, and user feedback, leveraging modern development practices with React and TypeScript.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
&lt;br /&gt;
Each React component will have a single responsibility, focusing on one specific part of the UI or functionality. For instance:&lt;br /&gt;
&lt;br /&gt;
* The AddParticipantButton component handles only the participant addition functionality.&lt;br /&gt;
* The CreateTeamsButton component manages the team creation process independently. This separation of concerns makes the code easier to understand, test, and maintain.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle ===&lt;br /&gt;
&lt;br /&gt;
Components and functions in this project will be designed to be open for extension but closed for modification. For example:&lt;br /&gt;
&lt;br /&gt;
* The EtcTab container component will be built to accommodate additional task buttons (e.g., new features) without modifying its core logic.&lt;br /&gt;
* New task buttons can be added as separate components, extending the UI without altering existing components.&lt;br /&gt;
&lt;br /&gt;
=== DRY Principle ===&lt;br /&gt;
&lt;br /&gt;
The DRY (Don’t Repeat Yourself) principle will be applied throughout this project to reduce code duplication and enhance maintainability. Reusable components like `TaskButton`, centralized API service functions, shared state via React’s Context API, and utility modules will ensure that common logic is abstracted and reused across the application. This approach will streamline the code, making it consistent, easier to update, and more scalable, while also improving readability and reducing the risk of errors. By following the DRY principle, we aim to create a clean and efficient codebase for the &amp;quot;Etc&amp;quot; tab interface.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
The development of the admin interface for the &amp;quot;Etc&amp;quot; tab relied on several established design principles, ensuring the code remains maintainable, efficient, and scalable. Here’s an overview of the key principles applied:&lt;br /&gt;
&lt;br /&gt;
* '''SOLID Principles :'''&lt;br /&gt;
   &lt;br /&gt;
'''Single Responsibility Principle (SRP) :''' Each system component was crafted with a focused purpose. For example, the EtcView component handles only the rendering of the &amp;quot;Etc&amp;quot; tab, simplifying maintenance and extension while avoiding unnecessary complications.&lt;br /&gt;
&lt;br /&gt;
'''Open/Closed Principle (OCP) :''' The design accommodates enhancements without modifying existing code. This adaptability allows new features, such as additional admin actions or tabs, to integrate seamlessly without destabilizing the system.&lt;br /&gt;
&lt;br /&gt;
'''Liskov Substitution Principle (LSP) :''' Components adhering to shared interfaces can be swapped easily, ensuring smooth functionality. For instance, any component that follows the tab rendering interface can replace another without disrupting operations, promoting code flexibility and reuse.&lt;br /&gt;
&lt;br /&gt;
'''Interface Segregation Principle (ISP) :''' Interfaces were streamlined to include only relevant methods, keeping them clear and easy to use. For example, state management for each tab is handled independently, allowing developers to work efficiently with focused methods.&lt;br /&gt;
&lt;br /&gt;
'''Dependency Inversion Principle (DIP) :''' Abstraction is prioritized, meaning components depend on generalized abstractions rather than specific implementations. This modular approach ensures changes to underlying systems, such as adopting a new state management tool, are straightforward and minimally disruptive.&lt;br /&gt;
&lt;br /&gt;
* '''DRY (Don’t Repeat Yourself) :'''&lt;br /&gt;
&lt;br /&gt;
Redundancy was avoided by creating reusable elements like buttons, icons, and tab structures. This approach allows updates to be implemented universally with minimal effort, saving time and reducing the likelihood of errors during future changes.&lt;br /&gt;
&lt;br /&gt;
* '''Separation of Concerns (SoC) :'''&lt;br /&gt;
&lt;br /&gt;
Functions for handling interactions, like tab switching, are distinct from the visual elements of the UI. This separation ensures UI components focus purely on presentation while state management and event handling remain in dedicated functions, simplifying debugging and future modifications.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Unit Testing :'''&lt;br /&gt;
&lt;br /&gt;
To ensure the &amp;quot;Etc&amp;quot; tab functions as intended, we conducted thorough testing at multiple levels. First, individual elements like buttons, icons, and text fields were tested to verify that they behaved correctly. For instance, we checked if buttons responded to clicks or if icons displayed without issues. This approach helped us confirm the reliability of each component before assembling the full interface.&lt;br /&gt;
&lt;br /&gt;
* '''Integration Testing :'''&lt;br /&gt;
&lt;br /&gt;
Next, we focused on how components worked together. Features such as adding participants, creating teams, and assigning reviewers were tested in combination to ensure seamless interaction. These tests confirmed that the features in the &amp;quot;Etc&amp;quot; tab work harmoniously and that data updates flow properly throughout the system.&lt;br /&gt;
&lt;br /&gt;
* '''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/ntummal3/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159949</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159949"/>
		<updated>2024-12-01T23:12:01Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Future Scope */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  // const [currentView, setCurrentView] = useState(&amp;quot;general&amp;quot;);&lt;br /&gt;
  // State to track the active tab&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
        {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* &amp;lt;Tabs&lt;br /&gt;
                id=&amp;quot;assignment-tab&amp;quot;&lt;br /&gt;
                activeKey={currentView}&lt;br /&gt;
                // onSelect={(k) =&amp;gt; setCurrentView(k)}&lt;br /&gt;
                className=&amp;quot;mb-3&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Rubrics&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Review Strategy&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Due Dates&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Badges&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Etc&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;EtcView /&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
            &amp;lt;/Tabs&amp;gt;  */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp; (&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          {/* &amp;lt;ScoreIcon/&amp;gt; */}&lt;br /&gt;
          &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
);&lt;br /&gt;
};&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
The reimplementation of the &amp;quot;Etc&amp;quot; tab will follow a systematic approach using ReactJS and TypeScript, emphasizing maintainability, scalability, and user experience. Each action in the &amp;quot;Etc&amp;quot; tab will be handled as distinct tasks, ensuring modularity and a clear separation of concerns. The following plan outlines the key actions and methods for the new interface:&lt;br /&gt;
&lt;br /&gt;
=== Add Participant Action ===&lt;br /&gt;
The `AddParticipantAction` component will be responsible for handling the addition of new participants. It will collect participant information through a form, perform front-end validations, and send a POST request to the backend API. TypeScript will ensure type safety, while error handling will manage invalid or missing input data. Upon successful addition, the new participant's details will be displayed in the UI, updated in real-time.&lt;br /&gt;
&lt;br /&gt;
=== Create Teams Action ===&lt;br /&gt;
The `CreateTeamsAction` will enable users to group participants into teams. This action will include a user-friendly interface for selecting participants and defining team sizes or names. The component will handle API requests to create and save team data. The state will be managed using React’s Context API, ensuring all updates reflect instantly across the interface. Type checking with TypeScript will prevent errors during team creation, and users will receive feedback on the success or failure of the action.&lt;br /&gt;
&lt;br /&gt;
=== Assign Reviewer Action ===&lt;br /&gt;
The `AssignReviewerAction` will facilitate the reviewer assignment process. It will provide a list of available reviewers and allow users to select and assign them to participants or teams. The action will validate reviewer availability and participant eligibility before sending the assignment request to the backend. Error handling will address conflicts, and the UI will display the updated reviewer assignments in a structured list or table.&lt;br /&gt;
&lt;br /&gt;
=== View Submissions Action ===&lt;br /&gt;
The `ViewSubmissionsAction` component will retrieve and display all submissions related to the assignment. It will fetch submission data from the backend using API calls and present it in a sortable and filterable table. Users can view individual submission details, and TypeScript interfaces will ensure consistent data structures. This action will improve user access to assignment submissions, providing a streamlined review experience.&lt;br /&gt;
&lt;br /&gt;
=== View Scores Action ===&lt;br /&gt;
The `ViewScoresAction` will offer a summary of assignment scores. It will make GET requests to the backend API to fetch scores data, displaying it in an organized format. The component will include options for filtering scores by participant, team, or date. Type safety will be enforced using TypeScript, reducing the likelihood of data-related errors. The action will focus on delivering clear and concise score information to users.&lt;br /&gt;
&lt;br /&gt;
=== View Reports Action ===&lt;br /&gt;
The `ViewReportsAction` will handle the retrieval and display of assignment reports. It will connect with the backend to pull comprehensive reports data, which will be shown in a user-friendly format with options for sorting and exporting. This action will provide users with valuable insights into assignment performance, feedback, and trends, leveraging the structured data from the backend API.&lt;br /&gt;
 &lt;br /&gt;
=== View Delayed Jobs Action ===&lt;br /&gt;
&lt;br /&gt;
The `ViewDelayedJobsAction` allows instructors to check for delayed background jobs related to the assignment, providing visibility into tasks that are pending or scheduled in the system. This feature helps track jobs like notifications and score calculations, ensuring transparency and easy monitoring.&lt;br /&gt;
&lt;br /&gt;
This structured approach will ensure a cohesive and efficient reimplementation of the &amp;quot;Etc&amp;quot; tab, enhancing both the usability and functionality of the Expertiza application. Each action and method is designed with a focus on modularity, data integrity, and user feedback, leveraging modern development practices with React and TypeScript.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
&lt;br /&gt;
Each React component will have a single responsibility, focusing on one specific part of the UI or functionality. For instance:&lt;br /&gt;
&lt;br /&gt;
* The AddParticipantButton component handles only the participant addition functionality.&lt;br /&gt;
* The CreateTeamsButton component manages the team creation process independently. This separation of concerns makes the code easier to understand, test, and maintain.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle ===&lt;br /&gt;
&lt;br /&gt;
Components and functions in this project will be designed to be open for extension but closed for modification. For example:&lt;br /&gt;
&lt;br /&gt;
* The EtcTab container component will be built to accommodate additional task buttons (e.g., new features) without modifying its core logic.&lt;br /&gt;
* New task buttons can be added as separate components, extending the UI without altering existing components.&lt;br /&gt;
&lt;br /&gt;
=== DRY Principle ===&lt;br /&gt;
&lt;br /&gt;
The DRY (Don’t Repeat Yourself) principle will be applied throughout this project to reduce code duplication and enhance maintainability. Reusable components like `TaskButton`, centralized API service functions, shared state via React’s Context API, and utility modules will ensure that common logic is abstracted and reused across the application. This approach will streamline the code, making it consistent, easier to update, and more scalable, while also improving readability and reducing the risk of errors. By following the DRY principle, we aim to create a clean and efficient codebase for the &amp;quot;Etc&amp;quot; tab interface.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* '''Enhanced Admin Controls and Customization :'''&lt;br /&gt;
&lt;br /&gt;
Admins can benefit significantly from enhanced customization and functionality. A promising upgrade would allow administrators to modify how tools and features are organized or displayed. For instance, giving admins the ability to set default layouts, prioritize sections based on importance, or fine-tune specific button functionalities would make the interface more adaptable to varying needs.&lt;br /&gt;
&lt;br /&gt;
* '''Advanced Data Management and Filtering :'''&lt;br /&gt;
&lt;br /&gt;
As data volumes grow, robust filtering and search tools become crucial. Enhancing these capabilities to include options like role-based filters, activity tracking, or status categorization could simplify the process of finding participants, teams, or submissions. Such advanced search tools would save time and improve efficiency, especially when managing large datasets.&lt;br /&gt;
&lt;br /&gt;
* '''Automated Tasks for Efficiency :'''&lt;br /&gt;
&lt;br /&gt;
Streamlining repetitive tasks through automation can also optimize administrative workflows. Automating processes such as assigning reviewers, sending timely reminders, or notifying admins of new submissions would minimize manual input while ensuring tasks are handled promptly.&lt;br /&gt;
&lt;br /&gt;
* '''Better Reporting and Insights :'''&lt;br /&gt;
&lt;br /&gt;
Lastly, expanding reporting tools with detailed analytics could provide invaluable insights. For example, reports on participant progress or submission timelines could aid in decision-making and system refinement, offering a clearer picture of overall performance and trends.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Unit Testing :'''&lt;br /&gt;
&lt;br /&gt;
To ensure the &amp;quot;Etc&amp;quot; tab functions as intended, we conducted thorough testing at multiple levels. First, individual elements like buttons, icons, and text fields were tested to verify that they behaved correctly. For instance, we checked if buttons responded to clicks or if icons displayed without issues. This approach helped us confirm the reliability of each component before assembling the full interface.&lt;br /&gt;
&lt;br /&gt;
* '''Integration Testing :'''&lt;br /&gt;
&lt;br /&gt;
Next, we focused on how components worked together. Features such as adding participants, creating teams, and assigning reviewers were tested in combination to ensure seamless interaction. These tests confirmed that the features in the &amp;quot;Etc&amp;quot; tab work harmoniously and that data updates flow properly throughout the system.&lt;br /&gt;
&lt;br /&gt;
* '''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/ntummal3/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159948</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159948"/>
		<updated>2024-12-01T23:05:17Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  // const [currentView, setCurrentView] = useState(&amp;quot;general&amp;quot;);&lt;br /&gt;
  // State to track the active tab&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
        {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* &amp;lt;Tabs&lt;br /&gt;
                id=&amp;quot;assignment-tab&amp;quot;&lt;br /&gt;
                activeKey={currentView}&lt;br /&gt;
                // onSelect={(k) =&amp;gt; setCurrentView(k)}&lt;br /&gt;
                className=&amp;quot;mb-3&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Rubrics&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Review Strategy&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Due Dates&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Badges&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Etc&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;EtcView /&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
            &amp;lt;/Tabs&amp;gt;  */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp; (&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          {/* &amp;lt;ScoreIcon/&amp;gt; */}&lt;br /&gt;
          &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
);&lt;br /&gt;
};&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
The reimplementation of the &amp;quot;Etc&amp;quot; tab will follow a systematic approach using ReactJS and TypeScript, emphasizing maintainability, scalability, and user experience. Each action in the &amp;quot;Etc&amp;quot; tab will be handled as distinct tasks, ensuring modularity and a clear separation of concerns. The following plan outlines the key actions and methods for the new interface:&lt;br /&gt;
&lt;br /&gt;
=== Add Participant Action ===&lt;br /&gt;
The `AddParticipantAction` component will be responsible for handling the addition of new participants. It will collect participant information through a form, perform front-end validations, and send a POST request to the backend API. TypeScript will ensure type safety, while error handling will manage invalid or missing input data. Upon successful addition, the new participant's details will be displayed in the UI, updated in real-time.&lt;br /&gt;
&lt;br /&gt;
=== Create Teams Action ===&lt;br /&gt;
The `CreateTeamsAction` will enable users to group participants into teams. This action will include a user-friendly interface for selecting participants and defining team sizes or names. The component will handle API requests to create and save team data. The state will be managed using React’s Context API, ensuring all updates reflect instantly across the interface. Type checking with TypeScript will prevent errors during team creation, and users will receive feedback on the success or failure of the action.&lt;br /&gt;
&lt;br /&gt;
=== Assign Reviewer Action ===&lt;br /&gt;
The `AssignReviewerAction` will facilitate the reviewer assignment process. It will provide a list of available reviewers and allow users to select and assign them to participants or teams. The action will validate reviewer availability and participant eligibility before sending the assignment request to the backend. Error handling will address conflicts, and the UI will display the updated reviewer assignments in a structured list or table.&lt;br /&gt;
&lt;br /&gt;
=== View Submissions Action ===&lt;br /&gt;
The `ViewSubmissionsAction` component will retrieve and display all submissions related to the assignment. It will fetch submission data from the backend using API calls and present it in a sortable and filterable table. Users can view individual submission details, and TypeScript interfaces will ensure consistent data structures. This action will improve user access to assignment submissions, providing a streamlined review experience.&lt;br /&gt;
&lt;br /&gt;
=== View Scores Action ===&lt;br /&gt;
The `ViewScoresAction` will offer a summary of assignment scores. It will make GET requests to the backend API to fetch scores data, displaying it in an organized format. The component will include options for filtering scores by participant, team, or date. Type safety will be enforced using TypeScript, reducing the likelihood of data-related errors. The action will focus on delivering clear and concise score information to users.&lt;br /&gt;
&lt;br /&gt;
=== View Reports Action ===&lt;br /&gt;
The `ViewReportsAction` will handle the retrieval and display of assignment reports. It will connect with the backend to pull comprehensive reports data, which will be shown in a user-friendly format with options for sorting and exporting. This action will provide users with valuable insights into assignment performance, feedback, and trends, leveraging the structured data from the backend API.&lt;br /&gt;
 &lt;br /&gt;
=== View Delayed Jobs Action ===&lt;br /&gt;
&lt;br /&gt;
The `ViewDelayedJobsAction` allows instructors to check for delayed background jobs related to the assignment, providing visibility into tasks that are pending or scheduled in the system. This feature helps track jobs like notifications and score calculations, ensuring transparency and easy monitoring.&lt;br /&gt;
&lt;br /&gt;
This structured approach will ensure a cohesive and efficient reimplementation of the &amp;quot;Etc&amp;quot; tab, enhancing both the usability and functionality of the Expertiza application. Each action and method is designed with a focus on modularity, data integrity, and user feedback, leveraging modern development practices with React and TypeScript.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
&lt;br /&gt;
Each React component will have a single responsibility, focusing on one specific part of the UI or functionality. For instance:&lt;br /&gt;
&lt;br /&gt;
* The AddParticipantButton component handles only the participant addition functionality.&lt;br /&gt;
* The CreateTeamsButton component manages the team creation process independently. This separation of concerns makes the code easier to understand, test, and maintain.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle ===&lt;br /&gt;
&lt;br /&gt;
Components and functions in this project will be designed to be open for extension but closed for modification. For example:&lt;br /&gt;
&lt;br /&gt;
* The EtcTab container component will be built to accommodate additional task buttons (e.g., new features) without modifying its core logic.&lt;br /&gt;
* New task buttons can be added as separate components, extending the UI without altering existing components.&lt;br /&gt;
&lt;br /&gt;
=== DRY Principle ===&lt;br /&gt;
&lt;br /&gt;
The DRY (Don’t Repeat Yourself) principle will be applied throughout this project to reduce code duplication and enhance maintainability. Reusable components like `TaskButton`, centralized API service functions, shared state via React’s Context API, and utility modules will ensure that common logic is abstracted and reused across the application. This approach will streamline the code, making it consistent, easier to update, and more scalable, while also improving readability and reducing the risk of errors. By following the DRY principle, we aim to create a clean and efficient codebase for the &amp;quot;Etc&amp;quot; tab interface.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Unit Testing :'''&lt;br /&gt;
&lt;br /&gt;
To ensure the &amp;quot;Etc&amp;quot; tab functions as intended, we conducted thorough testing at multiple levels. First, individual elements like buttons, icons, and text fields were tested to verify that they behaved correctly. For instance, we checked if buttons responded to clicks or if icons displayed without issues. This approach helped us confirm the reliability of each component before assembling the full interface.&lt;br /&gt;
&lt;br /&gt;
* '''Integration Testing :'''&lt;br /&gt;
&lt;br /&gt;
Next, we focused on how components worked together. Features such as adding participants, creating teams, and assigning reviewers were tested in combination to ensure seamless interaction. These tests confirmed that the features in the &amp;quot;Etc&amp;quot; tab work harmoniously and that data updates flow properly throughout the system.&lt;br /&gt;
&lt;br /&gt;
* '''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/ntummal3/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159947</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159947"/>
		<updated>2024-12-01T23:03:15Z</updated>

		<summary type="html">&lt;p&gt;Snukara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  // const [currentView, setCurrentView] = useState(&amp;quot;general&amp;quot;);&lt;br /&gt;
  // State to track the active tab&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
        {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* &amp;lt;Tabs&lt;br /&gt;
                id=&amp;quot;assignment-tab&amp;quot;&lt;br /&gt;
                activeKey={currentView}&lt;br /&gt;
                // onSelect={(k) =&amp;gt; setCurrentView(k)}&lt;br /&gt;
                className=&amp;quot;mb-3&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Rubrics&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Review Strategy&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Due Dates&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Badges&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Etc&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;EtcView /&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
            &amp;lt;/Tabs&amp;gt;  */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp; (&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          {/* &amp;lt;ScoreIcon/&amp;gt; */}&lt;br /&gt;
          &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
);&lt;br /&gt;
};&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
The reimplementation of the &amp;quot;Etc&amp;quot; tab will follow a systematic approach using ReactJS and TypeScript, emphasizing maintainability, scalability, and user experience. Each action in the &amp;quot;Etc&amp;quot; tab will be handled as distinct tasks, ensuring modularity and a clear separation of concerns. The following plan outlines the key actions and methods for the new interface:&lt;br /&gt;
&lt;br /&gt;
=== Add Participant Action ===&lt;br /&gt;
The `AddParticipantAction` component will be responsible for handling the addition of new participants. It will collect participant information through a form, perform front-end validations, and send a POST request to the backend API. TypeScript will ensure type safety, while error handling will manage invalid or missing input data. Upon successful addition, the new participant's details will be displayed in the UI, updated in real-time.&lt;br /&gt;
&lt;br /&gt;
=== Create Teams Action ===&lt;br /&gt;
The `CreateTeamsAction` will enable users to group participants into teams. This action will include a user-friendly interface for selecting participants and defining team sizes or names. The component will handle API requests to create and save team data. The state will be managed using React’s Context API, ensuring all updates reflect instantly across the interface. Type checking with TypeScript will prevent errors during team creation, and users will receive feedback on the success or failure of the action.&lt;br /&gt;
&lt;br /&gt;
=== Assign Reviewer Action ===&lt;br /&gt;
The `AssignReviewerAction` will facilitate the reviewer assignment process. It will provide a list of available reviewers and allow users to select and assign them to participants or teams. The action will validate reviewer availability and participant eligibility before sending the assignment request to the backend. Error handling will address conflicts, and the UI will display the updated reviewer assignments in a structured list or table.&lt;br /&gt;
&lt;br /&gt;
=== View Submissions Action ===&lt;br /&gt;
The `ViewSubmissionsAction` component will retrieve and display all submissions related to the assignment. It will fetch submission data from the backend using API calls and present it in a sortable and filterable table. Users can view individual submission details, and TypeScript interfaces will ensure consistent data structures. This action will improve user access to assignment submissions, providing a streamlined review experience.&lt;br /&gt;
&lt;br /&gt;
=== View Scores Action ===&lt;br /&gt;
The `ViewScoresAction` will offer a summary of assignment scores. It will make GET requests to the backend API to fetch scores data, displaying it in an organized format. The component will include options for filtering scores by participant, team, or date. Type safety will be enforced using TypeScript, reducing the likelihood of data-related errors. The action will focus on delivering clear and concise score information to users.&lt;br /&gt;
&lt;br /&gt;
=== View Reports Action ===&lt;br /&gt;
The `ViewReportsAction` will handle the retrieval and display of assignment reports. It will connect with the backend to pull comprehensive reports data, which will be shown in a user-friendly format with options for sorting and exporting. This action will provide users with valuable insights into assignment performance, feedback, and trends, leveraging the structured data from the backend API.&lt;br /&gt;
 &lt;br /&gt;
=== View Delayed Jobs Action ===&lt;br /&gt;
&lt;br /&gt;
The `ViewDelayedJobsAction` allows instructors to check for delayed background jobs related to the assignment, providing visibility into tasks that are pending or scheduled in the system. This feature helps track jobs like notifications and score calculations, ensuring transparency and easy monitoring.&lt;br /&gt;
&lt;br /&gt;
This structured approach will ensure a cohesive and efficient reimplementation of the &amp;quot;Etc&amp;quot; tab, enhancing both the usability and functionality of the Expertiza application. Each action and method is designed with a focus on modularity, data integrity, and user feedback, leveraging modern development practices with React and TypeScript.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
&lt;br /&gt;
Each React component will have a single responsibility, focusing on one specific part of the UI or functionality. For instance:&lt;br /&gt;
&lt;br /&gt;
* The AddParticipantButton component handles only the participant addition functionality.&lt;br /&gt;
* The CreateTeamsButton component manages the team creation process independently. This separation of concerns makes the code easier to understand, test, and maintain.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle ===&lt;br /&gt;
&lt;br /&gt;
Components and functions in this project will be designed to be open for extension but closed for modification. For example:&lt;br /&gt;
&lt;br /&gt;
* The EtcTab container component will be built to accommodate additional task buttons (e.g., new features) without modifying its core logic.&lt;br /&gt;
* New task buttons can be added as separate components, extending the UI without altering existing components.&lt;br /&gt;
&lt;br /&gt;
=== DRY Principle ===&lt;br /&gt;
&lt;br /&gt;
The DRY (Don’t Repeat Yourself) principle will be applied throughout this project to reduce code duplication and enhance maintainability. Reusable components like `TaskButton`, centralized API service functions, shared state via React’s Context API, and utility modules will ensure that common logic is abstracted and reused across the application. This approach will streamline the code, making it consistent, easier to update, and more scalable, while also improving readability and reducing the risk of errors. By following the DRY principle, we aim to create a clean and efficient codebase for the &amp;quot;Etc&amp;quot; tab interface.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Usage of Design Principles ==&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
'''Unit Testing :'''&lt;br /&gt;
&lt;br /&gt;
To ensure the &amp;quot;Etc&amp;quot; tab functions as intended, we conducted thorough testing at multiple levels. First, individual elements like buttons, icons, and text fields were tested to verify that they behaved correctly. For instance, we checked if buttons responded to clicks or if icons displayed without issues. This approach helped us confirm the reliability of each component before assembling the full interface.&lt;br /&gt;
&lt;br /&gt;
'''Integration Testing :'''&lt;br /&gt;
&lt;br /&gt;
Next, we focused on how components worked together. Features such as adding participants, creating teams, and assigning reviewers were tested in combination to ensure seamless interaction. These tests confirmed that the features in the &amp;quot;Etc&amp;quot; tab work harmoniously and that data updates flow properly throughout the system.&lt;br /&gt;
&lt;br /&gt;
'''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/ntummal3/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159946</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159946"/>
		<updated>2024-12-01T23:00:27Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  // const [currentView, setCurrentView] = useState(&amp;quot;general&amp;quot;);&lt;br /&gt;
  // State to track the active tab&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
        {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* &amp;lt;Tabs&lt;br /&gt;
                id=&amp;quot;assignment-tab&amp;quot;&lt;br /&gt;
                activeKey={currentView}&lt;br /&gt;
                // onSelect={(k) =&amp;gt; setCurrentView(k)}&lt;br /&gt;
                className=&amp;quot;mb-3&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Rubrics&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Review Strategy&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Due Dates&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Badges&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Etc&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;EtcView /&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
            &amp;lt;/Tabs&amp;gt;  */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp; (&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          {/* &amp;lt;ScoreIcon/&amp;gt; */}&lt;br /&gt;
          &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
);&lt;br /&gt;
};&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
The reimplementation of the &amp;quot;Etc&amp;quot; tab will follow a systematic approach using ReactJS and TypeScript, emphasizing maintainability, scalability, and user experience. Each action in the &amp;quot;Etc&amp;quot; tab will be handled as distinct tasks, ensuring modularity and a clear separation of concerns. The following plan outlines the key actions and methods for the new interface:&lt;br /&gt;
&lt;br /&gt;
=== Add Participant Action ===&lt;br /&gt;
The `AddParticipantAction` component will be responsible for handling the addition of new participants. It will collect participant information through a form, perform front-end validations, and send a POST request to the backend API. TypeScript will ensure type safety, while error handling will manage invalid or missing input data. Upon successful addition, the new participant's details will be displayed in the UI, updated in real-time.&lt;br /&gt;
&lt;br /&gt;
=== Create Teams Action ===&lt;br /&gt;
The `CreateTeamsAction` will enable users to group participants into teams. This action will include a user-friendly interface for selecting participants and defining team sizes or names. The component will handle API requests to create and save team data. The state will be managed using React’s Context API, ensuring all updates reflect instantly across the interface. Type checking with TypeScript will prevent errors during team creation, and users will receive feedback on the success or failure of the action.&lt;br /&gt;
&lt;br /&gt;
=== Assign Reviewer Action ===&lt;br /&gt;
The `AssignReviewerAction` will facilitate the reviewer assignment process. It will provide a list of available reviewers and allow users to select and assign them to participants or teams. The action will validate reviewer availability and participant eligibility before sending the assignment request to the backend. Error handling will address conflicts, and the UI will display the updated reviewer assignments in a structured list or table.&lt;br /&gt;
&lt;br /&gt;
=== View Submissions Action ===&lt;br /&gt;
The `ViewSubmissionsAction` component will retrieve and display all submissions related to the assignment. It will fetch submission data from the backend using API calls and present it in a sortable and filterable table. Users can view individual submission details, and TypeScript interfaces will ensure consistent data structures. This action will improve user access to assignment submissions, providing a streamlined review experience.&lt;br /&gt;
&lt;br /&gt;
=== View Scores Action ===&lt;br /&gt;
The `ViewScoresAction` will offer a summary of assignment scores. It will make GET requests to the backend API to fetch scores data, displaying it in an organized format. The component will include options for filtering scores by participant, team, or date. Type safety will be enforced using TypeScript, reducing the likelihood of data-related errors. The action will focus on delivering clear and concise score information to users.&lt;br /&gt;
&lt;br /&gt;
=== View Reports Action ===&lt;br /&gt;
The `ViewReportsAction` will handle the retrieval and display of assignment reports. It will connect with the backend to pull comprehensive reports data, which will be shown in a user-friendly format with options for sorting and exporting. This action will provide users with valuable insights into assignment performance, feedback, and trends, leveraging the structured data from the backend API.&lt;br /&gt;
 &lt;br /&gt;
=== View Delayed Jobs Action ===&lt;br /&gt;
&lt;br /&gt;
The `ViewDelayedJobsAction` allows instructors to check for delayed background jobs related to the assignment, providing visibility into tasks that are pending or scheduled in the system. This feature helps track jobs like notifications and score calculations, ensuring transparency and easy monitoring.&lt;br /&gt;
&lt;br /&gt;
This structured approach will ensure a cohesive and efficient reimplementation of the &amp;quot;Etc&amp;quot; tab, enhancing both the usability and functionality of the Expertiza application. Each action and method is designed with a focus on modularity, data integrity, and user feedback, leveraging modern development practices with React and TypeScript.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
&lt;br /&gt;
Each React component will have a single responsibility, focusing on one specific part of the UI or functionality. For instance:&lt;br /&gt;
&lt;br /&gt;
* The AddParticipantButton component handles only the participant addition functionality.&lt;br /&gt;
* The CreateTeamsButton component manages the team creation process independently. This separation of concerns makes the code easier to understand, test, and maintain.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle ===&lt;br /&gt;
&lt;br /&gt;
Components and functions in this project will be designed to be open for extension but closed for modification. For example:&lt;br /&gt;
&lt;br /&gt;
* The EtcTab container component will be built to accommodate additional task buttons (e.g., new features) without modifying its core logic.&lt;br /&gt;
* New task buttons can be added as separate components, extending the UI without altering existing components.&lt;br /&gt;
&lt;br /&gt;
=== DRY Principle ===&lt;br /&gt;
&lt;br /&gt;
The DRY (Don’t Repeat Yourself) principle will be applied throughout this project to reduce code duplication and enhance maintainability. Reusable components like `TaskButton`, centralized API service functions, shared state via React’s Context API, and utility modules will ensure that common logic is abstracted and reused across the application. This approach will streamline the code, making it consistent, easier to update, and more scalable, while also improving readability and reducing the risk of errors. By following the DRY principle, we aim to create a clean and efficient codebase for the &amp;quot;Etc&amp;quot; tab interface.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
'''Unit Testing :'''&lt;br /&gt;
&lt;br /&gt;
To ensure the &amp;quot;Etc&amp;quot; tab functions as intended, we conducted thorough testing at multiple levels. First, individual elements like buttons, icons, and text fields were tested to verify that they behaved correctly. For instance, we checked if buttons responded to clicks or if icons displayed without issues. This approach helped us confirm the reliability of each component before assembling the full interface.&lt;br /&gt;
&lt;br /&gt;
'''Integration Testing :'''&lt;br /&gt;
&lt;br /&gt;
Next, we focused on how components worked together. Features such as adding participants, creating teams, and assigning reviewers were tested in combination to ensure seamless interaction. These tests confirmed that the features in the &amp;quot;Etc&amp;quot; tab work harmoniously and that data updates flow properly throughout the system.&lt;br /&gt;
&lt;br /&gt;
'''Responsive Design Testing :'''&lt;br /&gt;
&lt;br /&gt;
Responsive design was also a priority. We tested the interface across various devices, including smartphones, tablets, and desktops, to ensure the layout adjusted smoothly to different screen sizes. These tests guaranteed that the application remained user-friendly and visually intact, regardless of the device used.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/ntummal3/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159945</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159945"/>
		<updated>2024-12-01T22:54:27Z</updated>

		<summary type="html">&lt;p&gt;Snukara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  // const [currentView, setCurrentView] = useState(&amp;quot;general&amp;quot;);&lt;br /&gt;
  // State to track the active tab&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
        {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* &amp;lt;Tabs&lt;br /&gt;
                id=&amp;quot;assignment-tab&amp;quot;&lt;br /&gt;
                activeKey={currentView}&lt;br /&gt;
                // onSelect={(k) =&amp;gt; setCurrentView(k)}&lt;br /&gt;
                className=&amp;quot;mb-3&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Rubrics&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Review Strategy&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Due Dates&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Badges&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Etc&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;EtcView /&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
            &amp;lt;/Tabs&amp;gt;  */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp; (&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          {/* &amp;lt;ScoreIcon/&amp;gt; */}&lt;br /&gt;
          &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
);&lt;br /&gt;
};&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
The reimplementation of the &amp;quot;Etc&amp;quot; tab will follow a systematic approach using ReactJS and TypeScript, emphasizing maintainability, scalability, and user experience. Each action in the &amp;quot;Etc&amp;quot; tab will be handled as distinct tasks, ensuring modularity and a clear separation of concerns. The following plan outlines the key actions and methods for the new interface:&lt;br /&gt;
&lt;br /&gt;
=== Add Participant Action ===&lt;br /&gt;
The `AddParticipantAction` component will be responsible for handling the addition of new participants. It will collect participant information through a form, perform front-end validations, and send a POST request to the backend API. TypeScript will ensure type safety, while error handling will manage invalid or missing input data. Upon successful addition, the new participant's details will be displayed in the UI, updated in real-time.&lt;br /&gt;
&lt;br /&gt;
=== Create Teams Action ===&lt;br /&gt;
The `CreateTeamsAction` will enable users to group participants into teams. This action will include a user-friendly interface for selecting participants and defining team sizes or names. The component will handle API requests to create and save team data. The state will be managed using React’s Context API, ensuring all updates reflect instantly across the interface. Type checking with TypeScript will prevent errors during team creation, and users will receive feedback on the success or failure of the action.&lt;br /&gt;
&lt;br /&gt;
=== Assign Reviewer Action ===&lt;br /&gt;
The `AssignReviewerAction` will facilitate the reviewer assignment process. It will provide a list of available reviewers and allow users to select and assign them to participants or teams. The action will validate reviewer availability and participant eligibility before sending the assignment request to the backend. Error handling will address conflicts, and the UI will display the updated reviewer assignments in a structured list or table.&lt;br /&gt;
&lt;br /&gt;
=== View Submissions Action ===&lt;br /&gt;
The `ViewSubmissionsAction` component will retrieve and display all submissions related to the assignment. It will fetch submission data from the backend using API calls and present it in a sortable and filterable table. Users can view individual submission details, and TypeScript interfaces will ensure consistent data structures. This action will improve user access to assignment submissions, providing a streamlined review experience.&lt;br /&gt;
&lt;br /&gt;
=== View Scores Action ===&lt;br /&gt;
The `ViewScoresAction` will offer a summary of assignment scores. It will make GET requests to the backend API to fetch scores data, displaying it in an organized format. The component will include options for filtering scores by participant, team, or date. Type safety will be enforced using TypeScript, reducing the likelihood of data-related errors. The action will focus on delivering clear and concise score information to users.&lt;br /&gt;
&lt;br /&gt;
=== View Reports Action ===&lt;br /&gt;
The `ViewReportsAction` will handle the retrieval and display of assignment reports. It will connect with the backend to pull comprehensive reports data, which will be shown in a user-friendly format with options for sorting and exporting. This action will provide users with valuable insights into assignment performance, feedback, and trends, leveraging the structured data from the backend API.&lt;br /&gt;
 &lt;br /&gt;
=== View Delayed Jobs Action ===&lt;br /&gt;
&lt;br /&gt;
The `ViewDelayedJobsAction` allows instructors to check for delayed background jobs related to the assignment, providing visibility into tasks that are pending or scheduled in the system. This feature helps track jobs like notifications and score calculations, ensuring transparency and easy monitoring.&lt;br /&gt;
&lt;br /&gt;
This structured approach will ensure a cohesive and efficient reimplementation of the &amp;quot;Etc&amp;quot; tab, enhancing both the usability and functionality of the Expertiza application. Each action and method is designed with a focus on modularity, data integrity, and user feedback, leveraging modern development practices with React and TypeScript.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
&lt;br /&gt;
Each React component will have a single responsibility, focusing on one specific part of the UI or functionality. For instance:&lt;br /&gt;
&lt;br /&gt;
* The AddParticipantButton component handles only the participant addition functionality.&lt;br /&gt;
* The CreateTeamsButton component manages the team creation process independently. This separation of concerns makes the code easier to understand, test, and maintain.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle ===&lt;br /&gt;
&lt;br /&gt;
Components and functions in this project will be designed to be open for extension but closed for modification. For example:&lt;br /&gt;
&lt;br /&gt;
* The EtcTab container component will be built to accommodate additional task buttons (e.g., new features) without modifying its core logic.&lt;br /&gt;
* New task buttons can be added as separate components, extending the UI without altering existing components.&lt;br /&gt;
&lt;br /&gt;
=== DRY Principle ===&lt;br /&gt;
&lt;br /&gt;
The DRY (Don’t Repeat Yourself) principle will be applied throughout this project to reduce code duplication and enhance maintainability. Reusable components like `TaskButton`, centralized API service functions, shared state via React’s Context API, and utility modules will ensure that common logic is abstracted and reused across the application. This approach will streamline the code, making it consistent, easier to update, and more scalable, while also improving readability and reducing the risk of errors. By following the DRY principle, we aim to create a clean and efficient codebase for the &amp;quot;Etc&amp;quot; tab interface.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/ntummal3/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159944</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159944"/>
		<updated>2024-12-01T22:50:28Z</updated>

		<summary type="html">&lt;p&gt;Snukara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  // const [currentView, setCurrentView] = useState(&amp;quot;general&amp;quot;);&lt;br /&gt;
  // State to track the active tab&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
        {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* &amp;lt;Tabs&lt;br /&gt;
                id=&amp;quot;assignment-tab&amp;quot;&lt;br /&gt;
                activeKey={currentView}&lt;br /&gt;
                // onSelect={(k) =&amp;gt; setCurrentView(k)}&lt;br /&gt;
                className=&amp;quot;mb-3&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Rubrics&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Review Strategy&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Due Dates&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Badges&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Etc&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;EtcView /&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
            &amp;lt;/Tabs&amp;gt;  */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp; (&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          {/* &amp;lt;ScoreIcon/&amp;gt; */}&lt;br /&gt;
          &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
);&lt;br /&gt;
};&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
The reimplementation of the &amp;quot;Etc&amp;quot; tab will follow a systematic approach using ReactJS and TypeScript, emphasizing maintainability, scalability, and user experience. Each action in the &amp;quot;Etc&amp;quot; tab will be handled as distinct tasks, ensuring modularity and a clear separation of concerns. The following plan outlines the key actions and methods for the new interface:&lt;br /&gt;
&lt;br /&gt;
=== Add Participant Action ===&lt;br /&gt;
The `AddParticipantAction` component will be responsible for handling the addition of new participants. It will collect participant information through a form, perform front-end validations, and send a POST request to the backend API. TypeScript will ensure type safety, while error handling will manage invalid or missing input data. Upon successful addition, the new participant's details will be displayed in the UI, updated in real-time.&lt;br /&gt;
&lt;br /&gt;
=== Create Teams Action ===&lt;br /&gt;
The `CreateTeamsAction` will enable users to group participants into teams. This action will include a user-friendly interface for selecting participants and defining team sizes or names. The component will handle API requests to create and save team data. The state will be managed using React’s Context API, ensuring all updates reflect instantly across the interface. Type checking with TypeScript will prevent errors during team creation, and users will receive feedback on the success or failure of the action.&lt;br /&gt;
&lt;br /&gt;
=== Assign Reviewer Action ===&lt;br /&gt;
The `AssignReviewerAction` will facilitate the reviewer assignment process. It will provide a list of available reviewers and allow users to select and assign them to participants or teams. The action will validate reviewer availability and participant eligibility before sending the assignment request to the backend. Error handling will address conflicts, and the UI will display the updated reviewer assignments in a structured list or table.&lt;br /&gt;
&lt;br /&gt;
=== View Submissions Action ===&lt;br /&gt;
The `ViewSubmissionsAction` component will retrieve and display all submissions related to the assignment. It will fetch submission data from the backend using API calls and present it in a sortable and filterable table. Users can view individual submission details, and TypeScript interfaces will ensure consistent data structures. This action will improve user access to assignment submissions, providing a streamlined review experience.&lt;br /&gt;
&lt;br /&gt;
=== View Scores Action ===&lt;br /&gt;
The `ViewScoresAction` will offer a summary of assignment scores. It will make GET requests to the backend API to fetch scores data, displaying it in an organized format. The component will include options for filtering scores by participant, team, or date. Type safety will be enforced using TypeScript, reducing the likelihood of data-related errors. The action will focus on delivering clear and concise score information to users.&lt;br /&gt;
&lt;br /&gt;
=== View Reports Action ===&lt;br /&gt;
The `ViewReportsAction` will handle the retrieval and display of assignment reports. It will connect with the backend to pull comprehensive reports data, which will be shown in a user-friendly format with options for sorting and exporting. This action will provide users with valuable insights into assignment performance, feedback, and trends, leveraging the structured data from the backend API.&lt;br /&gt;
 &lt;br /&gt;
=== View Delayed Jobs Action ===&lt;br /&gt;
&lt;br /&gt;
The `ViewDelayedJobsAction` allows instructors to check for delayed background jobs related to the assignment, providing visibility into tasks that are pending or scheduled in the system. This feature helps track jobs like notifications and score calculations, ensuring transparency and easy monitoring.&lt;br /&gt;
&lt;br /&gt;
This structured approach will ensure a cohesive and efficient reimplementation of the &amp;quot;Etc&amp;quot; tab, enhancing both the usability and functionality of the Expertiza application. Each action and method is designed with a focus on modularity, data integrity, and user feedback, leveraging modern development practices with React and TypeScript.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
&lt;br /&gt;
Each React component will have a single responsibility, focusing on one specific part of the UI or functionality. For instance:&lt;br /&gt;
&lt;br /&gt;
* The AddParticipantButton component handles only the participant addition functionality.&lt;br /&gt;
* The CreateTeamsButton component manages the team creation process independently. This separation of concerns makes the code easier to understand, test, and maintain.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle ===&lt;br /&gt;
&lt;br /&gt;
Components and functions in this project will be designed to be open for extension but closed for modification. For example:&lt;br /&gt;
&lt;br /&gt;
* The EtcTab container component will be built to accommodate additional task buttons (e.g., new features) without modifying its core logic.&lt;br /&gt;
* New task buttons can be added as separate components, extending the UI without altering existing components.&lt;br /&gt;
&lt;br /&gt;
=== DRY Principle ===&lt;br /&gt;
&lt;br /&gt;
The DRY (Don’t Repeat Yourself) principle will be applied throughout this project to reduce code duplication and enhance maintainability. Reusable components like `TaskButton`, centralized API service functions, shared state via React’s Context API, and utility modules will ensure that common logic is abstracted and reused across the application. This approach will streamline the code, making it consistent, easier to update, and more scalable, while also improving readability and reducing the risk of errors. By following the DRY principle, we aim to create a clean and efficient codebase for the &amp;quot;Etc&amp;quot; tab interface.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Github repository ==&lt;br /&gt;
&lt;br /&gt;
Here is the link to the front-end reimplementation:&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Front end:''' &amp;lt;/br&amp;gt; '''github''' [https://github.com/ntummal3/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159943</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159943"/>
		<updated>2024-12-01T22:48:07Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Conclusion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  // const [currentView, setCurrentView] = useState(&amp;quot;general&amp;quot;);&lt;br /&gt;
  // State to track the active tab&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
        {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* &amp;lt;Tabs&lt;br /&gt;
                id=&amp;quot;assignment-tab&amp;quot;&lt;br /&gt;
                activeKey={currentView}&lt;br /&gt;
                // onSelect={(k) =&amp;gt; setCurrentView(k)}&lt;br /&gt;
                className=&amp;quot;mb-3&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Rubrics&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Review Strategy&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Due Dates&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Badges&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Etc&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;EtcView /&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
            &amp;lt;/Tabs&amp;gt;  */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp; (&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          {/* &amp;lt;ScoreIcon/&amp;gt; */}&lt;br /&gt;
          &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
);&lt;br /&gt;
};&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
The reimplementation of the &amp;quot;Etc&amp;quot; tab will follow a systematic approach using ReactJS and TypeScript, emphasizing maintainability, scalability, and user experience. Each action in the &amp;quot;Etc&amp;quot; tab will be handled as distinct tasks, ensuring modularity and a clear separation of concerns. The following plan outlines the key actions and methods for the new interface:&lt;br /&gt;
&lt;br /&gt;
=== Add Participant Action ===&lt;br /&gt;
The `AddParticipantAction` component will be responsible for handling the addition of new participants. It will collect participant information through a form, perform front-end validations, and send a POST request to the backend API. TypeScript will ensure type safety, while error handling will manage invalid or missing input data. Upon successful addition, the new participant's details will be displayed in the UI, updated in real-time.&lt;br /&gt;
&lt;br /&gt;
=== Create Teams Action ===&lt;br /&gt;
The `CreateTeamsAction` will enable users to group participants into teams. This action will include a user-friendly interface for selecting participants and defining team sizes or names. The component will handle API requests to create and save team data. The state will be managed using React’s Context API, ensuring all updates reflect instantly across the interface. Type checking with TypeScript will prevent errors during team creation, and users will receive feedback on the success or failure of the action.&lt;br /&gt;
&lt;br /&gt;
=== Assign Reviewer Action ===&lt;br /&gt;
The `AssignReviewerAction` will facilitate the reviewer assignment process. It will provide a list of available reviewers and allow users to select and assign them to participants or teams. The action will validate reviewer availability and participant eligibility before sending the assignment request to the backend. Error handling will address conflicts, and the UI will display the updated reviewer assignments in a structured list or table.&lt;br /&gt;
&lt;br /&gt;
=== View Submissions Action ===&lt;br /&gt;
The `ViewSubmissionsAction` component will retrieve and display all submissions related to the assignment. It will fetch submission data from the backend using API calls and present it in a sortable and filterable table. Users can view individual submission details, and TypeScript interfaces will ensure consistent data structures. This action will improve user access to assignment submissions, providing a streamlined review experience.&lt;br /&gt;
&lt;br /&gt;
=== View Scores Action ===&lt;br /&gt;
The `ViewScoresAction` will offer a summary of assignment scores. It will make GET requests to the backend API to fetch scores data, displaying it in an organized format. The component will include options for filtering scores by participant, team, or date. Type safety will be enforced using TypeScript, reducing the likelihood of data-related errors. The action will focus on delivering clear and concise score information to users.&lt;br /&gt;
&lt;br /&gt;
=== View Reports Action ===&lt;br /&gt;
The `ViewReportsAction` will handle the retrieval and display of assignment reports. It will connect with the backend to pull comprehensive reports data, which will be shown in a user-friendly format with options for sorting and exporting. This action will provide users with valuable insights into assignment performance, feedback, and trends, leveraging the structured data from the backend API.&lt;br /&gt;
 &lt;br /&gt;
=== View Delayed Jobs Action ===&lt;br /&gt;
&lt;br /&gt;
The `ViewDelayedJobsAction` allows instructors to check for delayed background jobs related to the assignment, providing visibility into tasks that are pending or scheduled in the system. This feature helps track jobs like notifications and score calculations, ensuring transparency and easy monitoring.&lt;br /&gt;
&lt;br /&gt;
This structured approach will ensure a cohesive and efficient reimplementation of the &amp;quot;Etc&amp;quot; tab, enhancing both the usability and functionality of the Expertiza application. Each action and method is designed with a focus on modularity, data integrity, and user feedback, leveraging modern development practices with React and TypeScript.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
&lt;br /&gt;
Each React component will have a single responsibility, focusing on one specific part of the UI or functionality. For instance:&lt;br /&gt;
&lt;br /&gt;
* The AddParticipantButton component handles only the participant addition functionality.&lt;br /&gt;
* The CreateTeamsButton component manages the team creation process independently. This separation of concerns makes the code easier to understand, test, and maintain.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle ===&lt;br /&gt;
&lt;br /&gt;
Components and functions in this project will be designed to be open for extension but closed for modification. For example:&lt;br /&gt;
&lt;br /&gt;
* The EtcTab container component will be built to accommodate additional task buttons (e.g., new features) without modifying its core logic.&lt;br /&gt;
* New task buttons can be added as separate components, extending the UI without altering existing components.&lt;br /&gt;
&lt;br /&gt;
=== DRY Principle ===&lt;br /&gt;
&lt;br /&gt;
The DRY (Don’t Repeat Yourself) principle will be applied throughout this project to reduce code duplication and enhance maintainability. Reusable components like `TaskButton`, centralized API service functions, shared state via React’s Context API, and utility modules will ensure that common logic is abstracted and reused across the application. This approach will streamline the code, making it consistent, easier to update, and more scalable, while also improving readability and reducing the risk of errors. By following the DRY principle, we aim to create a clean and efficient codebase for the &amp;quot;Etc&amp;quot; tab interface.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
In conclusion, the redesign of the &amp;quot;Etc&amp;quot; tab introduces meaningful improvements to the user experience on Expertiza's Assignment Edit page. By adopting React and TypeScript, the updated design simplifies key administrative processes like managing participants, creating teams, and assigning reviewers. Its modular, component-driven structure makes the system easier to maintain and scale, ensuring that future updates can be implemented with minimal disruption.&lt;br /&gt;
&lt;br /&gt;
The emphasis on responsive design and performance optimizations ensures the platform works smoothly across various devices, offering users a consistent and efficient way to manage assignments. Looking ahead, this flexible framework paves the way for adding new features and enhancements based on user feedback. Potential upgrades might include advanced reporting tools, more customization options, or even interactive features that make managing assignments even more intuitive. With ongoing iteration, this redesign helps keep Expertiza's interface both modern and responsive to the needs of its users.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159942</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159942"/>
		<updated>2024-12-01T22:32:29Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Code Snippets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet we described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  // const [currentView, setCurrentView] = useState(&amp;quot;general&amp;quot;);&lt;br /&gt;
  // State to track the active tab&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
        {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* &amp;lt;Tabs&lt;br /&gt;
                id=&amp;quot;assignment-tab&amp;quot;&lt;br /&gt;
                activeKey={currentView}&lt;br /&gt;
                // onSelect={(k) =&amp;gt; setCurrentView(k)}&lt;br /&gt;
                className=&amp;quot;mb-3&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Rubrics&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Review Strategy&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Due Dates&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Badges&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Etc&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;EtcView /&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
            &amp;lt;/Tabs&amp;gt;  */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp; (&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          {/* &amp;lt;ScoreIcon/&amp;gt; */}&lt;br /&gt;
          &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
);&lt;br /&gt;
};&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
The reimplementation of the &amp;quot;Etc&amp;quot; tab will follow a systematic approach using ReactJS and TypeScript, emphasizing maintainability, scalability, and user experience. Each action in the &amp;quot;Etc&amp;quot; tab will be handled as distinct tasks, ensuring modularity and a clear separation of concerns. The following plan outlines the key actions and methods for the new interface:&lt;br /&gt;
&lt;br /&gt;
=== Add Participant Action ===&lt;br /&gt;
The `AddParticipantAction` component will be responsible for handling the addition of new participants. It will collect participant information through a form, perform front-end validations, and send a POST request to the backend API. TypeScript will ensure type safety, while error handling will manage invalid or missing input data. Upon successful addition, the new participant's details will be displayed in the UI, updated in real-time.&lt;br /&gt;
&lt;br /&gt;
=== Create Teams Action ===&lt;br /&gt;
The `CreateTeamsAction` will enable users to group participants into teams. This action will include a user-friendly interface for selecting participants and defining team sizes or names. The component will handle API requests to create and save team data. The state will be managed using React’s Context API, ensuring all updates reflect instantly across the interface. Type checking with TypeScript will prevent errors during team creation, and users will receive feedback on the success or failure of the action.&lt;br /&gt;
&lt;br /&gt;
=== Assign Reviewer Action ===&lt;br /&gt;
The `AssignReviewerAction` will facilitate the reviewer assignment process. It will provide a list of available reviewers and allow users to select and assign them to participants or teams. The action will validate reviewer availability and participant eligibility before sending the assignment request to the backend. Error handling will address conflicts, and the UI will display the updated reviewer assignments in a structured list or table.&lt;br /&gt;
&lt;br /&gt;
=== View Submissions Action ===&lt;br /&gt;
The `ViewSubmissionsAction` component will retrieve and display all submissions related to the assignment. It will fetch submission data from the backend using API calls and present it in a sortable and filterable table. Users can view individual submission details, and TypeScript interfaces will ensure consistent data structures. This action will improve user access to assignment submissions, providing a streamlined review experience.&lt;br /&gt;
&lt;br /&gt;
=== View Scores Action ===&lt;br /&gt;
The `ViewScoresAction` will offer a summary of assignment scores. It will make GET requests to the backend API to fetch scores data, displaying it in an organized format. The component will include options for filtering scores by participant, team, or date. Type safety will be enforced using TypeScript, reducing the likelihood of data-related errors. The action will focus on delivering clear and concise score information to users.&lt;br /&gt;
&lt;br /&gt;
=== View Reports Action ===&lt;br /&gt;
The `ViewReportsAction` will handle the retrieval and display of assignment reports. It will connect with the backend to pull comprehensive reports data, which will be shown in a user-friendly format with options for sorting and exporting. This action will provide users with valuable insights into assignment performance, feedback, and trends, leveraging the structured data from the backend API.&lt;br /&gt;
 &lt;br /&gt;
=== View Delayed Jobs Action ===&lt;br /&gt;
&lt;br /&gt;
The `ViewDelayedJobsAction` allows instructors to check for delayed background jobs related to the assignment, providing visibility into tasks that are pending or scheduled in the system. This feature helps track jobs like notifications and score calculations, ensuring transparency and easy monitoring.&lt;br /&gt;
&lt;br /&gt;
This structured approach will ensure a cohesive and efficient reimplementation of the &amp;quot;Etc&amp;quot; tab, enhancing both the usability and functionality of the Expertiza application. Each action and method is designed with a focus on modularity, data integrity, and user feedback, leveraging modern development practices with React and TypeScript.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
&lt;br /&gt;
Each React component will have a single responsibility, focusing on one specific part of the UI or functionality. For instance:&lt;br /&gt;
&lt;br /&gt;
* The AddParticipantButton component handles only the participant addition functionality.&lt;br /&gt;
* The CreateTeamsButton component manages the team creation process independently. This separation of concerns makes the code easier to understand, test, and maintain.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle ===&lt;br /&gt;
&lt;br /&gt;
Components and functions in this project will be designed to be open for extension but closed for modification. For example:&lt;br /&gt;
&lt;br /&gt;
* The EtcTab container component will be built to accommodate additional task buttons (e.g., new features) without modifying its core logic.&lt;br /&gt;
* New task buttons can be added as separate components, extending the UI without altering existing components.&lt;br /&gt;
&lt;br /&gt;
=== DRY Principle ===&lt;br /&gt;
&lt;br /&gt;
The DRY (Don’t Repeat Yourself) principle will be applied throughout this project to reduce code duplication and enhance maintainability. Reusable components like `TaskButton`, centralized API service functions, shared state via React’s Context API, and utility modules will ensure that common logic is abstracted and reused across the application. This approach will streamline the code, making it consistent, easier to update, and more scalable, while also improving readability and reducing the risk of errors. By following the DRY principle, we aim to create a clean and efficient codebase for the &amp;quot;Etc&amp;quot; tab interface.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
This design document introduces a step-by-step plan for revamping the &amp;quot;Etc&amp;quot; tab on Expertiza's Assignment Edit page, aiming for a user interface that's smooth and straightforward. Using React and TypeScript, the goal is to simplify administrative tasks—like managing participants, setting up teams, and assigning reviewers—so they’re easier and faster to handle. A clean and modular component design lies at the heart of this solution, making it not only simple to maintain but also flexible enough for future upgrades. Prioritizing responsive design and performance boosts ensures that users enjoy a consistent and efficient experience across different devices.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159941</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159941"/>
		<updated>2024-12-01T22:31:20Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Code Snippets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet you described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  // const [currentView, setCurrentView] = useState(&amp;quot;general&amp;quot;);&lt;br /&gt;
  // State to track the active tab&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
        {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* &amp;lt;Tabs&lt;br /&gt;
                id=&amp;quot;assignment-tab&amp;quot;&lt;br /&gt;
                activeKey={currentView}&lt;br /&gt;
                // onSelect={(k) =&amp;gt; setCurrentView(k)}&lt;br /&gt;
                className=&amp;quot;mb-3&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Rubrics&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Review Strategy&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Due Dates&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Badges&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Etc&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;EtcView /&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
            &amp;lt;/Tabs&amp;gt;  */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp; (&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          {/* &amp;lt;ScoreIcon/&amp;gt; */}&lt;br /&gt;
          &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
);&lt;br /&gt;
};&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
The reimplementation of the &amp;quot;Etc&amp;quot; tab will follow a systematic approach using ReactJS and TypeScript, emphasizing maintainability, scalability, and user experience. Each action in the &amp;quot;Etc&amp;quot; tab will be handled as distinct tasks, ensuring modularity and a clear separation of concerns. The following plan outlines the key actions and methods for the new interface:&lt;br /&gt;
&lt;br /&gt;
=== Add Participant Action ===&lt;br /&gt;
The `AddParticipantAction` component will be responsible for handling the addition of new participants. It will collect participant information through a form, perform front-end validations, and send a POST request to the backend API. TypeScript will ensure type safety, while error handling will manage invalid or missing input data. Upon successful addition, the new participant's details will be displayed in the UI, updated in real-time.&lt;br /&gt;
&lt;br /&gt;
=== Create Teams Action ===&lt;br /&gt;
The `CreateTeamsAction` will enable users to group participants into teams. This action will include a user-friendly interface for selecting participants and defining team sizes or names. The component will handle API requests to create and save team data. The state will be managed using React’s Context API, ensuring all updates reflect instantly across the interface. Type checking with TypeScript will prevent errors during team creation, and users will receive feedback on the success or failure of the action.&lt;br /&gt;
&lt;br /&gt;
=== Assign Reviewer Action ===&lt;br /&gt;
The `AssignReviewerAction` will facilitate the reviewer assignment process. It will provide a list of available reviewers and allow users to select and assign them to participants or teams. The action will validate reviewer availability and participant eligibility before sending the assignment request to the backend. Error handling will address conflicts, and the UI will display the updated reviewer assignments in a structured list or table.&lt;br /&gt;
&lt;br /&gt;
=== View Submissions Action ===&lt;br /&gt;
The `ViewSubmissionsAction` component will retrieve and display all submissions related to the assignment. It will fetch submission data from the backend using API calls and present it in a sortable and filterable table. Users can view individual submission details, and TypeScript interfaces will ensure consistent data structures. This action will improve user access to assignment submissions, providing a streamlined review experience.&lt;br /&gt;
&lt;br /&gt;
=== View Scores Action ===&lt;br /&gt;
The `ViewScoresAction` will offer a summary of assignment scores. It will make GET requests to the backend API to fetch scores data, displaying it in an organized format. The component will include options for filtering scores by participant, team, or date. Type safety will be enforced using TypeScript, reducing the likelihood of data-related errors. The action will focus on delivering clear and concise score information to users.&lt;br /&gt;
&lt;br /&gt;
=== View Reports Action ===&lt;br /&gt;
The `ViewReportsAction` will handle the retrieval and display of assignment reports. It will connect with the backend to pull comprehensive reports data, which will be shown in a user-friendly format with options for sorting and exporting. This action will provide users with valuable insights into assignment performance, feedback, and trends, leveraging the structured data from the backend API.&lt;br /&gt;
 &lt;br /&gt;
=== View Delayed Jobs Action ===&lt;br /&gt;
&lt;br /&gt;
The `ViewDelayedJobsAction` allows instructors to check for delayed background jobs related to the assignment, providing visibility into tasks that are pending or scheduled in the system. This feature helps track jobs like notifications and score calculations, ensuring transparency and easy monitoring.&lt;br /&gt;
&lt;br /&gt;
This structured approach will ensure a cohesive and efficient reimplementation of the &amp;quot;Etc&amp;quot; tab, enhancing both the usability and functionality of the Expertiza application. Each action and method is designed with a focus on modularity, data integrity, and user feedback, leveraging modern development practices with React and TypeScript.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
&lt;br /&gt;
Each React component will have a single responsibility, focusing on one specific part of the UI or functionality. For instance:&lt;br /&gt;
&lt;br /&gt;
* The AddParticipantButton component handles only the participant addition functionality.&lt;br /&gt;
* The CreateTeamsButton component manages the team creation process independently. This separation of concerns makes the code easier to understand, test, and maintain.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle ===&lt;br /&gt;
&lt;br /&gt;
Components and functions in this project will be designed to be open for extension but closed for modification. For example:&lt;br /&gt;
&lt;br /&gt;
* The EtcTab container component will be built to accommodate additional task buttons (e.g., new features) without modifying its core logic.&lt;br /&gt;
* New task buttons can be added as separate components, extending the UI without altering existing components.&lt;br /&gt;
&lt;br /&gt;
=== DRY Principle ===&lt;br /&gt;
&lt;br /&gt;
The DRY (Don’t Repeat Yourself) principle will be applied throughout this project to reduce code duplication and enhance maintainability. Reusable components like `TaskButton`, centralized API service functions, shared state via React’s Context API, and utility modules will ensure that common logic is abstracted and reused across the application. This approach will streamline the code, making it consistent, easier to update, and more scalable, while also improving readability and reducing the risk of errors. By following the DRY principle, we aim to create a clean and efficient codebase for the &amp;quot;Etc&amp;quot; tab interface.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
This design document introduces a step-by-step plan for revamping the &amp;quot;Etc&amp;quot; tab on Expertiza's Assignment Edit page, aiming for a user interface that's smooth and straightforward. Using React and TypeScript, the goal is to simplify administrative tasks—like managing participants, setting up teams, and assigning reviewers—so they’re easier and faster to handle. A clean and modular component design lies at the heart of this solution, making it not only simple to maintain but also flexible enough for future upgrades. Prioritizing responsive design and performance boosts ensures that users enjoy a consistent and efficient experience across different devices.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159940</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159940"/>
		<updated>2024-12-01T22:29:28Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Code Snippets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet you described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''EtcView.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The EtcView.tsx file is a React functional component designed to handle a tabbed interface for the &amp;quot;Etc&amp;quot; section of an assignment edit page. It uses useState to manage the current tab's state, allowing users to switch between options such as &amp;quot;General,&amp;quot; &amp;quot;Rubrics,&amp;quot; &amp;quot;Review Strategy,&amp;quot; &amp;quot;Due Dates,&amp;quot; &amp;quot;Badges,&amp;quot; and &amp;quot;Etc.&amp;quot; Each tab represents a distinct feature within the assignment-editing process.&lt;br /&gt;
&lt;br /&gt;
Within the &amp;quot;Etc&amp;quot; tab, the layout incorporates a grid that displays a variety of interactive elements. These include tools for adding participants, forming teams, assigning reviewers, checking submissions, managing scores and reports, and handling delayed jobs. The interface is visually enhanced with Material UI icons and custom images, creating a polished and intuitive user experience.&lt;br /&gt;
&lt;br /&gt;
Navigation buttons allow users to move between tabs seamlessly, while &amp;quot;Save&amp;quot; and &amp;quot;Back&amp;quot; buttons at the bottom enable straightforward interaction for saving changes or exiting the section. The component's layout relies on CSS classes like etc-container, tab-navigation, and etc-item to ensure a responsive, clean design that adapts to different screen sizes, making it user-friendly and visually cohesive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import React from 'react';&lt;br /&gt;
import { useState } from &amp;quot;react&amp;quot;;&lt;br /&gt;
import './Etc.css';&lt;br /&gt;
import { Tab, Tabs} from &amp;quot;react-bootstrap&amp;quot;;&lt;br /&gt;
// import addParticipantIcon from '../../assets/participant1.png';&lt;br /&gt;
import scoreIcon from '../../assets/scores.png';&lt;br /&gt;
import ParticipantIcon from '@mui/icons-material/Person';&lt;br /&gt;
import PersonPinIcon from '@mui/icons-material/PersonPin';&lt;br /&gt;
import CreateTeamIcon from '@mui/icons-material/Groups3';&lt;br /&gt;
import ReviewerIcon from '@mui/icons-material/AssignmentInd';&lt;br /&gt;
import SubmissionIcon from '@mui/icons-material/Assignment';&lt;br /&gt;
// import ScoreIcon from '@mui/icons-material/Grade';&lt;br /&gt;
import ReportIcon from '@mui/icons-material/Summarize';&lt;br /&gt;
import DelayedIcon from '@mui/icons-material/AccessTime';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
const EtcView: React.FC = () =&amp;gt; {&lt;br /&gt;
  // const [currentView, setCurrentView] = useState(&amp;quot;general&amp;quot;);&lt;br /&gt;
  // State to track the active tab&lt;br /&gt;
  const [activeTab, setActiveTab] = useState('Etc');&lt;br /&gt;
&lt;br /&gt;
  // Tab click handler&lt;br /&gt;
  const handleTabClick = (tabName: string) =&amp;gt; {&lt;br /&gt;
    setActiveTab(tabName);&lt;br /&gt;
  };&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-container&amp;quot;&amp;gt;&lt;br /&gt;
        {/* Tab Navigation */}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;tab-navigation&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'General' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('General')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          General&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Rubrics' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Rubrics')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Rubrics&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Review Strategy' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Review Strategy')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Review Strategy&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Due Dates' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Due Dates')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Due Dates&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Badges' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Badges')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Badges&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button&lt;br /&gt;
          className={`tab ${activeTab === 'Etc' ? 'active' : ''}`}&lt;br /&gt;
          onClick={() =&amp;gt; handleTabClick('Etc')}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Etc&lt;br /&gt;
        &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* &amp;lt;Tabs&lt;br /&gt;
                id=&amp;quot;assignment-tab&amp;quot;&lt;br /&gt;
                activeKey={currentView}&lt;br /&gt;
                // onSelect={(k) =&amp;gt; setCurrentView(k)}&lt;br /&gt;
                className=&amp;quot;mb-3&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Rubrics&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Review Strategy&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Due Dates&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab  title=&amp;quot;Badges&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
                &amp;lt;Tab title=&amp;quot;Etc&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;EtcView /&amp;gt;&lt;br /&gt;
                &amp;lt;/Tab&amp;gt;&lt;br /&gt;
            &amp;lt;/Tabs&amp;gt;  */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;tab-content&amp;quot;&amp;gt;&lt;br /&gt;
        {activeTab === 'General' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;General Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Rubrics' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Rubrics Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Badges' &amp;amp;&amp;amp; &amp;lt;p&amp;gt;Badges Content&amp;lt;/p&amp;gt;}&lt;br /&gt;
        {activeTab === 'Etc' &amp;amp;&amp;amp; (&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-grid&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ParticipantIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Add Participant&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CreateTeamIcon /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Create Teams&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReviewerIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;Assign Reviewer&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;SubmissionIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Submissions&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          {/* &amp;lt;ScoreIcon/&amp;gt; */}&lt;br /&gt;
          &amp;lt;img src={scoreIcon} alt=&amp;quot;View Scores&amp;quot; className=&amp;quot;etc-icon&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Scores&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ReportIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Reports&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;etc-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;DelayedIcon/&amp;gt;&lt;br /&gt;
          &amp;lt;span&amp;gt;View Delayed Jobs&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;div className=&amp;quot;etc-actions&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;save-button&amp;quot;&amp;gt;Save&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;button className=&amp;quot;back-button&amp;quot;&amp;gt;Back&amp;lt;/button&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
export default EtcView;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
The reimplementation of the &amp;quot;Etc&amp;quot; tab will follow a systematic approach using ReactJS and TypeScript, emphasizing maintainability, scalability, and user experience. Each action in the &amp;quot;Etc&amp;quot; tab will be handled as distinct tasks, ensuring modularity and a clear separation of concerns. The following plan outlines the key actions and methods for the new interface:&lt;br /&gt;
&lt;br /&gt;
=== Add Participant Action ===&lt;br /&gt;
The `AddParticipantAction` component will be responsible for handling the addition of new participants. It will collect participant information through a form, perform front-end validations, and send a POST request to the backend API. TypeScript will ensure type safety, while error handling will manage invalid or missing input data. Upon successful addition, the new participant's details will be displayed in the UI, updated in real-time.&lt;br /&gt;
&lt;br /&gt;
=== Create Teams Action ===&lt;br /&gt;
The `CreateTeamsAction` will enable users to group participants into teams. This action will include a user-friendly interface for selecting participants and defining team sizes or names. The component will handle API requests to create and save team data. The state will be managed using React’s Context API, ensuring all updates reflect instantly across the interface. Type checking with TypeScript will prevent errors during team creation, and users will receive feedback on the success or failure of the action.&lt;br /&gt;
&lt;br /&gt;
=== Assign Reviewer Action ===&lt;br /&gt;
The `AssignReviewerAction` will facilitate the reviewer assignment process. It will provide a list of available reviewers and allow users to select and assign them to participants or teams. The action will validate reviewer availability and participant eligibility before sending the assignment request to the backend. Error handling will address conflicts, and the UI will display the updated reviewer assignments in a structured list or table.&lt;br /&gt;
&lt;br /&gt;
=== View Submissions Action ===&lt;br /&gt;
The `ViewSubmissionsAction` component will retrieve and display all submissions related to the assignment. It will fetch submission data from the backend using API calls and present it in a sortable and filterable table. Users can view individual submission details, and TypeScript interfaces will ensure consistent data structures. This action will improve user access to assignment submissions, providing a streamlined review experience.&lt;br /&gt;
&lt;br /&gt;
=== View Scores Action ===&lt;br /&gt;
The `ViewScoresAction` will offer a summary of assignment scores. It will make GET requests to the backend API to fetch scores data, displaying it in an organized format. The component will include options for filtering scores by participant, team, or date. Type safety will be enforced using TypeScript, reducing the likelihood of data-related errors. The action will focus on delivering clear and concise score information to users.&lt;br /&gt;
&lt;br /&gt;
=== View Reports Action ===&lt;br /&gt;
The `ViewReportsAction` will handle the retrieval and display of assignment reports. It will connect with the backend to pull comprehensive reports data, which will be shown in a user-friendly format with options for sorting and exporting. This action will provide users with valuable insights into assignment performance, feedback, and trends, leveraging the structured data from the backend API.&lt;br /&gt;
 &lt;br /&gt;
=== View Delayed Jobs Action ===&lt;br /&gt;
&lt;br /&gt;
The `ViewDelayedJobsAction` allows instructors to check for delayed background jobs related to the assignment, providing visibility into tasks that are pending or scheduled in the system. This feature helps track jobs like notifications and score calculations, ensuring transparency and easy monitoring.&lt;br /&gt;
&lt;br /&gt;
This structured approach will ensure a cohesive and efficient reimplementation of the &amp;quot;Etc&amp;quot; tab, enhancing both the usability and functionality of the Expertiza application. Each action and method is designed with a focus on modularity, data integrity, and user feedback, leveraging modern development practices with React and TypeScript.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
&lt;br /&gt;
Each React component will have a single responsibility, focusing on one specific part of the UI or functionality. For instance:&lt;br /&gt;
&lt;br /&gt;
* The AddParticipantButton component handles only the participant addition functionality.&lt;br /&gt;
* The CreateTeamsButton component manages the team creation process independently. This separation of concerns makes the code easier to understand, test, and maintain.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle ===&lt;br /&gt;
&lt;br /&gt;
Components and functions in this project will be designed to be open for extension but closed for modification. For example:&lt;br /&gt;
&lt;br /&gt;
* The EtcTab container component will be built to accommodate additional task buttons (e.g., new features) without modifying its core logic.&lt;br /&gt;
* New task buttons can be added as separate components, extending the UI without altering existing components.&lt;br /&gt;
&lt;br /&gt;
=== DRY Principle ===&lt;br /&gt;
&lt;br /&gt;
The DRY (Don’t Repeat Yourself) principle will be applied throughout this project to reduce code duplication and enhance maintainability. Reusable components like `TaskButton`, centralized API service functions, shared state via React’s Context API, and utility modules will ensure that common logic is abstracted and reused across the application. This approach will streamline the code, making it consistent, easier to update, and more scalable, while also improving readability and reducing the risk of errors. By following the DRY principle, we aim to create a clean and efficient codebase for the &amp;quot;Etc&amp;quot; tab interface.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
This design document introduces a step-by-step plan for revamping the &amp;quot;Etc&amp;quot; tab on Expertiza's Assignment Edit page, aiming for a user interface that's smooth and straightforward. Using React and TypeScript, the goal is to simplify administrative tasks—like managing participants, setting up teams, and assigning reviewers—so they’re easier and faster to handle. A clean and modular component design lies at the heart of this solution, making it not only simple to maintain but also flexible enough for future upgrades. Prioritizing responsive design and performance boosts ensures that users enjoy a consistent and efficient experience across different devices.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159939</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159939"/>
		<updated>2024-12-01T22:25:34Z</updated>

		<summary type="html">&lt;p&gt;Snukara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx :'''&lt;br /&gt;
&lt;br /&gt;
The code snippet you described integrates a new route, /assignments/etc, using React Router's createBrowserRouter function. This route supports the &amp;quot;Etc&amp;quot; view for editing assignments, tying it to the EtcView component from the ./pages/Assignments/EtcView module. Additionally, a loader property leverages the loadAssignment function to prefetch data, ensuring assignment details are available before the component renders.&lt;br /&gt;
&lt;br /&gt;
This enhancement improves the app's structure by isolating the handling of miscellaneous assignment tasks within a dedicated component. This modular approach not only supports easier future updates or extensions but also maintains clarity and clean separation of concerns. The asynchronous data loading through the loader further boosts user experience by making the interface feel more seamless and responsive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import EtcView from &amp;quot;./pages/Assignments/EtcView&amp;quot;;&lt;br /&gt;
        {&lt;br /&gt;
          path: &amp;quot;assignments/etc&amp;quot;,&lt;br /&gt;
          element: &amp;lt;EtcView /&amp;gt;,&lt;br /&gt;
          loader: loadAssignment,&lt;br /&gt;
        },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
The reimplementation of the &amp;quot;Etc&amp;quot; tab will follow a systematic approach using ReactJS and TypeScript, emphasizing maintainability, scalability, and user experience. Each action in the &amp;quot;Etc&amp;quot; tab will be handled as distinct tasks, ensuring modularity and a clear separation of concerns. The following plan outlines the key actions and methods for the new interface:&lt;br /&gt;
&lt;br /&gt;
=== Add Participant Action ===&lt;br /&gt;
The `AddParticipantAction` component will be responsible for handling the addition of new participants. It will collect participant information through a form, perform front-end validations, and send a POST request to the backend API. TypeScript will ensure type safety, while error handling will manage invalid or missing input data. Upon successful addition, the new participant's details will be displayed in the UI, updated in real-time.&lt;br /&gt;
&lt;br /&gt;
=== Create Teams Action ===&lt;br /&gt;
The `CreateTeamsAction` will enable users to group participants into teams. This action will include a user-friendly interface for selecting participants and defining team sizes or names. The component will handle API requests to create and save team data. The state will be managed using React’s Context API, ensuring all updates reflect instantly across the interface. Type checking with TypeScript will prevent errors during team creation, and users will receive feedback on the success or failure of the action.&lt;br /&gt;
&lt;br /&gt;
=== Assign Reviewer Action ===&lt;br /&gt;
The `AssignReviewerAction` will facilitate the reviewer assignment process. It will provide a list of available reviewers and allow users to select and assign them to participants or teams. The action will validate reviewer availability and participant eligibility before sending the assignment request to the backend. Error handling will address conflicts, and the UI will display the updated reviewer assignments in a structured list or table.&lt;br /&gt;
&lt;br /&gt;
=== View Submissions Action ===&lt;br /&gt;
The `ViewSubmissionsAction` component will retrieve and display all submissions related to the assignment. It will fetch submission data from the backend using API calls and present it in a sortable and filterable table. Users can view individual submission details, and TypeScript interfaces will ensure consistent data structures. This action will improve user access to assignment submissions, providing a streamlined review experience.&lt;br /&gt;
&lt;br /&gt;
=== View Scores Action ===&lt;br /&gt;
The `ViewScoresAction` will offer a summary of assignment scores. It will make GET requests to the backend API to fetch scores data, displaying it in an organized format. The component will include options for filtering scores by participant, team, or date. Type safety will be enforced using TypeScript, reducing the likelihood of data-related errors. The action will focus on delivering clear and concise score information to users.&lt;br /&gt;
&lt;br /&gt;
=== View Reports Action ===&lt;br /&gt;
The `ViewReportsAction` will handle the retrieval and display of assignment reports. It will connect with the backend to pull comprehensive reports data, which will be shown in a user-friendly format with options for sorting and exporting. This action will provide users with valuable insights into assignment performance, feedback, and trends, leveraging the structured data from the backend API.&lt;br /&gt;
 &lt;br /&gt;
=== View Delayed Jobs Action ===&lt;br /&gt;
&lt;br /&gt;
The `ViewDelayedJobsAction` allows instructors to check for delayed background jobs related to the assignment, providing visibility into tasks that are pending or scheduled in the system. This feature helps track jobs like notifications and score calculations, ensuring transparency and easy monitoring.&lt;br /&gt;
&lt;br /&gt;
This structured approach will ensure a cohesive and efficient reimplementation of the &amp;quot;Etc&amp;quot; tab, enhancing both the usability and functionality of the Expertiza application. Each action and method is designed with a focus on modularity, data integrity, and user feedback, leveraging modern development practices with React and TypeScript.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
&lt;br /&gt;
Each React component will have a single responsibility, focusing on one specific part of the UI or functionality. For instance:&lt;br /&gt;
&lt;br /&gt;
* The AddParticipantButton component handles only the participant addition functionality.&lt;br /&gt;
* The CreateTeamsButton component manages the team creation process independently. This separation of concerns makes the code easier to understand, test, and maintain.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle ===&lt;br /&gt;
&lt;br /&gt;
Components and functions in this project will be designed to be open for extension but closed for modification. For example:&lt;br /&gt;
&lt;br /&gt;
* The EtcTab container component will be built to accommodate additional task buttons (e.g., new features) without modifying its core logic.&lt;br /&gt;
* New task buttons can be added as separate components, extending the UI without altering existing components.&lt;br /&gt;
&lt;br /&gt;
=== DRY Principle ===&lt;br /&gt;
&lt;br /&gt;
The DRY (Don’t Repeat Yourself) principle will be applied throughout this project to reduce code duplication and enhance maintainability. Reusable components like `TaskButton`, centralized API service functions, shared state via React’s Context API, and utility modules will ensure that common logic is abstracted and reused across the application. This approach will streamline the code, making it consistent, easier to update, and more scalable, while also improving readability and reducing the risk of errors. By following the DRY principle, we aim to create a clean and efficient codebase for the &amp;quot;Etc&amp;quot; tab interface.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
This design document introduces a step-by-step plan for revamping the &amp;quot;Etc&amp;quot; tab on Expertiza's Assignment Edit page, aiming for a user interface that's smooth and straightforward. Using React and TypeScript, the goal is to simplify administrative tasks—like managing participants, setting up teams, and assigning reviewers—so they’re easier and faster to handle. A clean and modular component design lies at the heart of this solution, making it not only simple to maintain but also flexible enough for future upgrades. Prioritizing responsive design and performance boosts ensures that users enjoy a consistent and efficient experience across different devices.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159938</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159938"/>
		<updated>2024-12-01T22:13:41Z</updated>

		<summary type="html">&lt;p&gt;Snukara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== List of files added/updated ==&lt;br /&gt;
&lt;br /&gt;
# src/App.tsx  &lt;br /&gt;
# src/assets/scores.png&lt;br /&gt;
# src/pages/Assignments/Etc.css&lt;br /&gt;
# src/pages/Assignments/EtcView.tsx&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
The reimplementation of the &amp;quot;Etc&amp;quot; tab will follow a systematic approach using ReactJS and TypeScript, emphasizing maintainability, scalability, and user experience. Each action in the &amp;quot;Etc&amp;quot; tab will be handled as distinct tasks, ensuring modularity and a clear separation of concerns. The following plan outlines the key actions and methods for the new interface:&lt;br /&gt;
&lt;br /&gt;
=== Add Participant Action ===&lt;br /&gt;
The `AddParticipantAction` component will be responsible for handling the addition of new participants. It will collect participant information through a form, perform front-end validations, and send a POST request to the backend API. TypeScript will ensure type safety, while error handling will manage invalid or missing input data. Upon successful addition, the new participant's details will be displayed in the UI, updated in real-time.&lt;br /&gt;
&lt;br /&gt;
=== Create Teams Action ===&lt;br /&gt;
The `CreateTeamsAction` will enable users to group participants into teams. This action will include a user-friendly interface for selecting participants and defining team sizes or names. The component will handle API requests to create and save team data. The state will be managed using React’s Context API, ensuring all updates reflect instantly across the interface. Type checking with TypeScript will prevent errors during team creation, and users will receive feedback on the success or failure of the action.&lt;br /&gt;
&lt;br /&gt;
=== Assign Reviewer Action ===&lt;br /&gt;
The `AssignReviewerAction` will facilitate the reviewer assignment process. It will provide a list of available reviewers and allow users to select and assign them to participants or teams. The action will validate reviewer availability and participant eligibility before sending the assignment request to the backend. Error handling will address conflicts, and the UI will display the updated reviewer assignments in a structured list or table.&lt;br /&gt;
&lt;br /&gt;
=== View Submissions Action ===&lt;br /&gt;
The `ViewSubmissionsAction` component will retrieve and display all submissions related to the assignment. It will fetch submission data from the backend using API calls and present it in a sortable and filterable table. Users can view individual submission details, and TypeScript interfaces will ensure consistent data structures. This action will improve user access to assignment submissions, providing a streamlined review experience.&lt;br /&gt;
&lt;br /&gt;
=== View Scores Action ===&lt;br /&gt;
The `ViewScoresAction` will offer a summary of assignment scores. It will make GET requests to the backend API to fetch scores data, displaying it in an organized format. The component will include options for filtering scores by participant, team, or date. Type safety will be enforced using TypeScript, reducing the likelihood of data-related errors. The action will focus on delivering clear and concise score information to users.&lt;br /&gt;
&lt;br /&gt;
=== View Reports Action ===&lt;br /&gt;
The `ViewReportsAction` will handle the retrieval and display of assignment reports. It will connect with the backend to pull comprehensive reports data, which will be shown in a user-friendly format with options for sorting and exporting. This action will provide users with valuable insights into assignment performance, feedback, and trends, leveraging the structured data from the backend API.&lt;br /&gt;
 &lt;br /&gt;
=== View Delayed Jobs Action ===&lt;br /&gt;
&lt;br /&gt;
The `ViewDelayedJobsAction` allows instructors to check for delayed background jobs related to the assignment, providing visibility into tasks that are pending or scheduled in the system. This feature helps track jobs like notifications and score calculations, ensuring transparency and easy monitoring.&lt;br /&gt;
&lt;br /&gt;
This structured approach will ensure a cohesive and efficient reimplementation of the &amp;quot;Etc&amp;quot; tab, enhancing both the usability and functionality of the Expertiza application. Each action and method is designed with a focus on modularity, data integrity, and user feedback, leveraging modern development practices with React and TypeScript.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
&lt;br /&gt;
Each React component will have a single responsibility, focusing on one specific part of the UI or functionality. For instance:&lt;br /&gt;
&lt;br /&gt;
* The AddParticipantButton component handles only the participant addition functionality.&lt;br /&gt;
* The CreateTeamsButton component manages the team creation process independently. This separation of concerns makes the code easier to understand, test, and maintain.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle ===&lt;br /&gt;
&lt;br /&gt;
Components and functions in this project will be designed to be open for extension but closed for modification. For example:&lt;br /&gt;
&lt;br /&gt;
* The EtcTab container component will be built to accommodate additional task buttons (e.g., new features) without modifying its core logic.&lt;br /&gt;
* New task buttons can be added as separate components, extending the UI without altering existing components.&lt;br /&gt;
&lt;br /&gt;
=== DRY Principle ===&lt;br /&gt;
&lt;br /&gt;
The DRY (Don’t Repeat Yourself) principle will be applied throughout this project to reduce code duplication and enhance maintainability. Reusable components like `TaskButton`, centralized API service functions, shared state via React’s Context API, and utility modules will ensure that common logic is abstracted and reused across the application. This approach will streamline the code, making it consistent, easier to update, and more scalable, while also improving readability and reducing the risk of errors. By following the DRY principle, we aim to create a clean and efficient codebase for the &amp;quot;Etc&amp;quot; tab interface.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
This design document introduces a step-by-step plan for revamping the &amp;quot;Etc&amp;quot; tab on Expertiza's Assignment Edit page, aiming for a user interface that's smooth and straightforward. Using React and TypeScript, the goal is to simplify administrative tasks—like managing participants, setting up teams, and assigning reviewers—so they’re easier and faster to handle. A clean and modular component design lies at the heart of this solution, making it not only simple to maintain but also flexible enough for future upgrades. Prioritizing responsive design and performance boosts ensures that users enjoy a consistent and efficient experience across different devices.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159935</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159935"/>
		<updated>2024-12-01T21:54:39Z</updated>

		<summary type="html">&lt;p&gt;Snukara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
The reimplementation of the &amp;quot;Etc&amp;quot; tab will follow a systematic approach using ReactJS and TypeScript, emphasizing maintainability, scalability, and user experience. Each action in the &amp;quot;Etc&amp;quot; tab will be handled as distinct tasks, ensuring modularity and a clear separation of concerns. The following plan outlines the key actions and methods for the new interface:&lt;br /&gt;
&lt;br /&gt;
=== Add Participant Action ===&lt;br /&gt;
The `AddParticipantAction` component will be responsible for handling the addition of new participants. It will collect participant information through a form, perform front-end validations, and send a POST request to the backend API. TypeScript will ensure type safety, while error handling will manage invalid or missing input data. Upon successful addition, the new participant's details will be displayed in the UI, updated in real-time.&lt;br /&gt;
&lt;br /&gt;
=== Create Teams Action ===&lt;br /&gt;
The `CreateTeamsAction` will enable users to group participants into teams. This action will include a user-friendly interface for selecting participants and defining team sizes or names. The component will handle API requests to create and save team data. The state will be managed using React’s Context API, ensuring all updates reflect instantly across the interface. Type checking with TypeScript will prevent errors during team creation, and users will receive feedback on the success or failure of the action.&lt;br /&gt;
&lt;br /&gt;
=== Assign Reviewer Action ===&lt;br /&gt;
The `AssignReviewerAction` will facilitate the reviewer assignment process. It will provide a list of available reviewers and allow users to select and assign them to participants or teams. The action will validate reviewer availability and participant eligibility before sending the assignment request to the backend. Error handling will address conflicts, and the UI will display the updated reviewer assignments in a structured list or table.&lt;br /&gt;
&lt;br /&gt;
=== View Submissions Action ===&lt;br /&gt;
The `ViewSubmissionsAction` component will retrieve and display all submissions related to the assignment. It will fetch submission data from the backend using API calls and present it in a sortable and filterable table. Users can view individual submission details, and TypeScript interfaces will ensure consistent data structures. This action will improve user access to assignment submissions, providing a streamlined review experience.&lt;br /&gt;
&lt;br /&gt;
=== View Scores Action ===&lt;br /&gt;
The `ViewScoresAction` will offer a summary of assignment scores. It will make GET requests to the backend API to fetch scores data, displaying it in an organized format. The component will include options for filtering scores by participant, team, or date. Type safety will be enforced using TypeScript, reducing the likelihood of data-related errors. The action will focus on delivering clear and concise score information to users.&lt;br /&gt;
&lt;br /&gt;
=== View Reports Action ===&lt;br /&gt;
The `ViewReportsAction` will handle the retrieval and display of assignment reports. It will connect with the backend to pull comprehensive reports data, which will be shown in a user-friendly format with options for sorting and exporting. This action will provide users with valuable insights into assignment performance, feedback, and trends, leveraging the structured data from the backend API.&lt;br /&gt;
 &lt;br /&gt;
=== View Delayed Jobs Action ===&lt;br /&gt;
&lt;br /&gt;
The `ViewDelayedJobsAction` allows instructors to check for delayed background jobs related to the assignment, providing visibility into tasks that are pending or scheduled in the system. This feature helps track jobs like notifications and score calculations, ensuring transparency and easy monitoring.&lt;br /&gt;
&lt;br /&gt;
This structured approach will ensure a cohesive and efficient reimplementation of the &amp;quot;Etc&amp;quot; tab, enhancing both the usability and functionality of the Expertiza application. Each action and method is designed with a focus on modularity, data integrity, and user feedback, leveraging modern development practices with React and TypeScript.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
&lt;br /&gt;
Each React component will have a single responsibility, focusing on one specific part of the UI or functionality. For instance:&lt;br /&gt;
&lt;br /&gt;
* The AddParticipantButton component handles only the participant addition functionality.&lt;br /&gt;
* The CreateTeamsButton component manages the team creation process independently. This separation of concerns makes the code easier to understand, test, and maintain.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle ===&lt;br /&gt;
&lt;br /&gt;
Components and functions in this project will be designed to be open for extension but closed for modification. For example:&lt;br /&gt;
&lt;br /&gt;
* The EtcTab container component will be built to accommodate additional task buttons (e.g., new features) without modifying its core logic.&lt;br /&gt;
* New task buttons can be added as separate components, extending the UI without altering existing components.&lt;br /&gt;
&lt;br /&gt;
=== DRY Principle ===&lt;br /&gt;
&lt;br /&gt;
The DRY (Don’t Repeat Yourself) principle will be applied throughout this project to reduce code duplication and enhance maintainability. Reusable components like `TaskButton`, centralized API service functions, shared state via React’s Context API, and utility modules will ensure that common logic is abstracted and reused across the application. This approach will streamline the code, making it consistent, easier to update, and more scalable, while also improving readability and reducing the risk of errors. By following the DRY principle, we aim to create a clean and efficient codebase for the &amp;quot;Etc&amp;quot; tab interface.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used ==&lt;br /&gt;
&lt;br /&gt;
In this project, we chose React.js and TypeScript to create a strong, scalable user interface.&lt;br /&gt;
&lt;br /&gt;
* '''React.js''' a widely used JavaScript library, is ideal for building interactive, single-page applications. Its component-based structure lets us develop reusable UI elements, which streamlines both the creation and upkeep of the platform. React's state management features also ensure a smooth user experience as people move through different areas of the application.&lt;br /&gt;
&lt;br /&gt;
* '''TypeScript''', an extension of JavaScript, introduces static typing to the code, which boosts development efficiency and reduces potential errors. By catching issues during compile time instead of runtime, TypeScript helps us build a more reliable and robust application. Its type-checking system enhances code clarity and readability, simplifying teamwork and future maintenance.&lt;br /&gt;
&lt;br /&gt;
Using React.js and TypeScript together has allowed us to create an application that is user-friendly, efficient, and well-suited to our users' needs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
This design document introduces a step-by-step plan for revamping the &amp;quot;Etc&amp;quot; tab on Expertiza's Assignment Edit page, aiming for a user interface that's smooth and straightforward. Using React and TypeScript, the goal is to simplify administrative tasks—like managing participants, setting up teams, and assigning reviewers—so they’re easier and faster to handle. A clean and modular component design lies at the heart of this solution, making it not only simple to maintain but also flexible enough for future upgrades. Prioritizing responsive design and performance boosts ensures that users enjoy a consistent and efficient experience across different devices.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159442</id>
		<title>CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &quot;Etc&quot; tab in ReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2489._Create_a_UI_for_Assignment_Edit_page_%22Etc%22_tab_in_ReactJS&amp;diff=159442"/>
		<updated>2024-11-13T04:07:02Z</updated>

		<summary type="html">&lt;p&gt;Snukara: /* Task Button Components */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source, web-based application built on Ruby on Rails. Its main purpose is to provide flexible, interactive assignment management tools, tailored to educational settings. With Expertiza, instructors can create and customize assignments, specifying topics and tasks that students choose based on their interests. This system not only supports varied, self-guided learning experiences but also encourages active student engagement through choice.&lt;br /&gt;
&lt;br /&gt;
The platform is designed to support teamwork, enabling students to collaborate on projects, which aligns well with team-based learning approaches. One of Expertiza’s most notable features is its peer review system. This system lets students evaluate each other’s work, fostering skills in critical thinking, feedback, and self-reflection that are beneficial in both academic and professional contexts.&lt;br /&gt;
&lt;br /&gt;
The review feature on Expertiza is versatile, accepting multiple file formats, URLs, and even content from external sources like wiki pages. This adaptability makes Expertiza suitable for handling a wide variety of assignments and multimedia projects, fitting well with different teaching styles and course needs. Overall, Expertiza is a solid, comprehensive platform that enhances assignment management, collaborative learning, and peer-to-peer interactions within educational settings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Etc&amp;quot; tab on the Assignment Edit page of the Expertiza application is due for a redesign using ReactJS. Currently, this section, which houses various miscellaneous settings, is cluttered and outdated. It lacks intuitive features that would make it easier for users to configure assignment options efficiently. Enhancing this tab aims to improve navigation, layout, and overall aesthetics while retaining its existing functionalities.&lt;br /&gt;
&lt;br /&gt;
A revamped UI should organize settings into clear sections using collapsible panels or tabs, which can help users find specific options quickly without having to scroll through a long list. Introducing tooltips or information icons next to less common settings can also offer helpful context, especially for new users.&lt;br /&gt;
&lt;br /&gt;
Visually, the redesign should use a modern color scheme and flat design elements consistent with the rest of the Expertiza application, giving the tab a cohesive and polished appearance. Replacing text-heavy fields with toggles, dropdowns, or sliders can also streamline the interface, making it more user-friendly. Following ReactJS best practices, the improved &amp;quot;Etc&amp;quot; tab would offer a responsive, engaging, and intuitive interface that simplifies the management of additional assignment configurations and aligns well with the overall platform design.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This project aims to upgrade the user interface of select parts of the Expertiza application by utilizing modern front-end tools like ReactJS and Typescript. The focus is on redesigning key pages to make them more intuitive, responsive, and easier for users to navigate. By revamping these elements, we aim to solve current usability challenges, simplify the user journey, and create a unified visual style throughout the platform. The enhanced interface will help users handle assignments and tasks more effectively, aligning with contemporary design principles and elevating the overall experience.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frontend (React &amp;amp; TypeScript) ===&lt;br /&gt;
The new &amp;quot;Etc&amp;quot; tab interface for the Assignment Edit page in Expertiza will be developed using **React** and **TypeScript**. By incorporating TypeScript, this project aims to create a user interface that is not only visually modern but also highly maintainable and type-safe. TypeScript’s built-in type-checking feature will catch errors during the coding process, significantly reducing issues that might otherwise arise at runtime. This will help streamline debugging and ensure a cleaner, more efficient codebase, ultimately improving both the functionality and longevity of the application.&lt;br /&gt;
&lt;br /&gt;
=== Component Structure ===&lt;br /&gt;
&lt;br /&gt;
==== Main Container Component (`EtcTab`) ====&lt;br /&gt;
* The `EtcTab` component will act as the main container for the &amp;quot;Etc&amp;quot; tab, organizing and rendering individual task components in a grid or card layout.&lt;br /&gt;
* It will house all task-specific components (`AddParticipantButton`, `CreateTeamsButton`, `AssignReviewerButton`, etc.) and ensure layout responsiveness.&lt;br /&gt;
&lt;br /&gt;
==== Task Button Components ====&lt;br /&gt;
* AddParticipantButton&lt;br /&gt;
  A button component that, when clicked, triggers a modal or redirects to the participant addition form.&lt;br /&gt;
&lt;br /&gt;
* CreateTeamsButton&lt;br /&gt;
  A button component to initiate the team creation process, either by redirecting to a dedicated page or displaying a modal with relevant options.&lt;br /&gt;
&lt;br /&gt;
* AssignReviewerButton&lt;br /&gt;
  A button component that opens the reviewer assignment view or triggers actions related to reviewer management.&lt;br /&gt;
&lt;br /&gt;
* ViewSubmissionsButton&lt;br /&gt;
  A button allowing users to view all assignment submissions, either by navigating to a submissions page or displaying them in a modal.&lt;br /&gt;
&lt;br /&gt;
* ViewScoresButton&lt;br /&gt;
  A button component for viewing assignment scores, either showing a summary in a modal or linking to a detailed scores page.&lt;br /&gt;
&lt;br /&gt;
* ViewReportsButton&lt;br /&gt;
  A button component for accessing assignment reports, providing users with an overview of feedback and performance metrics.&lt;br /&gt;
&lt;br /&gt;
* ViewDelayedJobs&lt;br /&gt;
  A button component for viewing delayed background jobs associated with the assignment&lt;br /&gt;
&lt;br /&gt;
=== Styling ===&lt;br /&gt;
The UI will be styled using CSS or CSS-in-JS (e.g., `styled-components`) for a cohesive and visually appealing layout.&lt;br /&gt;
&lt;br /&gt;
==== Grid or Card Layout ====&lt;br /&gt;
* Task buttons will be displayed in a grid or card format, providing a clear and organized view.&lt;br /&gt;
* Each button will use color coding and icons for better readability and easy navigation.&lt;br /&gt;
&lt;br /&gt;
==== Responsive Design ====&lt;br /&gt;
* The UI will adapt to various screen sizes, optimizing for both desktop and mobile devices to ensure a consistent user experience.&lt;br /&gt;
* Components will have distinct styles with hover effects and smooth transitions to enhance interactivity.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
&lt;br /&gt;
For this project, creating a use case diagram for the &amp;quot;Etc&amp;quot; tab on the Assignment Edit page in Expertiza could highlight various interactions with the UI. Here's a general outline of possible actors and use cases:&lt;br /&gt;
&lt;br /&gt;
=== Actors: ===&lt;br /&gt;
&lt;br /&gt;
* Instructor/Admin - Primarily interacts with the UI to manage assignment-related tasks.&lt;br /&gt;
&lt;br /&gt;
=== Use Cases: ===&lt;br /&gt;
 &lt;br /&gt;
* Add Participants - Instructor can add students or groups to the assignment.&lt;br /&gt;
* Create Teams - Instructor creates teams within the assignment.&lt;br /&gt;
* Assign Reviewers - Instructor assigns reviewers to specific submissions.&lt;br /&gt;
* View Submissions - Instructor views all submissions related to the assignment.&lt;br /&gt;
* View Scores - Instructor views scores assigned to each submission.&lt;br /&gt;
* View Reports - Instructor can view detailed reports, such as peer reviews and grade distribution.&lt;br /&gt;
* View Delayed Jobs - Instructor checks for delayed background jobs associated with the assignment, providing visibility into any tasks still pending or scheduled in the system.&lt;br /&gt;
&lt;br /&gt;
[[File: ou.jpg |750px|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation ==&lt;br /&gt;
&lt;br /&gt;
The reimplementation of the &amp;quot;Etc&amp;quot; tab will follow a systematic approach using ReactJS and TypeScript, emphasizing maintainability, scalability, and user experience. Each action in the &amp;quot;Etc&amp;quot; tab will be handled as distinct tasks, ensuring modularity and a clear separation of concerns. The following plan outlines the key actions and methods for the new interface:&lt;br /&gt;
&lt;br /&gt;
=== Add Participant Action ===&lt;br /&gt;
The `AddParticipantAction` component will be responsible for handling the addition of new participants. It will collect participant information through a form, perform front-end validations, and send a POST request to the backend API. TypeScript will ensure type safety, while error handling will manage invalid or missing input data. Upon successful addition, the new participant's details will be displayed in the UI, updated in real-time.&lt;br /&gt;
&lt;br /&gt;
=== Create Teams Action ===&lt;br /&gt;
The `CreateTeamsAction` will enable users to group participants into teams. This action will include a user-friendly interface for selecting participants and defining team sizes or names. The component will handle API requests to create and save team data. The state will be managed using React’s Context API, ensuring all updates reflect instantly across the interface. Type checking with TypeScript will prevent errors during team creation, and users will receive feedback on the success or failure of the action.&lt;br /&gt;
&lt;br /&gt;
=== Assign Reviewer Action ===&lt;br /&gt;
The `AssignReviewerAction` will facilitate the reviewer assignment process. It will provide a list of available reviewers and allow users to select and assign them to participants or teams. The action will validate reviewer availability and participant eligibility before sending the assignment request to the backend. Error handling will address conflicts, and the UI will display the updated reviewer assignments in a structured list or table.&lt;br /&gt;
&lt;br /&gt;
=== View Submissions Action ===&lt;br /&gt;
The `ViewSubmissionsAction` component will retrieve and display all submissions related to the assignment. It will fetch submission data from the backend using API calls and present it in a sortable and filterable table. Users can view individual submission details, and TypeScript interfaces will ensure consistent data structures. This action will improve user access to assignment submissions, providing a streamlined review experience.&lt;br /&gt;
&lt;br /&gt;
=== View Scores Action ===&lt;br /&gt;
The `ViewScoresAction` will offer a summary of assignment scores. It will make GET requests to the backend API to fetch scores data, displaying it in an organized format. The component will include options for filtering scores by participant, team, or date. Type safety will be enforced using TypeScript, reducing the likelihood of data-related errors. The action will focus on delivering clear and concise score information to users.&lt;br /&gt;
&lt;br /&gt;
=== View Reports Action ===&lt;br /&gt;
The `ViewReportsAction` will handle the retrieval and display of assignment reports. It will connect with the backend to pull comprehensive reports data, which will be shown in a user-friendly format with options for sorting and exporting. This action will provide users with valuable insights into assignment performance, feedback, and trends, leveraging the structured data from the backend API.&lt;br /&gt;
 &lt;br /&gt;
=== View Delayed Jobs Action ===&lt;br /&gt;
&lt;br /&gt;
The `ViewDelayedJobsAction` allows instructors to check for delayed background jobs related to the assignment, providing visibility into tasks that are pending or scheduled in the system. This feature helps track jobs like notifications and score calculations, ensuring transparency and easy monitoring.&lt;br /&gt;
&lt;br /&gt;
This structured approach will ensure a cohesive and efficient reimplementation of the &amp;quot;Etc&amp;quot; tab, enhancing both the usability and functionality of the Expertiza application. Each action and method is designed with a focus on modularity, data integrity, and user feedback, leveraging modern development practices with React and TypeScript.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
&lt;br /&gt;
Each React component will have a single responsibility, focusing on one specific part of the UI or functionality. For instance:&lt;br /&gt;
&lt;br /&gt;
* The AddParticipantButton component handles only the participant addition functionality.&lt;br /&gt;
* The CreateTeamsButton component manages the team creation process independently. This separation of concerns makes the code easier to understand, test, and maintain.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle ===&lt;br /&gt;
&lt;br /&gt;
Components and functions in this project will be designed to be open for extension but closed for modification. For example:&lt;br /&gt;
&lt;br /&gt;
* The EtcTab container component will be built to accommodate additional task buttons (e.g., new features) without modifying its core logic.&lt;br /&gt;
* New task buttons can be added as separate components, extending the UI without altering existing components.&lt;br /&gt;
&lt;br /&gt;
=== DRY Principle ===&lt;br /&gt;
&lt;br /&gt;
The DRY (Don’t Repeat Yourself) principle will be applied throughout this project to reduce code duplication and enhance maintainability. Reusable components like `TaskButton`, centralized API service functions, shared state via React’s Context API, and utility modules will ensure that common logic is abstracted and reused across the application. This approach will streamline the code, making it consistent, easier to update, and more scalable, while also improving readability and reducing the risk of errors. By following the DRY principle, we aim to create a clean and efficient codebase for the &amp;quot;Etc&amp;quot; tab interface.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
This design document introduces a step-by-step plan for revamping the &amp;quot;Etc&amp;quot; tab on Expertiza's Assignment Edit page, aiming for a user interface that's smooth and straightforward. Using React and TypeScript, the goal is to simplify administrative tasks—like managing participants, setting up teams, and assigning reviewers—so they’re easier and faster to handle. A clean and modular component design lies at the heart of this solution, making it not only simple to maintain but also flexible enough for future upgrades. Prioritizing responsive design and performance boosts ensures that users enjoy a consistent and efficient experience across different devices.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor: ===&lt;br /&gt;
&lt;br /&gt;
Kashika Malick (kmalick@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Students: ===&lt;br /&gt;
&lt;br /&gt;
Pankhuri Priya (ppriya2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Sreeja Nukarapu (snukara@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
Navyatej Tummala (ntummal3@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Snukara</name></author>
	</entry>
</feed>