<?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=Mtatigo</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=Mtatigo"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Mtatigo"/>
	<updated>2026-10-12T20:49:59Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150309</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150309"/>
		<updated>2023-04-30T23:15:00Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Our Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views we have implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js - The course page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses.&lt;br /&gt;
&lt;br /&gt;
2. Card Component &amp;lt;br&amp;gt;&lt;br /&gt;
* Card.js - The &amp;quot;Card&amp;quot; React component renders a card with course information and an option to show/hide the assignments list, including icons for actions that can be taken on the courses and assignments.&lt;br /&gt;
* CardHeader.js - The &amp;quot;CardHeader&amp;quot; React component renders a Bootstrap card header with clickable columns that can be sorted based on columnKeys prop and the onSortClick function.&lt;br /&gt;
* CardList.js - The &amp;quot;CardList&amp;quot; React component renders a list of Card components displaying course information, with sorting and filtering functionality.&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses. We will be adding the course component, and when click on courses, it will list all courses along with the actions. And search and sort functionality will be implemented.&lt;br /&gt;
&lt;br /&gt;
The Courses component renders the CardList component with the courses and columnKeys props passed to it. The CardList component then maps over the courses array and displays a card for each course. The card displays the course data in a table with the columns defined in the columnKeys array.&lt;br /&gt;
&lt;br /&gt;
Overall, this component displays a table of courses with their details, including institution, creation and update dates, and assignments. It is a simple example of how React components can be used to display dynamic data in a user-friendly way.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions. The card component contains Card, CardHeader, CardList.&lt;br /&gt;
&lt;br /&gt;
==== Card.js ====&lt;br /&gt;
This is a React component named &amp;quot;Card&amp;quot;, which renders a card with information about a course. It takes a &amp;quot;course&amp;quot; object as a prop, which contains information about the course and an array of &amp;quot;assignments&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The component uses the &amp;quot;useState&amp;quot; hook to manage the state of whether the assignments list should be shown or not. When the card is clicked, the &amp;quot;toggleAssignments&amp;quot; function is called, which toggles the value of &amp;quot;showAssignments&amp;quot; to show or hide the assignments list.&lt;br /&gt;
&lt;br /&gt;
The component then renders the course information using a mapping function over the keys of the &amp;quot;course&amp;quot; object, excluding the &amp;quot;assignments&amp;quot; and &amp;quot;Id&amp;quot; keys. Each value is displayed in a div with a &amp;quot;card-text&amp;quot; class. At the end, a set of icons is displayed representing various actions that can be taken on the course.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;showAssignments&amp;quot; is true, the component renders a &amp;quot;CardList&amp;quot; component passing the &amp;quot;assignments&amp;quot; array and a set of keys to define the columns of the table.&lt;br /&gt;
&lt;br /&gt;
Overall, this component renders a card that displays course information and provides the ability to show or hide a list of assignments. It also includes icons that represent various actions that can be taken on the course.&lt;br /&gt;
&lt;br /&gt;
==== CardHeader.js ====&lt;br /&gt;
This code exports a React component called CardHeader that takes in two props: columnKeys and onSortClick. It uses the useState hook to keep track of the current sorted column and sort direction. The handleSortClick function is called when a column header is clicked, and it either calls the onSortClick prop (if it's passed in) or sets the sort column and direction state variables.&lt;br /&gt;
&lt;br /&gt;
The returned JSX is a Bootstrap card header component with a row of columns that correspond to the columnKeys prop. Each column has a click handler that calls handleSortClick with the column's key as an argument. If the column is currently the sort column, an up or down arrow is displayed next to the column label based on the current sort direction.&lt;br /&gt;
&lt;br /&gt;
==== CardList.js ====&lt;br /&gt;
This code is a React component called CardList. It takes in two props: courses and columnKeys. It renders a list of Card components that display information about courses. It also includes a search bar to filter the list of courses, and a CardHeader component that provides sorting functionality for the table columns.&lt;br /&gt;
&lt;br /&gt;
The component uses the useState hook to manage the state of sortOrder and searchTerm. The sortedCourses array is initialized as a copy of the courses prop, and is then sorted based on the sortOrder and sortColumn state values. If sortColumn is not set, then the courses are not sorted. The filteredCourses array is generated by filtering sortedCourses based on whether any of the property values of each course object contain the searchTerm.&lt;br /&gt;
&lt;br /&gt;
The handleSortClick function is called when the CardHeader is clicked, and it updates the sortColumn and sortOrder state values based on the current column being sorted. If the same column is clicked twice, the sortOrder is toggled between ascending and descending.&lt;br /&gt;
&lt;br /&gt;
Finally, the CardList component renders a CardHeader component and a list of Card components. The CardHeader component is passed the columnKeys and handleSortClick function as props, while the Card component is passed a course object as a prop.&lt;br /&gt;
&lt;br /&gt;
== Our Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Courses Page - The view of courses list on expertiza. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Course-View.png | 1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Ascending Sort of Courses - Sorting the courses based on the course name in Ascending order. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Asc-sort-courses.png |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Descending Sort of Courses - Sorting the courses based on the course name in Descending order. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Des-sort-courses.png |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Global Search for Courses - The search results based on the Eng===&lt;br /&gt;
&lt;br /&gt;
[[File:Search-courses.png | 1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Assignments Under Courses - The view of the assignments list under course on UI. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Assignments-View.png |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Ascending Sort of Assignments - Sorting the assignments based on the assignment name in Ascending order. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Asc-sort-Assignments.png |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Descending Sort of Assignments - Sorting the assignments based on the assignment name in Descending order. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Des-sort-Assignments.png |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Global Search for Assignments - The search results based on the 2022-01-3===&lt;br /&gt;
&lt;br /&gt;
[[File:Search-assignments.png | 1200px]]&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Since we do not have a database to implement in the reimplementation_front_end GitHub repo, we have to mock the databases. &lt;br /&gt;
&lt;br /&gt;
*To create a mock database in the reimplementation_front_end GitHub repository, we need to create a JSON file.&lt;br /&gt;
*The first step is to generate mock data with a structure similar to that of the actual database. This can be done using tools like https://www.mockaroo.com/.&lt;br /&gt;
*The next step is to convert the generated data into a JSON file format.&lt;br /&gt;
*The JSON file is then saved for use in the React frontend.&lt;br /&gt;
*In the React component, we import the JSON file by assigning it to a variable.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# It should list the courses with necessary information like created date, instructor and updated date and actions.&lt;br /&gt;
# And also show sort and search option on the UI.&lt;br /&gt;
# Click on course, it should list the assignments under that course.&lt;br /&gt;
&lt;br /&gt;
* Sort on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any header of courses.( 1 click for ascending and 2 clicks for descending)&lt;br /&gt;
# Courses will be listed in that sorting order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# In search bar type any string you want to search.&lt;br /&gt;
# It should list the courses that match with given search name.&lt;br /&gt;
&lt;br /&gt;
* Assignments &lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
&lt;br /&gt;
* Sort on Assignment&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
# Click on any header of the assignment.( 1 click for ascending and 2 clicks for descending)&lt;br /&gt;
# Assignment will be listed in that sorting order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
# In search bar type any string you want to search.&lt;br /&gt;
# It should list the assignments that match with given search name.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing ===&lt;br /&gt;
&lt;br /&gt;
As the changes are only to the UI. There is no backend for this project as now. So, in the current scope we don't need add any test cases. And there are no existing test cases for this project.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
&lt;br /&gt;
Github Repository: https://github.com/mithila-reddy/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
Pull Request: https://github.com/expertiza/reimplementation-front-end/pull/9&lt;br /&gt;
&lt;br /&gt;
Deployment link: http://152.7.177.191:3000/&lt;br /&gt;
&lt;br /&gt;
Youtube link: https://youtu.be/ZAZkJBvP_M4&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Search-courses.png&amp;diff=150308</id>
		<title>File:Search-courses.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Search-courses.png&amp;diff=150308"/>
		<updated>2023-04-30T23:09:23Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Search-assignments.png&amp;diff=150307</id>
		<title>File:Search-assignments.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Search-assignments.png&amp;diff=150307"/>
		<updated>2023-04-30T23:09:00Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Des-sort-courses.png&amp;diff=150306</id>
		<title>File:Des-sort-courses.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Des-sort-courses.png&amp;diff=150306"/>
		<updated>2023-04-30T23:08:44Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Des-sort-Assignments.png&amp;diff=150305</id>
		<title>File:Des-sort-Assignments.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Des-sort-Assignments.png&amp;diff=150305"/>
		<updated>2023-04-30T23:08:23Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Asc-sort-courses.png&amp;diff=150304</id>
		<title>File:Asc-sort-courses.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Asc-sort-courses.png&amp;diff=150304"/>
		<updated>2023-04-30T23:08:03Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Asc-sort-Assignments.png&amp;diff=150303</id>
		<title>File:Asc-sort-Assignments.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Asc-sort-Assignments.png&amp;diff=150303"/>
		<updated>2023-04-30T23:07:45Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150302</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150302"/>
		<updated>2023-04-30T23:03:31Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Assignments Under Courses - The view of the assignments list of that course on UI. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views we have implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js - The course page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses.&lt;br /&gt;
&lt;br /&gt;
2. Card Component &amp;lt;br&amp;gt;&lt;br /&gt;
* Card.js - The &amp;quot;Card&amp;quot; React component renders a card with course information and an option to show/hide the assignments list, including icons for actions that can be taken on the courses and assignments.&lt;br /&gt;
* CardHeader.js - The &amp;quot;CardHeader&amp;quot; React component renders a Bootstrap card header with clickable columns that can be sorted based on columnKeys prop and the onSortClick function.&lt;br /&gt;
* CardList.js - The &amp;quot;CardList&amp;quot; React component renders a list of Card components displaying course information, with sorting and filtering functionality.&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses. We will be adding the course component, and when click on courses, it will list all courses along with the actions. And search and sort functionality will be implemented.&lt;br /&gt;
&lt;br /&gt;
The Courses component renders the CardList component with the courses and columnKeys props passed to it. The CardList component then maps over the courses array and displays a card for each course. The card displays the course data in a table with the columns defined in the columnKeys array.&lt;br /&gt;
&lt;br /&gt;
Overall, this component displays a table of courses with their details, including institution, creation and update dates, and assignments. It is a simple example of how React components can be used to display dynamic data in a user-friendly way.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions. The card component contains Card, CardHeader, CardList.&lt;br /&gt;
&lt;br /&gt;
==== Card.js ====&lt;br /&gt;
This is a React component named &amp;quot;Card&amp;quot;, which renders a card with information about a course. It takes a &amp;quot;course&amp;quot; object as a prop, which contains information about the course and an array of &amp;quot;assignments&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The component uses the &amp;quot;useState&amp;quot; hook to manage the state of whether the assignments list should be shown or not. When the card is clicked, the &amp;quot;toggleAssignments&amp;quot; function is called, which toggles the value of &amp;quot;showAssignments&amp;quot; to show or hide the assignments list.&lt;br /&gt;
&lt;br /&gt;
The component then renders the course information using a mapping function over the keys of the &amp;quot;course&amp;quot; object, excluding the &amp;quot;assignments&amp;quot; and &amp;quot;Id&amp;quot; keys. Each value is displayed in a div with a &amp;quot;card-text&amp;quot; class. At the end, a set of icons is displayed representing various actions that can be taken on the course.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;showAssignments&amp;quot; is true, the component renders a &amp;quot;CardList&amp;quot; component passing the &amp;quot;assignments&amp;quot; array and a set of keys to define the columns of the table.&lt;br /&gt;
&lt;br /&gt;
Overall, this component renders a card that displays course information and provides the ability to show or hide a list of assignments. It also includes icons that represent various actions that can be taken on the course.&lt;br /&gt;
&lt;br /&gt;
==== CardHeader.js ====&lt;br /&gt;
This code exports a React component called CardHeader that takes in two props: columnKeys and onSortClick. It uses the useState hook to keep track of the current sorted column and sort direction. The handleSortClick function is called when a column header is clicked, and it either calls the onSortClick prop (if it's passed in) or sets the sort column and direction state variables.&lt;br /&gt;
&lt;br /&gt;
The returned JSX is a Bootstrap card header component with a row of columns that correspond to the columnKeys prop. Each column has a click handler that calls handleSortClick with the column's key as an argument. If the column is currently the sort column, an up or down arrow is displayed next to the column label based on the current sort direction.&lt;br /&gt;
&lt;br /&gt;
==== CardList.js ====&lt;br /&gt;
This code is a React component called CardList. It takes in two props: courses and columnKeys. It renders a list of Card components that display information about courses. It also includes a search bar to filter the list of courses, and a CardHeader component that provides sorting functionality for the table columns.&lt;br /&gt;
&lt;br /&gt;
The component uses the useState hook to manage the state of sortOrder and searchTerm. The sortedCourses array is initialized as a copy of the courses prop, and is then sorted based on the sortOrder and sortColumn state values. If sortColumn is not set, then the courses are not sorted. The filteredCourses array is generated by filtering sortedCourses based on whether any of the property values of each course object contain the searchTerm.&lt;br /&gt;
&lt;br /&gt;
The handleSortClick function is called when the CardHeader is clicked, and it updates the sortColumn and sortOrder state values based on the current column being sorted. If the same column is clicked twice, the sortOrder is toggled between ascending and descending.&lt;br /&gt;
&lt;br /&gt;
Finally, the CardList component renders a CardHeader component and a list of Card components. The CardHeader component is passed the columnKeys and handleSortClick function as props, while the Card component is passed a course object as a prop.&lt;br /&gt;
&lt;br /&gt;
== Our Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Courses Page - The view of courses list on expertiza. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Course-View.png | 1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Assignments Under Courses - The view of the assignments list under course on UI. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Assignments-View.png |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Ascending Sort of Courses - Sorting the courses based on the course name in Ascending order. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Asc_sort.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Descending Sort of Course - Sorting the courses based on the course name in Descending order. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Desc_order.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Global Search - The search results based on the unvie===&lt;br /&gt;
&lt;br /&gt;
[[File:Search.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Since we do not have a database to implement in the reimplementation_front_end GitHub repo, we have to mock the databases. &lt;br /&gt;
&lt;br /&gt;
*To create a mock database in the reimplementation_front_end GitHub repository, we need to create a JSON file.&lt;br /&gt;
*The first step is to generate mock data with a structure similar to that of the actual database. This can be done using tools like https://www.mockaroo.com/.&lt;br /&gt;
*The next step is to convert the generated data into a JSON file format.&lt;br /&gt;
*The JSON file is then saved for use in the React frontend.&lt;br /&gt;
*In the React component, we import the JSON file by assigning it to a variable.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# It should list the courses with necessary information like created date, instructor and updated date and actions.&lt;br /&gt;
# And also show sort and search option on the UI.&lt;br /&gt;
# Click on course, it should list the assignments under that course.&lt;br /&gt;
&lt;br /&gt;
* Sort on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any header of courses.( 1 click for ascending and 2 clicks for descending)&lt;br /&gt;
# Courses will be listed in that sorting order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# In search bar type any string you want to search.&lt;br /&gt;
# It should list the courses that match with given search name.&lt;br /&gt;
&lt;br /&gt;
* Assignments &lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
&lt;br /&gt;
* Sort on Assignment&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
# Click on any header of the assignment.( 1 click for ascending and 2 clicks for descending)&lt;br /&gt;
# Assignment will be listed in that sorting order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
# In search bar type any string you want to search.&lt;br /&gt;
# It should list the assignments that match with given search name.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing ===&lt;br /&gt;
&lt;br /&gt;
As the changes are only to the UI. There is no backend for this project as now. So, in the current scope we don't need add any test cases. And there are no existing test cases for this project.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
&lt;br /&gt;
Github Repository: https://github.com/mithila-reddy/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
Pull Request: https://github.com/expertiza/reimplementation-front-end/pull/9&lt;br /&gt;
&lt;br /&gt;
Deployment link: http://152.7.177.191:3000/&lt;br /&gt;
&lt;br /&gt;
Youtube link: https://youtu.be/ZAZkJBvP_M4&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150301</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150301"/>
		<updated>2023-04-30T23:03:06Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Assignments Under Courses - The view of the assignments list of that course on UI. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views we have implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js - The course page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses.&lt;br /&gt;
&lt;br /&gt;
2. Card Component &amp;lt;br&amp;gt;&lt;br /&gt;
* Card.js - The &amp;quot;Card&amp;quot; React component renders a card with course information and an option to show/hide the assignments list, including icons for actions that can be taken on the courses and assignments.&lt;br /&gt;
* CardHeader.js - The &amp;quot;CardHeader&amp;quot; React component renders a Bootstrap card header with clickable columns that can be sorted based on columnKeys prop and the onSortClick function.&lt;br /&gt;
* CardList.js - The &amp;quot;CardList&amp;quot; React component renders a list of Card components displaying course information, with sorting and filtering functionality.&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses. We will be adding the course component, and when click on courses, it will list all courses along with the actions. And search and sort functionality will be implemented.&lt;br /&gt;
&lt;br /&gt;
The Courses component renders the CardList component with the courses and columnKeys props passed to it. The CardList component then maps over the courses array and displays a card for each course. The card displays the course data in a table with the columns defined in the columnKeys array.&lt;br /&gt;
&lt;br /&gt;
Overall, this component displays a table of courses with their details, including institution, creation and update dates, and assignments. It is a simple example of how React components can be used to display dynamic data in a user-friendly way.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions. The card component contains Card, CardHeader, CardList.&lt;br /&gt;
&lt;br /&gt;
==== Card.js ====&lt;br /&gt;
This is a React component named &amp;quot;Card&amp;quot;, which renders a card with information about a course. It takes a &amp;quot;course&amp;quot; object as a prop, which contains information about the course and an array of &amp;quot;assignments&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The component uses the &amp;quot;useState&amp;quot; hook to manage the state of whether the assignments list should be shown or not. When the card is clicked, the &amp;quot;toggleAssignments&amp;quot; function is called, which toggles the value of &amp;quot;showAssignments&amp;quot; to show or hide the assignments list.&lt;br /&gt;
&lt;br /&gt;
The component then renders the course information using a mapping function over the keys of the &amp;quot;course&amp;quot; object, excluding the &amp;quot;assignments&amp;quot; and &amp;quot;Id&amp;quot; keys. Each value is displayed in a div with a &amp;quot;card-text&amp;quot; class. At the end, a set of icons is displayed representing various actions that can be taken on the course.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;showAssignments&amp;quot; is true, the component renders a &amp;quot;CardList&amp;quot; component passing the &amp;quot;assignments&amp;quot; array and a set of keys to define the columns of the table.&lt;br /&gt;
&lt;br /&gt;
Overall, this component renders a card that displays course information and provides the ability to show or hide a list of assignments. It also includes icons that represent various actions that can be taken on the course.&lt;br /&gt;
&lt;br /&gt;
==== CardHeader.js ====&lt;br /&gt;
This code exports a React component called CardHeader that takes in two props: columnKeys and onSortClick. It uses the useState hook to keep track of the current sorted column and sort direction. The handleSortClick function is called when a column header is clicked, and it either calls the onSortClick prop (if it's passed in) or sets the sort column and direction state variables.&lt;br /&gt;
&lt;br /&gt;
The returned JSX is a Bootstrap card header component with a row of columns that correspond to the columnKeys prop. Each column has a click handler that calls handleSortClick with the column's key as an argument. If the column is currently the sort column, an up or down arrow is displayed next to the column label based on the current sort direction.&lt;br /&gt;
&lt;br /&gt;
==== CardList.js ====&lt;br /&gt;
This code is a React component called CardList. It takes in two props: courses and columnKeys. It renders a list of Card components that display information about courses. It also includes a search bar to filter the list of courses, and a CardHeader component that provides sorting functionality for the table columns.&lt;br /&gt;
&lt;br /&gt;
The component uses the useState hook to manage the state of sortOrder and searchTerm. The sortedCourses array is initialized as a copy of the courses prop, and is then sorted based on the sortOrder and sortColumn state values. If sortColumn is not set, then the courses are not sorted. The filteredCourses array is generated by filtering sortedCourses based on whether any of the property values of each course object contain the searchTerm.&lt;br /&gt;
&lt;br /&gt;
The handleSortClick function is called when the CardHeader is clicked, and it updates the sortColumn and sortOrder state values based on the current column being sorted. If the same column is clicked twice, the sortOrder is toggled between ascending and descending.&lt;br /&gt;
&lt;br /&gt;
Finally, the CardList component renders a CardHeader component and a list of Card components. The CardHeader component is passed the columnKeys and handleSortClick function as props, while the Card component is passed a course object as a prop.&lt;br /&gt;
&lt;br /&gt;
== Our Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Courses Page - The view of courses list on expertiza. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Course-View.png | 1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Assignments Under Courses - The view of the assignments list of that course on UI. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Assignments-View.png |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Ascending Sort of Courses - Sorting the courses based on the course name in Ascending order. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Asc_sort.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Descending Sort of Course - Sorting the courses based on the course name in Descending order. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Desc_order.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Global Search - The search results based on the unvie===&lt;br /&gt;
&lt;br /&gt;
[[File:Search.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Since we do not have a database to implement in the reimplementation_front_end GitHub repo, we have to mock the databases. &lt;br /&gt;
&lt;br /&gt;
*To create a mock database in the reimplementation_front_end GitHub repository, we need to create a JSON file.&lt;br /&gt;
*The first step is to generate mock data with a structure similar to that of the actual database. This can be done using tools like https://www.mockaroo.com/.&lt;br /&gt;
*The next step is to convert the generated data into a JSON file format.&lt;br /&gt;
*The JSON file is then saved for use in the React frontend.&lt;br /&gt;
*In the React component, we import the JSON file by assigning it to a variable.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# It should list the courses with necessary information like created date, instructor and updated date and actions.&lt;br /&gt;
# And also show sort and search option on the UI.&lt;br /&gt;
# Click on course, it should list the assignments under that course.&lt;br /&gt;
&lt;br /&gt;
* Sort on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any header of courses.( 1 click for ascending and 2 clicks for descending)&lt;br /&gt;
# Courses will be listed in that sorting order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# In search bar type any string you want to search.&lt;br /&gt;
# It should list the courses that match with given search name.&lt;br /&gt;
&lt;br /&gt;
* Assignments &lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
&lt;br /&gt;
* Sort on Assignment&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
# Click on any header of the assignment.( 1 click for ascending and 2 clicks for descending)&lt;br /&gt;
# Assignment will be listed in that sorting order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
# In search bar type any string you want to search.&lt;br /&gt;
# It should list the assignments that match with given search name.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing ===&lt;br /&gt;
&lt;br /&gt;
As the changes are only to the UI. There is no backend for this project as now. So, in the current scope we don't need add any test cases. And there are no existing test cases for this project.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
&lt;br /&gt;
Github Repository: https://github.com/mithila-reddy/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
Pull Request: https://github.com/expertiza/reimplementation-front-end/pull/9&lt;br /&gt;
&lt;br /&gt;
Deployment link: http://152.7.177.191:3000/&lt;br /&gt;
&lt;br /&gt;
Youtube link: https://youtu.be/ZAZkJBvP_M4&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assignments-View.png&amp;diff=150300</id>
		<title>File:Assignments-View.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assignments-View.png&amp;diff=150300"/>
		<updated>2023-04-30T23:02:04Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150299</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150299"/>
		<updated>2023-04-30T23:00:39Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Our Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views we have implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js - The course page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses.&lt;br /&gt;
&lt;br /&gt;
2. Card Component &amp;lt;br&amp;gt;&lt;br /&gt;
* Card.js - The &amp;quot;Card&amp;quot; React component renders a card with course information and an option to show/hide the assignments list, including icons for actions that can be taken on the courses and assignments.&lt;br /&gt;
* CardHeader.js - The &amp;quot;CardHeader&amp;quot; React component renders a Bootstrap card header with clickable columns that can be sorted based on columnKeys prop and the onSortClick function.&lt;br /&gt;
* CardList.js - The &amp;quot;CardList&amp;quot; React component renders a list of Card components displaying course information, with sorting and filtering functionality.&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses. We will be adding the course component, and when click on courses, it will list all courses along with the actions. And search and sort functionality will be implemented.&lt;br /&gt;
&lt;br /&gt;
The Courses component renders the CardList component with the courses and columnKeys props passed to it. The CardList component then maps over the courses array and displays a card for each course. The card displays the course data in a table with the columns defined in the columnKeys array.&lt;br /&gt;
&lt;br /&gt;
Overall, this component displays a table of courses with their details, including institution, creation and update dates, and assignments. It is a simple example of how React components can be used to display dynamic data in a user-friendly way.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions. The card component contains Card, CardHeader, CardList.&lt;br /&gt;
&lt;br /&gt;
==== Card.js ====&lt;br /&gt;
This is a React component named &amp;quot;Card&amp;quot;, which renders a card with information about a course. It takes a &amp;quot;course&amp;quot; object as a prop, which contains information about the course and an array of &amp;quot;assignments&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The component uses the &amp;quot;useState&amp;quot; hook to manage the state of whether the assignments list should be shown or not. When the card is clicked, the &amp;quot;toggleAssignments&amp;quot; function is called, which toggles the value of &amp;quot;showAssignments&amp;quot; to show or hide the assignments list.&lt;br /&gt;
&lt;br /&gt;
The component then renders the course information using a mapping function over the keys of the &amp;quot;course&amp;quot; object, excluding the &amp;quot;assignments&amp;quot; and &amp;quot;Id&amp;quot; keys. Each value is displayed in a div with a &amp;quot;card-text&amp;quot; class. At the end, a set of icons is displayed representing various actions that can be taken on the course.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;showAssignments&amp;quot; is true, the component renders a &amp;quot;CardList&amp;quot; component passing the &amp;quot;assignments&amp;quot; array and a set of keys to define the columns of the table.&lt;br /&gt;
&lt;br /&gt;
Overall, this component renders a card that displays course information and provides the ability to show or hide a list of assignments. It also includes icons that represent various actions that can be taken on the course.&lt;br /&gt;
&lt;br /&gt;
==== CardHeader.js ====&lt;br /&gt;
This code exports a React component called CardHeader that takes in two props: columnKeys and onSortClick. It uses the useState hook to keep track of the current sorted column and sort direction. The handleSortClick function is called when a column header is clicked, and it either calls the onSortClick prop (if it's passed in) or sets the sort column and direction state variables.&lt;br /&gt;
&lt;br /&gt;
The returned JSX is a Bootstrap card header component with a row of columns that correspond to the columnKeys prop. Each column has a click handler that calls handleSortClick with the column's key as an argument. If the column is currently the sort column, an up or down arrow is displayed next to the column label based on the current sort direction.&lt;br /&gt;
&lt;br /&gt;
==== CardList.js ====&lt;br /&gt;
This code is a React component called CardList. It takes in two props: courses and columnKeys. It renders a list of Card components that display information about courses. It also includes a search bar to filter the list of courses, and a CardHeader component that provides sorting functionality for the table columns.&lt;br /&gt;
&lt;br /&gt;
The component uses the useState hook to manage the state of sortOrder and searchTerm. The sortedCourses array is initialized as a copy of the courses prop, and is then sorted based on the sortOrder and sortColumn state values. If sortColumn is not set, then the courses are not sorted. The filteredCourses array is generated by filtering sortedCourses based on whether any of the property values of each course object contain the searchTerm.&lt;br /&gt;
&lt;br /&gt;
The handleSortClick function is called when the CardHeader is clicked, and it updates the sortColumn and sortOrder state values based on the current column being sorted. If the same column is clicked twice, the sortOrder is toggled between ascending and descending.&lt;br /&gt;
&lt;br /&gt;
Finally, the CardList component renders a CardHeader component and a list of Card components. The CardHeader component is passed the columnKeys and handleSortClick function as props, while the Card component is passed a course object as a prop.&lt;br /&gt;
&lt;br /&gt;
== Our Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Courses Page - The view of courses list on expertiza. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Course-View.png | 1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Assignments Under Courses - The view of the assignments list of that course on UI. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Courses_assignments.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Ascending Sort of Courses - Sorting the courses based on the course name in Ascending order. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Asc_sort.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Descending Sort of Course - Sorting the courses based on the course name in Descending order. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Desc_order.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Global Search - The search results based on the unvie===&lt;br /&gt;
&lt;br /&gt;
[[File:Search.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Since we do not have a database to implement in the reimplementation_front_end GitHub repo, we have to mock the databases. &lt;br /&gt;
&lt;br /&gt;
*To create a mock database in the reimplementation_front_end GitHub repository, we need to create a JSON file.&lt;br /&gt;
*The first step is to generate mock data with a structure similar to that of the actual database. This can be done using tools like https://www.mockaroo.com/.&lt;br /&gt;
*The next step is to convert the generated data into a JSON file format.&lt;br /&gt;
*The JSON file is then saved for use in the React frontend.&lt;br /&gt;
*In the React component, we import the JSON file by assigning it to a variable.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# It should list the courses with necessary information like created date, instructor and updated date and actions.&lt;br /&gt;
# And also show sort and search option on the UI.&lt;br /&gt;
# Click on course, it should list the assignments under that course.&lt;br /&gt;
&lt;br /&gt;
* Sort on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any header of courses.( 1 click for ascending and 2 clicks for descending)&lt;br /&gt;
# Courses will be listed in that sorting order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# In search bar type any string you want to search.&lt;br /&gt;
# It should list the courses that match with given search name.&lt;br /&gt;
&lt;br /&gt;
* Assignments &lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
&lt;br /&gt;
* Sort on Assignment&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
# Click on any header of the assignment.( 1 click for ascending and 2 clicks for descending)&lt;br /&gt;
# Assignment will be listed in that sorting order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
# In search bar type any string you want to search.&lt;br /&gt;
# It should list the assignments that match with given search name.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing ===&lt;br /&gt;
&lt;br /&gt;
As the changes are only to the UI. There is no backend for this project as now. So, in the current scope we don't need add any test cases. And there are no existing test cases for this project.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
&lt;br /&gt;
Github Repository: https://github.com/mithila-reddy/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
Pull Request: https://github.com/expertiza/reimplementation-front-end/pull/9&lt;br /&gt;
&lt;br /&gt;
Deployment link: http://152.7.177.191:3000/&lt;br /&gt;
&lt;br /&gt;
Youtube link: https://youtu.be/ZAZkJBvP_M4&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Course-View.png&amp;diff=150298</id>
		<title>File:Course-View.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Course-View.png&amp;diff=150298"/>
		<updated>2023-04-30T22:59:34Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Course-List-View.png&amp;diff=150297</id>
		<title>File:Course-List-View.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Course-List-View.png&amp;diff=150297"/>
		<updated>2023-04-30T22:57:33Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: Mtatigo uploaded a new version of File:Course-List-View.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Course-List-View.png&amp;diff=150296</id>
		<title>File:Course-List-View.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Course-List-View.png&amp;diff=150296"/>
		<updated>2023-04-30T22:55:50Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: Mtatigo uploaded a new version of File:Course-List-View.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150295</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150295"/>
		<updated>2023-04-30T22:53:59Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Courses Page - The view of courses list on expertiza. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views we have implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js - The course page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses.&lt;br /&gt;
&lt;br /&gt;
2. Card Component &amp;lt;br&amp;gt;&lt;br /&gt;
* Card.js - The &amp;quot;Card&amp;quot; React component renders a card with course information and an option to show/hide the assignments list, including icons for actions that can be taken on the courses and assignments.&lt;br /&gt;
* CardHeader.js - The &amp;quot;CardHeader&amp;quot; React component renders a Bootstrap card header with clickable columns that can be sorted based on columnKeys prop and the onSortClick function.&lt;br /&gt;
* CardList.js - The &amp;quot;CardList&amp;quot; React component renders a list of Card components displaying course information, with sorting and filtering functionality.&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses. We will be adding the course component, and when click on courses, it will list all courses along with the actions. And search and sort functionality will be implemented.&lt;br /&gt;
&lt;br /&gt;
The Courses component renders the CardList component with the courses and columnKeys props passed to it. The CardList component then maps over the courses array and displays a card for each course. The card displays the course data in a table with the columns defined in the columnKeys array.&lt;br /&gt;
&lt;br /&gt;
Overall, this component displays a table of courses with their details, including institution, creation and update dates, and assignments. It is a simple example of how React components can be used to display dynamic data in a user-friendly way.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions. The card component contains Card, CardHeader, CardList.&lt;br /&gt;
&lt;br /&gt;
==== Card.js ====&lt;br /&gt;
This is a React component named &amp;quot;Card&amp;quot;, which renders a card with information about a course. It takes a &amp;quot;course&amp;quot; object as a prop, which contains information about the course and an array of &amp;quot;assignments&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The component uses the &amp;quot;useState&amp;quot; hook to manage the state of whether the assignments list should be shown or not. When the card is clicked, the &amp;quot;toggleAssignments&amp;quot; function is called, which toggles the value of &amp;quot;showAssignments&amp;quot; to show or hide the assignments list.&lt;br /&gt;
&lt;br /&gt;
The component then renders the course information using a mapping function over the keys of the &amp;quot;course&amp;quot; object, excluding the &amp;quot;assignments&amp;quot; and &amp;quot;Id&amp;quot; keys. Each value is displayed in a div with a &amp;quot;card-text&amp;quot; class. At the end, a set of icons is displayed representing various actions that can be taken on the course.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;showAssignments&amp;quot; is true, the component renders a &amp;quot;CardList&amp;quot; component passing the &amp;quot;assignments&amp;quot; array and a set of keys to define the columns of the table.&lt;br /&gt;
&lt;br /&gt;
Overall, this component renders a card that displays course information and provides the ability to show or hide a list of assignments. It also includes icons that represent various actions that can be taken on the course.&lt;br /&gt;
&lt;br /&gt;
==== CardHeader.js ====&lt;br /&gt;
This code exports a React component called CardHeader that takes in two props: columnKeys and onSortClick. It uses the useState hook to keep track of the current sorted column and sort direction. The handleSortClick function is called when a column header is clicked, and it either calls the onSortClick prop (if it's passed in) or sets the sort column and direction state variables.&lt;br /&gt;
&lt;br /&gt;
The returned JSX is a Bootstrap card header component with a row of columns that correspond to the columnKeys prop. Each column has a click handler that calls handleSortClick with the column's key as an argument. If the column is currently the sort column, an up or down arrow is displayed next to the column label based on the current sort direction.&lt;br /&gt;
&lt;br /&gt;
==== CardList.js ====&lt;br /&gt;
This code is a React component called CardList. It takes in two props: courses and columnKeys. It renders a list of Card components that display information about courses. It also includes a search bar to filter the list of courses, and a CardHeader component that provides sorting functionality for the table columns.&lt;br /&gt;
&lt;br /&gt;
The component uses the useState hook to manage the state of sortOrder and searchTerm. The sortedCourses array is initialized as a copy of the courses prop, and is then sorted based on the sortOrder and sortColumn state values. If sortColumn is not set, then the courses are not sorted. The filteredCourses array is generated by filtering sortedCourses based on whether any of the property values of each course object contain the searchTerm.&lt;br /&gt;
&lt;br /&gt;
The handleSortClick function is called when the CardHeader is clicked, and it updates the sortColumn and sortOrder state values based on the current column being sorted. If the same column is clicked twice, the sortOrder is toggled between ascending and descending.&lt;br /&gt;
&lt;br /&gt;
Finally, the CardList component renders a CardHeader component and a list of Card components. The CardHeader component is passed the columnKeys and handleSortClick function as props, while the Card component is passed a course object as a prop.&lt;br /&gt;
&lt;br /&gt;
== Our Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Courses Page - The view of courses list on expertiza. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Course-List-View.png | 1150px]]&lt;br /&gt;
&lt;br /&gt;
=== Assignments Under Courses - The view of the assignments list of that course on UI. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Courses_assignments.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Ascending Sort of Courses - Sorting the courses based on the course name in Ascending order. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Asc_sort.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Descending Sort of Course - Sorting the courses based on the course name in Descending order. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Desc_order.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Global Search - The search results based on the unvie===&lt;br /&gt;
&lt;br /&gt;
[[File:Search.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Since we do not have a database to implement in the reimplementation_front_end GitHub repo, we have to mock the databases. &lt;br /&gt;
&lt;br /&gt;
*To create a mock database in the reimplementation_front_end GitHub repository, we need to create a JSON file.&lt;br /&gt;
*The first step is to generate mock data with a structure similar to that of the actual database. This can be done using tools like https://www.mockaroo.com/.&lt;br /&gt;
*The next step is to convert the generated data into a JSON file format.&lt;br /&gt;
*The JSON file is then saved for use in the React frontend.&lt;br /&gt;
*In the React component, we import the JSON file by assigning it to a variable.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# It should list the courses with necessary information like created date, instructor and updated date and actions.&lt;br /&gt;
# And also show sort and search option on the UI.&lt;br /&gt;
# Click on course, it should list the assignments under that course.&lt;br /&gt;
&lt;br /&gt;
* Sort on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any header of courses.( 1 click for ascending and 2 clicks for descending)&lt;br /&gt;
# Courses will be listed in that sorting order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# In search bar type any string you want to search.&lt;br /&gt;
# It should list the courses that match with given search name.&lt;br /&gt;
&lt;br /&gt;
* Assignments &lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
&lt;br /&gt;
* Sort on Assignment&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
# Click on any header of the assignment.( 1 click for ascending and 2 clicks for descending)&lt;br /&gt;
# Assignment will be listed in that sorting order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
# In search bar type any string you want to search.&lt;br /&gt;
# It should list the assignments that match with given search name.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing ===&lt;br /&gt;
&lt;br /&gt;
As the changes are only to the UI. There is no backend for this project as now. So, in the current scope we don't need add any test cases. And there are no existing test cases for this project.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
&lt;br /&gt;
Github Repository: https://github.com/mithila-reddy/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
Pull Request: https://github.com/expertiza/reimplementation-front-end/pull/9&lt;br /&gt;
&lt;br /&gt;
Deployment link: http://152.7.177.191:3000/&lt;br /&gt;
&lt;br /&gt;
Youtube link: https://youtu.be/ZAZkJBvP_M4&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Course-List-View.png&amp;diff=150294</id>
		<title>File:Course-List-View.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Course-List-View.png&amp;diff=150294"/>
		<updated>2023-04-30T22:51:38Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150293</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150293"/>
		<updated>2023-04-30T22:43:01Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* About */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views we have implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js - The course page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses.&lt;br /&gt;
&lt;br /&gt;
2. Card Component &amp;lt;br&amp;gt;&lt;br /&gt;
* Card.js - The &amp;quot;Card&amp;quot; React component renders a card with course information and an option to show/hide the assignments list, including icons for actions that can be taken on the courses and assignments.&lt;br /&gt;
* CardHeader.js - The &amp;quot;CardHeader&amp;quot; React component renders a Bootstrap card header with clickable columns that can be sorted based on columnKeys prop and the onSortClick function.&lt;br /&gt;
* CardList.js - The &amp;quot;CardList&amp;quot; React component renders a list of Card components displaying course information, with sorting and filtering functionality.&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses. We will be adding the course component, and when click on courses, it will list all courses along with the actions. And search and sort functionality will be implemented.&lt;br /&gt;
&lt;br /&gt;
The Courses component renders the CardList component with the courses and columnKeys props passed to it. The CardList component then maps over the courses array and displays a card for each course. The card displays the course data in a table with the columns defined in the columnKeys array.&lt;br /&gt;
&lt;br /&gt;
Overall, this component displays a table of courses with their details, including institution, creation and update dates, and assignments. It is a simple example of how React components can be used to display dynamic data in a user-friendly way.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions. The card component contains Card, CardHeader, CardList.&lt;br /&gt;
&lt;br /&gt;
==== Card.js ====&lt;br /&gt;
This is a React component named &amp;quot;Card&amp;quot;, which renders a card with information about a course. It takes a &amp;quot;course&amp;quot; object as a prop, which contains information about the course and an array of &amp;quot;assignments&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The component uses the &amp;quot;useState&amp;quot; hook to manage the state of whether the assignments list should be shown or not. When the card is clicked, the &amp;quot;toggleAssignments&amp;quot; function is called, which toggles the value of &amp;quot;showAssignments&amp;quot; to show or hide the assignments list.&lt;br /&gt;
&lt;br /&gt;
The component then renders the course information using a mapping function over the keys of the &amp;quot;course&amp;quot; object, excluding the &amp;quot;assignments&amp;quot; and &amp;quot;Id&amp;quot; keys. Each value is displayed in a div with a &amp;quot;card-text&amp;quot; class. At the end, a set of icons is displayed representing various actions that can be taken on the course.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;showAssignments&amp;quot; is true, the component renders a &amp;quot;CardList&amp;quot; component passing the &amp;quot;assignments&amp;quot; array and a set of keys to define the columns of the table.&lt;br /&gt;
&lt;br /&gt;
Overall, this component renders a card that displays course information and provides the ability to show or hide a list of assignments. It also includes icons that represent various actions that can be taken on the course.&lt;br /&gt;
&lt;br /&gt;
==== CardHeader.js ====&lt;br /&gt;
This code exports a React component called CardHeader that takes in two props: columnKeys and onSortClick. It uses the useState hook to keep track of the current sorted column and sort direction. The handleSortClick function is called when a column header is clicked, and it either calls the onSortClick prop (if it's passed in) or sets the sort column and direction state variables.&lt;br /&gt;
&lt;br /&gt;
The returned JSX is a Bootstrap card header component with a row of columns that correspond to the columnKeys prop. Each column has a click handler that calls handleSortClick with the column's key as an argument. If the column is currently the sort column, an up or down arrow is displayed next to the column label based on the current sort direction.&lt;br /&gt;
&lt;br /&gt;
==== CardList.js ====&lt;br /&gt;
This code is a React component called CardList. It takes in two props: courses and columnKeys. It renders a list of Card components that display information about courses. It also includes a search bar to filter the list of courses, and a CardHeader component that provides sorting functionality for the table columns.&lt;br /&gt;
&lt;br /&gt;
The component uses the useState hook to manage the state of sortOrder and searchTerm. The sortedCourses array is initialized as a copy of the courses prop, and is then sorted based on the sortOrder and sortColumn state values. If sortColumn is not set, then the courses are not sorted. The filteredCourses array is generated by filtering sortedCourses based on whether any of the property values of each course object contain the searchTerm.&lt;br /&gt;
&lt;br /&gt;
The handleSortClick function is called when the CardHeader is clicked, and it updates the sortColumn and sortOrder state values based on the current column being sorted. If the same column is clicked twice, the sortOrder is toggled between ascending and descending.&lt;br /&gt;
&lt;br /&gt;
Finally, the CardList component renders a CardHeader component and a list of Card components. The CardHeader component is passed the columnKeys and handleSortClick function as props, while the Card component is passed a course object as a prop.&lt;br /&gt;
&lt;br /&gt;
== Our Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Courses Page - The view of courses list on expertiza. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Courses1.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Assignments Under Courses - The view of the assignments list of that course on UI. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Courses_assignments.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Ascending Sort of Courses - Sorting the courses based on the course name in Ascending order. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Asc_sort.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Descending Sort of Course - Sorting the courses based on the course name in Descending order. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Desc_order.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Global Search - The search results based on the unvie===&lt;br /&gt;
&lt;br /&gt;
[[File:Search.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Since we do not have a database to implement in the reimplementation_front_end GitHub repo, we have to mock the databases. &lt;br /&gt;
&lt;br /&gt;
*To create a mock database in the reimplementation_front_end GitHub repository, we need to create a JSON file.&lt;br /&gt;
*The first step is to generate mock data with a structure similar to that of the actual database. This can be done using tools like https://www.mockaroo.com/.&lt;br /&gt;
*The next step is to convert the generated data into a JSON file format.&lt;br /&gt;
*The JSON file is then saved for use in the React frontend.&lt;br /&gt;
*In the React component, we import the JSON file by assigning it to a variable.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# It should list the courses with necessary information like created date, instructor and updated date and actions.&lt;br /&gt;
# And also show sort and search option on the UI.&lt;br /&gt;
# Click on course, it should list the assignments under that course.&lt;br /&gt;
&lt;br /&gt;
* Sort on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any header of courses.( 1 click for ascending and 2 clicks for descending)&lt;br /&gt;
# Courses will be listed in that sorting order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# In search bar type any string you want to search.&lt;br /&gt;
# It should list the courses that match with given search name.&lt;br /&gt;
&lt;br /&gt;
* Assignments &lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
&lt;br /&gt;
* Sort on Assignment&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
# Click on any header of the assignment.( 1 click for ascending and 2 clicks for descending)&lt;br /&gt;
# Assignment will be listed in that sorting order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
# In search bar type any string you want to search.&lt;br /&gt;
# It should list the assignments that match with given search name.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing ===&lt;br /&gt;
&lt;br /&gt;
As the changes are only to the UI. There is no backend for this project as now. So, in the current scope we don't need add any test cases. And there are no existing test cases for this project.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
&lt;br /&gt;
Github Repository: https://github.com/mithila-reddy/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
Pull Request: https://github.com/expertiza/reimplementation-front-end/pull/9&lt;br /&gt;
&lt;br /&gt;
Deployment link: http://152.7.177.191:3000/&lt;br /&gt;
&lt;br /&gt;
Youtube link: https://youtu.be/ZAZkJBvP_M4&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150292</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150292"/>
		<updated>2023-04-30T21:44:45Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Our Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views we have implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js &amp;lt;br&amp;gt; - The course page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses.&lt;br /&gt;
2. Card Component &amp;lt;br&amp;gt;&lt;br /&gt;
* Card.js - The &amp;quot;Card&amp;quot; React component renders a card with course information and an option to show/hide the assignments list, including icons for actions that can be taken on the courses and assignments.&lt;br /&gt;
* CardHeader.js - The &amp;quot;CardHeader&amp;quot; React component renders a Bootstrap card header with clickable columns that can be sorted based on columnKeys prop and the onSortClick function.&lt;br /&gt;
* CardList.js - The &amp;quot;CardList&amp;quot; React component renders a list of Card components displaying course information, with sorting and filtering functionality.&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses. We will be adding the course component, and when click on courses, it will list all courses along with the actions. And search and sort functionality will be implemented.&lt;br /&gt;
&lt;br /&gt;
The Courses component renders the CardList component with the courses and columnKeys props passed to it. The CardList component then maps over the courses array and displays a card for each course. The card displays the course data in a table with the columns defined in the columnKeys array.&lt;br /&gt;
&lt;br /&gt;
Overall, this component displays a table of courses with their details, including institution, creation and update dates, and assignments. It is a simple example of how React components can be used to display dynamic data in a user-friendly way.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions. The card component contains Card, CardHeader, CardList.&lt;br /&gt;
&lt;br /&gt;
==== Card.js ====&lt;br /&gt;
This is a React component named &amp;quot;Card&amp;quot;, which renders a card with information about a course. It takes a &amp;quot;course&amp;quot; object as a prop, which contains information about the course and an array of &amp;quot;assignments&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The component uses the &amp;quot;useState&amp;quot; hook to manage the state of whether the assignments list should be shown or not. When the card is clicked, the &amp;quot;toggleAssignments&amp;quot; function is called, which toggles the value of &amp;quot;showAssignments&amp;quot; to show or hide the assignments list.&lt;br /&gt;
&lt;br /&gt;
The component then renders the course information using a mapping function over the keys of the &amp;quot;course&amp;quot; object, excluding the &amp;quot;assignments&amp;quot; and &amp;quot;Id&amp;quot; keys. Each value is displayed in a div with a &amp;quot;card-text&amp;quot; class. At the end, a set of icons is displayed representing various actions that can be taken on the course.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;showAssignments&amp;quot; is true, the component renders a &amp;quot;CardList&amp;quot; component passing the &amp;quot;assignments&amp;quot; array and a set of keys to define the columns of the table.&lt;br /&gt;
&lt;br /&gt;
Overall, this component renders a card that displays course information and provides the ability to show or hide a list of assignments. It also includes icons that represent various actions that can be taken on the course.&lt;br /&gt;
&lt;br /&gt;
==== CardHeader.js ====&lt;br /&gt;
This code exports a React component called CardHeader that takes in two props: columnKeys and onSortClick. It uses the useState hook to keep track of the current sorted column and sort direction. The handleSortClick function is called when a column header is clicked, and it either calls the onSortClick prop (if it's passed in) or sets the sort column and direction state variables.&lt;br /&gt;
&lt;br /&gt;
The returned JSX is a Bootstrap card header component with a row of columns that correspond to the columnKeys prop. Each column has a click handler that calls handleSortClick with the column's key as an argument. If the column is currently the sort column, an up or down arrow is displayed next to the column label based on the current sort direction.&lt;br /&gt;
&lt;br /&gt;
==== CardList.js ====&lt;br /&gt;
This code is a React component called CardList. It takes in two props: courses and columnKeys. It renders a list of Card components that display information about courses. It also includes a search bar to filter the list of courses, and a CardHeader component that provides sorting functionality for the table columns.&lt;br /&gt;
&lt;br /&gt;
The component uses the useState hook to manage the state of sortOrder and searchTerm. The sortedCourses array is initialized as a copy of the courses prop, and is then sorted based on the sortOrder and sortColumn state values. If sortColumn is not set, then the courses are not sorted. The filteredCourses array is generated by filtering sortedCourses based on whether any of the property values of each course object contain the searchTerm.&lt;br /&gt;
&lt;br /&gt;
The handleSortClick function is called when the CardHeader is clicked, and it updates the sortColumn and sortOrder state values based on the current column being sorted. If the same column is clicked twice, the sortOrder is toggled between ascending and descending.&lt;br /&gt;
&lt;br /&gt;
Finally, the CardList component renders a CardHeader component and a list of Card components. The CardHeader component is passed the columnKeys and handleSortClick function as props, while the Card component is passed a course object as a prop.&lt;br /&gt;
&lt;br /&gt;
== Our Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Courses Page - The view of courses list on expertiza. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Courses1.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Assignments Under Courses - The view of the assignments list of that course on UI. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Courses_assignments.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Ascending Sort of Courses - Sorting the courses based on the course name in Ascending order. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Asc_sort.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Descending Sort of Course - Sorting the courses based on the course name in Descending order. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Desc_order.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Global Search - The search results based on the unvie===&lt;br /&gt;
&lt;br /&gt;
[[File:Search.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Since we do not have a database to implement in the reimplementation_front_end GitHub repo, we have to mock the databases. &lt;br /&gt;
&lt;br /&gt;
*To create a mock database in the reimplementation_front_end GitHub repository, we need to create a JSON file.&lt;br /&gt;
*The first step is to generate mock data with a structure similar to that of the actual database. This can be done using tools like https://www.mockaroo.com/.&lt;br /&gt;
*The next step is to convert the generated data into a JSON file format.&lt;br /&gt;
*The JSON file is then saved for use in the React frontend.&lt;br /&gt;
*In the React component, we import the JSON file by assigning it to a variable.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# It should list the courses with necessary information like created date, instructor and updated date and actions.&lt;br /&gt;
# And also show sort and search option on the UI.&lt;br /&gt;
# Click on course, it should list the assignments under that course.&lt;br /&gt;
&lt;br /&gt;
* Sort on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any header of courses.( 1 click for ascending and 2 clicks for descending)&lt;br /&gt;
# Courses will be listed in that sorting order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# In search bar type any string you want to search.&lt;br /&gt;
# It should list the courses that match with given search name.&lt;br /&gt;
&lt;br /&gt;
* Assignments &lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
&lt;br /&gt;
* Sort on Assignment&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
# Click on any header of the assignment.( 1 click for ascending and 2 clicks for descending)&lt;br /&gt;
# Assignment will be listed in that sorting order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
# In search bar type any string you want to search.&lt;br /&gt;
# It should list the assignments that match with given search name.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing ===&lt;br /&gt;
&lt;br /&gt;
As the changes are only to the UI. There is no backend for this project as now. So, in the current scope we don't need add any test cases. And there are no existing test cases for this project.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
&lt;br /&gt;
Github Repository: https://github.com/mithila-reddy/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
Pull Request: https://github.com/expertiza/reimplementation-front-end/pull/9&lt;br /&gt;
&lt;br /&gt;
Deployment link: http://152.7.177.191:3000/&lt;br /&gt;
&lt;br /&gt;
Youtube link: https://youtu.be/ZAZkJBvP_M4&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150291</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150291"/>
		<updated>2023-04-30T21:41:57Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Our Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views we have implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js &amp;lt;br&amp;gt; - The course page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses.&lt;br /&gt;
2. Card Component &amp;lt;br&amp;gt;&lt;br /&gt;
* Card.js - The &amp;quot;Card&amp;quot; React component renders a card with course information and an option to show/hide the assignments list, including icons for actions that can be taken on the courses and assignments.&lt;br /&gt;
* CardHeader.js - The &amp;quot;CardHeader&amp;quot; React component renders a Bootstrap card header with clickable columns that can be sorted based on columnKeys prop and the onSortClick function.&lt;br /&gt;
* CardList.js - The &amp;quot;CardList&amp;quot; React component renders a list of Card components displaying course information, with sorting and filtering functionality.&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses. We will be adding the course component, and when click on courses, it will list all courses along with the actions. And search and sort functionality will be implemented.&lt;br /&gt;
&lt;br /&gt;
The Courses component renders the CardList component with the courses and columnKeys props passed to it. The CardList component then maps over the courses array and displays a card for each course. The card displays the course data in a table with the columns defined in the columnKeys array.&lt;br /&gt;
&lt;br /&gt;
Overall, this component displays a table of courses with their details, including institution, creation and update dates, and assignments. It is a simple example of how React components can be used to display dynamic data in a user-friendly way.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions. The card component contains Card, CardHeader, CardList.&lt;br /&gt;
&lt;br /&gt;
==== Card.js ====&lt;br /&gt;
This is a React component named &amp;quot;Card&amp;quot;, which renders a card with information about a course. It takes a &amp;quot;course&amp;quot; object as a prop, which contains information about the course and an array of &amp;quot;assignments&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The component uses the &amp;quot;useState&amp;quot; hook to manage the state of whether the assignments list should be shown or not. When the card is clicked, the &amp;quot;toggleAssignments&amp;quot; function is called, which toggles the value of &amp;quot;showAssignments&amp;quot; to show or hide the assignments list.&lt;br /&gt;
&lt;br /&gt;
The component then renders the course information using a mapping function over the keys of the &amp;quot;course&amp;quot; object, excluding the &amp;quot;assignments&amp;quot; and &amp;quot;Id&amp;quot; keys. Each value is displayed in a div with a &amp;quot;card-text&amp;quot; class. At the end, a set of icons is displayed representing various actions that can be taken on the course.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;showAssignments&amp;quot; is true, the component renders a &amp;quot;CardList&amp;quot; component passing the &amp;quot;assignments&amp;quot; array and a set of keys to define the columns of the table.&lt;br /&gt;
&lt;br /&gt;
Overall, this component renders a card that displays course information and provides the ability to show or hide a list of assignments. It also includes icons that represent various actions that can be taken on the course.&lt;br /&gt;
&lt;br /&gt;
==== CardHeader.js ====&lt;br /&gt;
This code exports a React component called CardHeader that takes in two props: columnKeys and onSortClick. It uses the useState hook to keep track of the current sorted column and sort direction. The handleSortClick function is called when a column header is clicked, and it either calls the onSortClick prop (if it's passed in) or sets the sort column and direction state variables.&lt;br /&gt;
&lt;br /&gt;
The returned JSX is a Bootstrap card header component with a row of columns that correspond to the columnKeys prop. Each column has a click handler that calls handleSortClick with the column's key as an argument. If the column is currently the sort column, an up or down arrow is displayed next to the column label based on the current sort direction.&lt;br /&gt;
&lt;br /&gt;
==== CardList.js ====&lt;br /&gt;
This code is a React component called CardList. It takes in two props: courses and columnKeys. It renders a list of Card components that display information about courses. It also includes a search bar to filter the list of courses, and a CardHeader component that provides sorting functionality for the table columns.&lt;br /&gt;
&lt;br /&gt;
The component uses the useState hook to manage the state of sortOrder and searchTerm. The sortedCourses array is initialized as a copy of the courses prop, and is then sorted based on the sortOrder and sortColumn state values. If sortColumn is not set, then the courses are not sorted. The filteredCourses array is generated by filtering sortedCourses based on whether any of the property values of each course object contain the searchTerm.&lt;br /&gt;
&lt;br /&gt;
The handleSortClick function is called when the CardHeader is clicked, and it updates the sortColumn and sortOrder state values based on the current column being sorted. If the same column is clicked twice, the sortOrder is toggled between ascending and descending.&lt;br /&gt;
&lt;br /&gt;
Finally, the CardList component renders a CardHeader component and a list of Card components. The CardHeader component is passed the columnKeys and handleSortClick function as props, while the Card component is passed a course object as a prop.&lt;br /&gt;
&lt;br /&gt;
== Our Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Courses Page - The view of courses list on expertiza. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Courses1.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Assignments Under Courses - The view of the assignments list of that course on UI. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Courses_assignments.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Ascending Sort of Courses - Sorting the courses based on the in Ascending order. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Asc_sort.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Descending Sort of Course - Sorting the courses based on the in Ascending order. ===&lt;br /&gt;
&lt;br /&gt;
[[File:Desc_order.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Global Search - The search results based on the ===&lt;br /&gt;
&lt;br /&gt;
[[File:Search.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Since we do not have a database to implement in the reimplementation_front_end GitHub repo, we have to mock the databases. &lt;br /&gt;
&lt;br /&gt;
*To create a mock database in the reimplementation_front_end GitHub repository, we need to create a JSON file.&lt;br /&gt;
*The first step is to generate mock data with a structure similar to that of the actual database. This can be done using tools like https://www.mockaroo.com/.&lt;br /&gt;
*The next step is to convert the generated data into a JSON file format.&lt;br /&gt;
*The JSON file is then saved for use in the React frontend.&lt;br /&gt;
*In the React component, we import the JSON file by assigning it to a variable.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# It should list the courses with necessary information like created date, instructor and updated date and actions.&lt;br /&gt;
# And also show sort and search option on the UI.&lt;br /&gt;
# Click on course, it should list the assignments under that course.&lt;br /&gt;
&lt;br /&gt;
* Sort on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any header of courses.( 1 click for ascending and 2 clicks for descending)&lt;br /&gt;
# Courses will be listed in that sorting order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# In search bar type any string you want to search.&lt;br /&gt;
# It should list the courses that match with given search name.&lt;br /&gt;
&lt;br /&gt;
* Assignments &lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
&lt;br /&gt;
* Sort on Assignment&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
# Click on any header of the assignment.( 1 click for ascending and 2 clicks for descending)&lt;br /&gt;
# Assignment will be listed in that sorting order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
# In search bar type any string you want to search.&lt;br /&gt;
# It should list the assignments that match with given search name.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing ===&lt;br /&gt;
&lt;br /&gt;
As the changes are only to the UI. There is no backend for this project as now. So, in the current scope we don't need add any test cases. And there are no existing test cases for this project.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
&lt;br /&gt;
Github Repository: https://github.com/mithila-reddy/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
Pull Request: https://github.com/expertiza/reimplementation-front-end/pull/9&lt;br /&gt;
&lt;br /&gt;
Deployment link: http://152.7.177.191:3000/&lt;br /&gt;
&lt;br /&gt;
Youtube link: https://youtu.be/ZAZkJBvP_M4&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150290</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150290"/>
		<updated>2023-04-30T21:31:50Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views we have implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js &amp;lt;br&amp;gt; - The course page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses.&lt;br /&gt;
2. Card Component &amp;lt;br&amp;gt;&lt;br /&gt;
* Card.js - The &amp;quot;Card&amp;quot; React component renders a card with course information and an option to show/hide the assignments list, including icons for actions that can be taken on the courses and assignments.&lt;br /&gt;
* CardHeader.js - The &amp;quot;CardHeader&amp;quot; React component renders a Bootstrap card header with clickable columns that can be sorted based on columnKeys prop and the onSortClick function.&lt;br /&gt;
* CardList.js - The &amp;quot;CardList&amp;quot; React component renders a list of Card components displaying course information, with sorting and filtering functionality.&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses. We will be adding the course component, and when click on courses, it will list all courses along with the actions. And search and sort functionality will be implemented.&lt;br /&gt;
&lt;br /&gt;
The Courses component renders the CardList component with the courses and columnKeys props passed to it. The CardList component then maps over the courses array and displays a card for each course. The card displays the course data in a table with the columns defined in the columnKeys array.&lt;br /&gt;
&lt;br /&gt;
Overall, this component displays a table of courses with their details, including institution, creation and update dates, and assignments. It is a simple example of how React components can be used to display dynamic data in a user-friendly way.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions. The card component contains Card, CardHeader, CardList.&lt;br /&gt;
&lt;br /&gt;
==== Card.js ====&lt;br /&gt;
This is a React component named &amp;quot;Card&amp;quot;, which renders a card with information about a course. It takes a &amp;quot;course&amp;quot; object as a prop, which contains information about the course and an array of &amp;quot;assignments&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The component uses the &amp;quot;useState&amp;quot; hook to manage the state of whether the assignments list should be shown or not. When the card is clicked, the &amp;quot;toggleAssignments&amp;quot; function is called, which toggles the value of &amp;quot;showAssignments&amp;quot; to show or hide the assignments list.&lt;br /&gt;
&lt;br /&gt;
The component then renders the course information using a mapping function over the keys of the &amp;quot;course&amp;quot; object, excluding the &amp;quot;assignments&amp;quot; and &amp;quot;Id&amp;quot; keys. Each value is displayed in a div with a &amp;quot;card-text&amp;quot; class. At the end, a set of icons is displayed representing various actions that can be taken on the course.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;showAssignments&amp;quot; is true, the component renders a &amp;quot;CardList&amp;quot; component passing the &amp;quot;assignments&amp;quot; array and a set of keys to define the columns of the table.&lt;br /&gt;
&lt;br /&gt;
Overall, this component renders a card that displays course information and provides the ability to show or hide a list of assignments. It also includes icons that represent various actions that can be taken on the course.&lt;br /&gt;
&lt;br /&gt;
==== CardHeader.js ====&lt;br /&gt;
This code exports a React component called CardHeader that takes in two props: columnKeys and onSortClick. It uses the useState hook to keep track of the current sorted column and sort direction. The handleSortClick function is called when a column header is clicked, and it either calls the onSortClick prop (if it's passed in) or sets the sort column and direction state variables.&lt;br /&gt;
&lt;br /&gt;
The returned JSX is a Bootstrap card header component with a row of columns that correspond to the columnKeys prop. Each column has a click handler that calls handleSortClick with the column's key as an argument. If the column is currently the sort column, an up or down arrow is displayed next to the column label based on the current sort direction.&lt;br /&gt;
&lt;br /&gt;
==== CardList.js ====&lt;br /&gt;
This code is a React component called CardList. It takes in two props: courses and columnKeys. It renders a list of Card components that display information about courses. It also includes a search bar to filter the list of courses, and a CardHeader component that provides sorting functionality for the table columns.&lt;br /&gt;
&lt;br /&gt;
The component uses the useState hook to manage the state of sortOrder and searchTerm. The sortedCourses array is initialized as a copy of the courses prop, and is then sorted based on the sortOrder and sortColumn state values. If sortColumn is not set, then the courses are not sorted. The filteredCourses array is generated by filtering sortedCourses based on whether any of the property values of each course object contain the searchTerm.&lt;br /&gt;
&lt;br /&gt;
The handleSortClick function is called when the CardHeader is clicked, and it updates the sortColumn and sortOrder state values based on the current column being sorted. If the same column is clicked twice, the sortOrder is toggled between ascending and descending.&lt;br /&gt;
&lt;br /&gt;
Finally, the CardList component renders a CardHeader component and a list of Card components. The CardHeader component is passed the columnKeys and handleSortClick function as props, while the Card component is passed a course object as a prop.&lt;br /&gt;
&lt;br /&gt;
== Our Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Courses Page === - The view of courses list on expertiza.&lt;br /&gt;
&lt;br /&gt;
[[File:Courses1.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Assignments Under Courses === - The view of the assignments list of that course on UI.&lt;br /&gt;
&lt;br /&gt;
[[File:Courses_assignments.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Ascending Sort of Courses === - Sorting the courses based on the in Ascending order.&lt;br /&gt;
&lt;br /&gt;
[[File:Asc_sort.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Descending Sort of Course === - Sorting the courses based on the in Ascending order.&lt;br /&gt;
&lt;br /&gt;
[[File:Desc_order.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Global Search === - The search results based on the &lt;br /&gt;
&lt;br /&gt;
[[File:Search.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Since we do not have a database to implement in the reimplementation_front_end GitHub repo, we have to mock the databases. &lt;br /&gt;
&lt;br /&gt;
*To create a mock database in the reimplementation_front_end GitHub repository, we need to create a JSON file.&lt;br /&gt;
*The first step is to generate mock data with a structure similar to that of the actual database. This can be done using tools like https://www.mockaroo.com/.&lt;br /&gt;
*The next step is to convert the generated data into a JSON file format.&lt;br /&gt;
*The JSON file is then saved for use in the React frontend.&lt;br /&gt;
*In the React component, we import the JSON file by assigning it to a variable.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# It should list the courses with necessary information like created date, instructor and updated date and actions.&lt;br /&gt;
# And also show sort and search option on the UI.&lt;br /&gt;
# Click on course, it should list the assignments under that course.&lt;br /&gt;
&lt;br /&gt;
* Sort on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any header of courses.( 1 click for ascending and 2 clicks for descending)&lt;br /&gt;
# Courses will be listed in that sorting order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# In search bar type any string you want to search.&lt;br /&gt;
# It should list the courses that match with given search name.&lt;br /&gt;
&lt;br /&gt;
* Assignments &lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
&lt;br /&gt;
* Sort on Assignment&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
# Click on any header of the assignment.( 1 click for ascending and 2 clicks for descending)&lt;br /&gt;
# Assignment will be listed in that sorting order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
# In search bar type any string you want to search.&lt;br /&gt;
# It should list the assignments that match with given search name.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing ===&lt;br /&gt;
&lt;br /&gt;
As the changes are only to the UI. There is no backend for this project as now. So, in the current scope we don't need add any test cases. And there are no existing test cases for this project.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
&lt;br /&gt;
Github Repository: https://github.com/mithila-reddy/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
Pull Request: https://github.com/expertiza/reimplementation-front-end/pull/9&lt;br /&gt;
&lt;br /&gt;
Deployment link: http://152.7.177.191:3000/&lt;br /&gt;
&lt;br /&gt;
Youtube link: https://youtu.be/ZAZkJBvP_M4&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150109</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150109"/>
		<updated>2023-04-25T01:32:02Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Relevant Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views we have implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js &amp;lt;br&amp;gt;&lt;br /&gt;
2. Card Component &amp;lt;br&amp;gt;&lt;br /&gt;
* Card.js&lt;br /&gt;
* CardHeader.js&lt;br /&gt;
* CardList.js&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses. We will be adding the course component, and when click on courses, it will list all courses along with the actions. And search and sort functionality will be implemented.&lt;br /&gt;
&lt;br /&gt;
The Courses component renders the CardList component with the courses and columnKeys props passed to it. The CardList component then maps over the courses array and displays a card for each course. The card displays the course data in a table with the columns defined in the columnKeys array.&lt;br /&gt;
&lt;br /&gt;
Overall, this component displays a table of courses with their details, including institution, creation and update dates, and assignments. It is a simple example of how React components can be used to display dynamic data in a user-friendly way.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions. The card component contains Card, CardHeader, CardList.&lt;br /&gt;
&lt;br /&gt;
==== Card.js ====&lt;br /&gt;
This is a React component named &amp;quot;Card&amp;quot;, which renders a card with information about a course. It takes a &amp;quot;course&amp;quot; object as a prop, which contains information about the course and an array of &amp;quot;assignments&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The component uses the &amp;quot;useState&amp;quot; hook to manage the state of whether the assignments list should be shown or not. When the card is clicked, the &amp;quot;toggleAssignments&amp;quot; function is called, which toggles the value of &amp;quot;showAssignments&amp;quot; to show or hide the assignments list.&lt;br /&gt;
&lt;br /&gt;
The component then renders the course information using a mapping function over the keys of the &amp;quot;course&amp;quot; object, excluding the &amp;quot;assignments&amp;quot; and &amp;quot;Id&amp;quot; keys. Each value is displayed in a div with a &amp;quot;card-text&amp;quot; class. At the end, a set of icons is displayed representing various actions that can be taken on the course.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;showAssignments&amp;quot; is true, the component renders a &amp;quot;CardList&amp;quot; component passing the &amp;quot;assignments&amp;quot; array and a set of keys to define the columns of the table.&lt;br /&gt;
&lt;br /&gt;
Overall, this component renders a card that displays course information and provides the ability to show or hide a list of assignments. It also includes icons that represent various actions that can be taken on the course.&lt;br /&gt;
&lt;br /&gt;
==== CardHeader.js ====&lt;br /&gt;
This code exports a React component called CardHeader that takes in two props: columnKeys and onSortClick. It uses the useState hook to keep track of the current sorted column and sort direction. The handleSortClick function is called when a column header is clicked, and it either calls the onSortClick prop (if it's passed in) or sets the sort column and direction state variables.&lt;br /&gt;
&lt;br /&gt;
The returned JSX is a Bootstrap card header component with a row of columns that correspond to the columnKeys prop. Each column has a click handler that calls handleSortClick with the column's key as an argument. If the column is currently the sort column, an up or down arrow is displayed next to the column label based on the current sort direction.&lt;br /&gt;
&lt;br /&gt;
==== CardList.js ====&lt;br /&gt;
This code is a React component called CardList. It takes in two props: courses and columnKeys. It renders a list of Card components that display information about courses. It also includes a search bar to filter the list of courses, and a CardHeader component that provides sorting functionality for the table columns.&lt;br /&gt;
&lt;br /&gt;
The component uses the useState hook to manage the state of sortOrder and searchTerm. The sortedCourses array is initialized as a copy of the courses prop, and is then sorted based on the sortOrder and sortColumn state values. If sortColumn is not set, then the courses are not sorted. The filteredCourses array is generated by filtering sortedCourses based on whether any of the property values of each course object contain the searchTerm.&lt;br /&gt;
&lt;br /&gt;
The handleSortClick function is called when the CardHeader is clicked, and it updates the sortColumn and sortOrder state values based on the current column being sorted. If the same column is clicked twice, the sortOrder is toggled between ascending and descending.&lt;br /&gt;
&lt;br /&gt;
Finally, the CardList component renders a CardHeader component and a list of Card components. The CardHeader component is passed the columnKeys and handleSortClick function as props, while the Card component is passed a course object as a prop.&lt;br /&gt;
&lt;br /&gt;
== Our Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Courses Page ===&lt;br /&gt;
&lt;br /&gt;
[[File:Courses1.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Assignments Under Courses ===&lt;br /&gt;
&lt;br /&gt;
[[File:Courses_assignments.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Ascending Sort of Courses === &lt;br /&gt;
&lt;br /&gt;
[[File:Asc_sort.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Descending Sort of Course ===&lt;br /&gt;
&lt;br /&gt;
[[File:Desc_order.PNG |1200px]]&lt;br /&gt;
&lt;br /&gt;
=== Global Search ===&lt;br /&gt;
&lt;br /&gt;
[[File:Search.PNG | 1200px]]&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Since we do not have a database to implement in the reimplementation_front_end GitHub repo, we have to mock the databases. &lt;br /&gt;
&lt;br /&gt;
*To create a mock database in the reimplementation_front_end GitHub repository, we need to create a JSON file.&lt;br /&gt;
*The first step is to generate mock data with a structure similar to that of the actual database. This can be done using tools like https://www.mockaroo.com/.&lt;br /&gt;
*The next step is to convert the generated data into a JSON file format.&lt;br /&gt;
*The JSON file is then saved for use in the React frontend.&lt;br /&gt;
*In the React component, we import the JSON file by assigning it to a variable.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# It should list the courses with necessary information like created date, instructor and updated date and actions.&lt;br /&gt;
# And also show sort and search option on the UI.&lt;br /&gt;
# Click on course, it should list the assignments under that course.&lt;br /&gt;
&lt;br /&gt;
* Sort on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any header of courses.( 1 click for ascending and 2 clicks for descending)&lt;br /&gt;
# Courses will be listed in that sorting order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# In search bar type any string you want to search.&lt;br /&gt;
# It should list the courses that match with given search name.&lt;br /&gt;
&lt;br /&gt;
* Assignments &lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
&lt;br /&gt;
* Sort on Assignment&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
# Click on any header of the assignment.( 1 click for ascending and 2 clicks for descending)&lt;br /&gt;
# Assignment will be listed in that sorting order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on any course.&lt;br /&gt;
# Assignments under the course will be listed.&lt;br /&gt;
# In search bar type any string you want to search.&lt;br /&gt;
# It should list the assignments that match with given search name.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing ===&lt;br /&gt;
&lt;br /&gt;
As the changes are only to the UI. There is no backend for this project as now. So, in the current scope we don't need add any test cases. And there are no existing test cases for this project.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
&lt;br /&gt;
Github Repository: https://github.com/mithila-reddy/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
Pull Request: https://github.com/expertiza/reimplementation-front-end/pull/9&lt;br /&gt;
&lt;br /&gt;
Deployment link: http://152.7.177.191:3000/&lt;br /&gt;
&lt;br /&gt;
Youtube link: https://youtu.be/ZAZkJBvP_M4&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150074</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150074"/>
		<updated>2023-04-24T22:58:28Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Card */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views we have implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js &amp;lt;br&amp;gt;&lt;br /&gt;
2. Card Component &amp;lt;br&amp;gt;&lt;br /&gt;
* Card.js&lt;br /&gt;
* CardHeader.js&lt;br /&gt;
* CardList.js&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG| 1000px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses. We will be adding the course component, and when click on courses, it will list all courses along with the actions. And search and sort functionality will be implemented.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions. The card component contains Card, CardHeader, CardList.&lt;br /&gt;
&lt;br /&gt;
It displays information about a course, including the course name, instructor, and other details. It also has icons for performing various actions related to the course, such as adding assignments or participants.&lt;br /&gt;
&lt;br /&gt;
When the user clicks on the card, it toggles the display of a list of assignments for that course. The list is displayed in another component called CardList, which is passed the list of assignments as a prop along with column headers for the list.&lt;br /&gt;
&lt;br /&gt;
The useState hook is used to manage the state of whether the assignments list is currently displayed or not, and the toggleAssignments function is called when the user clicks on the card to toggle the display of the assignments.&lt;br /&gt;
&lt;br /&gt;
The component also has some mouseover and mouseout effects to change the background color of the card when the user hovers over it, and a click handler to prevent the click event from propagating when the assignments list is clicked.&lt;br /&gt;
&lt;br /&gt;
We have planned to show courses as below:&lt;br /&gt;
&lt;br /&gt;
[[File:courses-list.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
We have planned to show the assignments under the course as below:&lt;br /&gt;
&lt;br /&gt;
[[File:Assignments-list.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Since we do not have a database to implement in the reimplementation_front_end GitHub repo, we have to mock the databases. &lt;br /&gt;
&lt;br /&gt;
*To create a mock database in the reimplementation_front_end GitHub repository, we need to create a JSON file.&lt;br /&gt;
*The first step is to generate mock data with a structure similar to that of the actual database. This can be done using tools like https://www.mockaroo.com/.&lt;br /&gt;
*The next step is to convert the generated data into a JSON file format.&lt;br /&gt;
*The JSON file is then saved for use in the React frontend.&lt;br /&gt;
*In the React component, we import the JSON file by assigning it to a variable.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# It should list the courses with necessary information like created date, instructor and updated date and actions.&lt;br /&gt;
# And also show sort and search option on the UI.&lt;br /&gt;
# Click on course, it should list the assignments under that course.&lt;br /&gt;
&lt;br /&gt;
* Sort on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on sort dropdown and select the sorting order.&lt;br /&gt;
# Courses will be listed in that order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# In search bar, give the name of the course to view.&lt;br /&gt;
# It should list the courses that match the course name with given search name.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing ===&lt;br /&gt;
&lt;br /&gt;
As the changes are only to the UI. There is no backend for this project as now. So, in the current scope we don't need add any test cases. And there are no existing test cases for this project.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
&lt;br /&gt;
Github Repository: https://github.com/mithila-reddy/reimplementation-front-end&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150072</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150072"/>
		<updated>2023-04-24T22:47:15Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views we have implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js &amp;lt;br&amp;gt;&lt;br /&gt;
2. Card Component &amp;lt;br&amp;gt;&lt;br /&gt;
* Card.js&lt;br /&gt;
* CardHeader.js&lt;br /&gt;
* CardList.js&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG| 1000px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses. We will be adding the course component, and when click on courses, it will list all courses along with the actions. And search and sort functionality will be implemented.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions. The card component contains Card, CardHeader, CardList.&lt;br /&gt;
&lt;br /&gt;
We have planned to show courses as below:&lt;br /&gt;
&lt;br /&gt;
[[File:courses-list.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
We have planned to show the assignments under the course as below:&lt;br /&gt;
&lt;br /&gt;
[[File:Assignments-list.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Currently in the reimplementation_front_end Github repo does not have any database. So, we will be generating dummy data in the JSON file and will be using this file to populate information on the UI.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# It should list the courses with necessary information like created date, instructor and updated date and actions.&lt;br /&gt;
# And also show sort and search option on the UI.&lt;br /&gt;
# Click on course, it should list the assignments under that course.&lt;br /&gt;
&lt;br /&gt;
* Sort on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on sort dropdown and select the sorting order.&lt;br /&gt;
# Courses will be listed in that order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# In search bar, give the name of the course to view.&lt;br /&gt;
# It should list the courses that match the course name with given search name.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing ===&lt;br /&gt;
&lt;br /&gt;
As the changes are only to the UI. There is no backend for this project as now. So, in the current scope we don't need add any test cases. And there are no existing test cases for this project.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
&lt;br /&gt;
Github Repository: https://github.com/mithila-reddy/reimplementation-front-end&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150071</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=150071"/>
		<updated>2023-04-24T22:44:38Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* About */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views we have implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js &amp;lt;br&amp;gt;&lt;br /&gt;
2. Card Component &amp;lt;br&amp;gt;&lt;br /&gt;
* Card.js&lt;br /&gt;
* CardHeader.js&lt;br /&gt;
* CardList.js&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG| 1000px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses. We will be adding the course component, and when click on courses, it will list all courses along with the actions. And search and sort functionality will be implemented.&lt;br /&gt;
&lt;br /&gt;
=== Assignment.js ===&lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Assignments to manage assignment-related information. From this page, users can check the deadline for assignment, can create a new, update or delete a Assignment. We will be implementing the assignment component where it will list all the assignments. These will be listed as cards instead of table.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions.&lt;br /&gt;
&lt;br /&gt;
We have planned to show courses as below:&lt;br /&gt;
&lt;br /&gt;
[[File:courses-list.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
We have planned to show the assignments under the course as below:&lt;br /&gt;
&lt;br /&gt;
[[File:Assignments-list.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Currently in the reimplementation_front_end Github repo does not have any database. So, we will be generating dummy data in the JSON file and will be using this file to populate information on the UI.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# It should list the courses with necessary information like created date, instructor and updated date and actions.&lt;br /&gt;
# And also show sort and search option on the UI.&lt;br /&gt;
# Click on course, it should list the assignments under that course.&lt;br /&gt;
&lt;br /&gt;
* Sort on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on sort dropdown and select the sorting order.&lt;br /&gt;
# Courses will be listed in that order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# In search bar, give the name of the course to view.&lt;br /&gt;
# It should list the courses that match the course name with given search name.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing ===&lt;br /&gt;
&lt;br /&gt;
As the changes are only to the UI. There is no backend for this project as now. So, in the current scope we don't need add any test cases. And there are no existing test cases for this project.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
&lt;br /&gt;
Github Repository: https://github.com/mithila-reddy/reimplementation-front-end&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149668</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149668"/>
		<updated>2023-04-13T01:30:28Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views to be implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js &amp;lt;br&amp;gt;&lt;br /&gt;
2.assignments.js &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG| 1000px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses. We will be adding the course component, and when click on courses, it will list all courses along with the actions. And search and sort functionality will be implemented.&lt;br /&gt;
&lt;br /&gt;
=== Assignment.js ===&lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Assignments to manage assignment-related information. From this page, users can check the deadline for assignment, can create a new, update or delete a Assignment. We will be implementing the assignment component where it will list all the assignments. These will be listed as cards instead of table.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions.&lt;br /&gt;
&lt;br /&gt;
We have planned to show courses as below:&lt;br /&gt;
&lt;br /&gt;
[[File:courses-list.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
We have planned to show the assignments under the course as below:&lt;br /&gt;
&lt;br /&gt;
[[File:Assignments-list.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Currently in the reimplementation_front_end Github repo does not have any database. So, we will be generating dummy data in the JSON file and will be using this file to populate information on the UI.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# It should list the courses with necessary information like created date, instructor and updated date and actions.&lt;br /&gt;
# And also show sort and search option on the UI.&lt;br /&gt;
# Click on course, it should list the assignments under that course.&lt;br /&gt;
&lt;br /&gt;
* Sort on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on sort dropdown and select the sorting order.&lt;br /&gt;
# Courses will be listed in that order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# In search bar, give the name of the course to view.&lt;br /&gt;
# It should list the courses that match the course name with given search name.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing ===&lt;br /&gt;
&lt;br /&gt;
As the changes are only to the UI. There is no backend for this project as now. So, in the current scope we don't need add any test cases. And there are no existing test cases for this project.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
&lt;br /&gt;
Github Repository: https://github.com/mithila-reddy/reimplementation-front-end&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assignments-list.png&amp;diff=149666</id>
		<title>File:Assignments-list.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assignments-list.png&amp;diff=149666"/>
		<updated>2023-04-13T01:28:33Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149665</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149665"/>
		<updated>2023-04-13T01:28:06Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views to be implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js &amp;lt;br&amp;gt;&lt;br /&gt;
2.assignments.js &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG| 1000px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses. We will be adding the course component, and when click on courses, it will list all courses along with the actions. And search and sort functionality will be implemented.&lt;br /&gt;
&lt;br /&gt;
=== Assignment.js ===&lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Assignments to manage assignment-related information. From this page, users can check the deadline for assignment, can create a new, update or delete a Assignment. We will be implementing the assignment component where it will list all the assignments. These will be listed as cards instead of table.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions.&lt;br /&gt;
&lt;br /&gt;
We have planned to show courses as below:&lt;br /&gt;
&lt;br /&gt;
[[File:courses-list.png | 800px]]&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Currently in the reimplementation_front_end Github repo does not have any database. So, we will be generating dummy data in the JSON file and will be using this file to populate information on the UI.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# It should list the courses with necessary information like created date, instructor and updated date and actions.&lt;br /&gt;
# And also show sort and search option on the UI.&lt;br /&gt;
# Click on course, it should list the assignments under that course.&lt;br /&gt;
&lt;br /&gt;
* Sort on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on sort dropdown and select the sorting order.&lt;br /&gt;
# Courses will be listed in that order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# In search bar, give the name of the course to view.&lt;br /&gt;
# It should list the courses that match the course name with given search name.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing ===&lt;br /&gt;
&lt;br /&gt;
As the changes are only to the UI. There is no backend for this project as now. So, in the current scope we don't need add any test cases. And there are no existing test cases for this project.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
&lt;br /&gt;
Github Repository: https://github.com/mithila-reddy/reimplementation-front-end&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149664</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149664"/>
		<updated>2023-04-13T01:27:11Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views to be implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js &amp;lt;br&amp;gt;&lt;br /&gt;
2.assignments.js &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG| 1000px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses. We will be adding the course component, and when click on courses, it will list all courses along with the actions. And search and sort functionality will be implemented.&lt;br /&gt;
&lt;br /&gt;
=== Assignment.js ===&lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Assignments to manage assignment-related information. From this page, users can check the deadline for assignment, can create a new, update or delete a Assignment. We will be implementing the assignment component where it will list all the assignments. These will be listed as cards instead of table.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions.&lt;br /&gt;
&lt;br /&gt;
We have planned to show courses as below:&lt;br /&gt;
[[File:courses-list.PNG | 800px]]&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Currently in the reimplementation_front_end Github repo does not have any database. So, we will be generating dummy data in the JSON file and will be using this file to populate information on the UI.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# It should list the courses with necessary information like created date, instructor and updated date and actions.&lt;br /&gt;
# And also show sort and search option on the UI.&lt;br /&gt;
# Click on course, it should list the assignments under that course.&lt;br /&gt;
&lt;br /&gt;
* Sort on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on sort dropdown and select the sorting order.&lt;br /&gt;
# Courses will be listed in that order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# In search bar, give the name of the course to view.&lt;br /&gt;
# It should list the courses that match the course name with given search name.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing ===&lt;br /&gt;
&lt;br /&gt;
As the changes are only to the UI. There is no backend for this project as now. So, in the current scope we don't need add any test cases. And there are no existing test cases for this project.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
&lt;br /&gt;
Github Repository: https://github.com/mithila-reddy/reimplementation-front-end&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Courses-list.png&amp;diff=149663</id>
		<title>File:Courses-list.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Courses-list.png&amp;diff=149663"/>
		<updated>2023-04-13T01:25:37Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149662</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149662"/>
		<updated>2023-04-13T01:24:44Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views to be implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js &amp;lt;br&amp;gt;&lt;br /&gt;
2.assignments.js &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG| 1000px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses. We will be adding the course component, and when click on courses, it will list all courses along with the actions. And search and sort functionality will be implemented.&lt;br /&gt;
&lt;br /&gt;
=== Assignment.js ===&lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Assignments to manage assignment-related information. From this page, users can check the deadline for assignment, can create a new, update or delete a Assignment. We will be implementing the assignment component where it will list all the assignments. These will be listed as cards instead of table.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions.&lt;br /&gt;
&lt;br /&gt;
We have planned to show courses as below:&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Currently in the reimplementation_front_end Github repo does not have any database. So, we will be generating dummy data in the JSON file and will be using this file to populate information on the UI.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# It should list the courses with necessary information like created date, instructor and updated date and actions.&lt;br /&gt;
# And also show sort and search option on the UI.&lt;br /&gt;
# Click on course, it should list the assignments under that course.&lt;br /&gt;
&lt;br /&gt;
* Sort on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on sort dropdown and select the sorting order.&lt;br /&gt;
# Courses will be listed in that order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# In search bar, give the name of the course to view.&lt;br /&gt;
# It should list the courses that match the course name with given search name.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing ===&lt;br /&gt;
&lt;br /&gt;
As the changes are only to the UI. There is no backend for this project as now. So, in the current scope we don't need add any test cases. And there are no existing test cases for this project.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
&lt;br /&gt;
Github Repository: https://github.com/mithila-reddy/reimplementation-front-end&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149656</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149656"/>
		<updated>2023-04-13T01:18:45Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Assignment.js */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views to be implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js &amp;lt;br&amp;gt;&lt;br /&gt;
2.assignments.js &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG| 1000px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses. We will be adding the course component, and when click on courses, it will list all courses along with the actions. And search and sort functionality will be implemented.&lt;br /&gt;
&lt;br /&gt;
=== Assignment.js ===&lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Assignments to manage assignment-related information. From this page, users can check the deadline for assignment, can create a new, update or delete a Assignment. We will be implementing the assignment component where it will list all the assignments. These will be listed as cards instead of table.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions.&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Currently in the reimplementation_front_end Github repo does not have any database. So, we will be generating dummy data in the JSON file and will be using this file to populate information on the UI.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# It should list the courses with necessary information like created date, instructor and updated date and actions.&lt;br /&gt;
# And also show sort and search option on the UI.&lt;br /&gt;
# Click on course, it should list the assignments under that course.&lt;br /&gt;
&lt;br /&gt;
* Sort on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on sort dropdown and select the sorting order.&lt;br /&gt;
# Courses will be listed in that order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# In search bar, give the name of the course to view.&lt;br /&gt;
# It should list the courses that match the course name with given search name.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing ===&lt;br /&gt;
&lt;br /&gt;
As the changes are only to the UI. There is no backend for this project as now. So, in the current scope we don't need add any test cases. And there are no existing test cases for this project.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
&lt;br /&gt;
Github Repository: https://github.com/mithila-reddy/reimplementation-front-end&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149654</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149654"/>
		<updated>2023-04-13T01:17:12Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Course.js (Manage Courses) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views to be implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js &amp;lt;br&amp;gt;&lt;br /&gt;
2.assignments.js &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG| 1000px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses. We will be adding the course component, and when click on courses, it will list all courses along with the actions. And search and sort functionality will be implemented.&lt;br /&gt;
&lt;br /&gt;
=== Assignment.js ===&lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Assignments to manage assignment-related information. From this page, users can check the deadline for assignment, can create a new, update or delete a Assignment.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions.&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Currently in the reimplementation_front_end Github repo does not have any database. So, we will be generating dummy data in the JSON file and will be using this file to populate information on the UI.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# It should list the courses with necessary information like created date, instructor and updated date and actions.&lt;br /&gt;
# And also show sort and search option on the UI.&lt;br /&gt;
# Click on course, it should list the assignments under that course.&lt;br /&gt;
&lt;br /&gt;
* Sort on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on sort dropdown and select the sorting order.&lt;br /&gt;
# Courses will be listed in that order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# In search bar, give the name of the course to view.&lt;br /&gt;
# It should list the courses that match the course name with given search name.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing ===&lt;br /&gt;
&lt;br /&gt;
As the changes are only to the UI. There is no backend for this project as now. So, in the current scope we don't need add any test cases. And there are no existing test cases for this project.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
&lt;br /&gt;
Github Repository: https://github.com/mithila-reddy/reimplementation-front-end&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149649</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149649"/>
		<updated>2023-04-13T01:15:27Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views to be implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js &amp;lt;br&amp;gt;&lt;br /&gt;
2.assignments.js &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG| 1000px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses.&lt;br /&gt;
&lt;br /&gt;
=== Assignment.js ===&lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Assignments to manage assignment-related information. From this page, users can check the deadline for assignment, can create a new, update or delete a Assignment.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions.&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Currently in the reimplementation_front_end Github repo does not have any database. So, we will be generating dummy data in the JSON file and will be using this file to populate information on the UI.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# It should list the courses with necessary information like created date, instructor and updated date and actions.&lt;br /&gt;
# And also show sort and search option on the UI.&lt;br /&gt;
# Click on course, it should list the assignments under that course.&lt;br /&gt;
&lt;br /&gt;
* Sort on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# Click on sort dropdown and select the sorting order.&lt;br /&gt;
# Courses will be listed in that order.&lt;br /&gt;
&lt;br /&gt;
* Search on Course Page&lt;br /&gt;
# Go to Manage &amp;gt; Courses.&lt;br /&gt;
# In search bar, give the name of the course to view.&lt;br /&gt;
# It should list the courses that match the course name with given search name.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing ===&lt;br /&gt;
&lt;br /&gt;
As the changes are only to the UI. There is no backend for this project as now. So, in the current scope we don't need add any test cases. And there are no existing test cases for this project.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
&lt;br /&gt;
Github Repository: https://github.com/mithila-reddy/reimplementation-front-end&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149231</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149231"/>
		<updated>2023-04-08T01:07:36Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views to be implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js &amp;lt;br&amp;gt;&lt;br /&gt;
2.assignments.js &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG| 1000px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses.&lt;br /&gt;
&lt;br /&gt;
=== Assignment.js ===&lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Assignments to manage assignment-related information. From this page, users can check the deadline for assignment, can create a new, update or delete a Assignment.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions.&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Currently in the reimplementation_front_end Github repo does not have any database. So, we will be generating dummy data in the JSON file and will be using this file to populate information on the UI.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
As the changes are only to the UI. Currently there is no need of writing any new or change existing test cases.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
&lt;br /&gt;
Github Repository: https://github.com/mithila-reddy/reimplementation-front-end&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149230</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149230"/>
		<updated>2023-04-08T01:02:12Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Database */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views to be implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js &amp;lt;br&amp;gt;&lt;br /&gt;
2.assignments.js &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG| 1000px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses.&lt;br /&gt;
&lt;br /&gt;
=== Assignment.js ===&lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Assignments to manage assignment-related information. From this page, users can check the deadline for assignment, can create a new, update or delete a Assignment.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions.&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Currently in the reimplementation_front_end Github repo does not have any database. So, we will be generating dummy data in the JSON file and will be using this file to populate information on the UI.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==References==&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149227</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149227"/>
		<updated>2023-04-08T01:00:08Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* card */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views to be implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js &amp;lt;br&amp;gt;&lt;br /&gt;
2.assignments.js &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG| 1000px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses.&lt;br /&gt;
&lt;br /&gt;
=== Assignment.js ===&lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Assignments to manage assignment-related information. From this page, users can check the deadline for assignment, can create a new, update or delete a Assignment.&lt;br /&gt;
&lt;br /&gt;
=== Card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions.&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Currently in the reimplementation_front_end Github repo do not have database. So, we have to generate dummy data in the JSON file. We will be using this file to populate information on the UI.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==References==&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149225</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149225"/>
		<updated>2023-04-08T00:59:26Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Assignment.js */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views to be implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js &amp;lt;br&amp;gt;&lt;br /&gt;
2.assignments.js &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG| 1000px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses.&lt;br /&gt;
&lt;br /&gt;
=== Assignment.js ===&lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Assignments to manage assignment-related information. From this page, users can check the deadline for assignment, can create a new, update or delete a Assignment.&lt;br /&gt;
&lt;br /&gt;
=== card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions.   &lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Currently in the reimplementation_front_end Github repo do not have database. So, we have to generate dummy data in the JSON file. We will be using this file to populate information on the UI.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==References==&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149224</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149224"/>
		<updated>2023-04-08T00:57:15Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Expertiza */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views to be implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js &amp;lt;br&amp;gt;&lt;br /&gt;
2.assignments.js &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG| 1000px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses.&lt;br /&gt;
&lt;br /&gt;
=== Assignment.js ===&lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Assignments to manage assignment-related information. From this page, users can check the deadline for assignment, can create a new Assignment.&lt;br /&gt;
&lt;br /&gt;
=== card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions.   &lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Currently in the reimplementation_front_end Github repo do not have database. So, we have to generate dummy data in the JSON file. We will be using this file to populate information on the UI.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==References==&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Sping_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149219</id>
		<title>CSC/ECE 517 Sping 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Sping_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149219"/>
		<updated>2023-04-08T00:53:48Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149218</id>
		<title>CSC/ECE 517 Spring 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149218"/>
		<updated>2023-04-08T00:52:42Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: Created page with &amp;quot;==Expertiza== Expertiza is a Ruby on Rails based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
Expertiza is a Ruby on Rails based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views to be implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js &amp;lt;br&amp;gt;&lt;br /&gt;
2.assignments.js &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG| 1000px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses.&lt;br /&gt;
&lt;br /&gt;
=== Assignment.js ===&lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Assignments to manage assignment-related information. From this page, users can check the deadline for assignment, can create a new Assignment.&lt;br /&gt;
&lt;br /&gt;
=== card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions.   &lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Currently in the reimplementation_front_end Github repo do not have database. So, we have to generate dummy data in the JSON file. We will be using this file to populate information on the UI.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==References==&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Sping_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149073</id>
		<title>CSC/ECE 517 Sping 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Sping_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=149073"/>
		<updated>2023-04-07T19:33:28Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
Expertiza is a Ruby on Rails based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React and create card component for reusability. There are 2 main views to be implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1.course.js &amp;lt;br&amp;gt;&lt;br /&gt;
2.assignments.js &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
[[File:Courses.PNG| 1000px]]&lt;br /&gt;
&lt;br /&gt;
The current implementation of Courses is in basic html table structure. The basic HTML table structure has several disadvantages such as&lt;br /&gt;
&lt;br /&gt;
'''Limited styling options''': Basic HTML tables have limited styling options compared to modern CSS frameworks. This can make it difficult to create visually appealing and responsive designs.&lt;br /&gt;
&lt;br /&gt;
'''Accessibility issues''': Tables can be difficult to navigate for visually impaired users who rely on screen readers. When tables are not properly structured with the correct HTML tags, it can make it difficult for users to understand the content.&lt;br /&gt;
&lt;br /&gt;
'''Poor performance''': Large tables with many rows and columns can negatively impact page load times and performance.&lt;br /&gt;
&lt;br /&gt;
'''Lack of flexibility''': Tables are not flexible when it comes to adjusting to different screen sizes or devices. This can make it difficult to create responsive designs that work well on mobile devices.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We propose implementing courses and assignments in card structure rather than tables. Implementing a card structure in ReactJS is a common requirement when building modern web applications. Here are the basic steps to implement a card structure in ReactJS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.Create a new React component for the card structure, which can be named Course.&lt;br /&gt;
&lt;br /&gt;
2.In the Course component, define the HTML structure for the card using JSX. This will typically include a container div, an image, a title, a description, and any other elements you want to include in the card.&lt;br /&gt;
&lt;br /&gt;
3.Add styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding using Bootstrap.&lt;br /&gt;
&lt;br /&gt;
4.Pass data to the Course component as props, which will be used to populate the content of the card.&lt;br /&gt;
&lt;br /&gt;
5.Use the Course component in your React application by importing it and rendering it wherever it is needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== Course.js (Manage Courses) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Courses to manage course-related information. From this page, users can access other pages such as create Courses, update Courses, and delete Courses.&lt;br /&gt;
&lt;br /&gt;
=== Assignment.js ===&lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for Assignments to manage assignment-related information. From this page, users can check the deadline for assignment, can create a new Assignment.&lt;br /&gt;
&lt;br /&gt;
=== card ===&lt;br /&gt;
&lt;br /&gt;
This will be reusable component for both courses and assignments to display the courses and assignments in the UI with respective actions.   &lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
Currently in the reimplementation_front_end Github repo do not have database. So, we have to generate dummy data in the JSON file. We will be using this file to populate information on the UI.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Ankur Mundra&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==References==&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Sping_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=148758</id>
		<title>CSC/ECE 517 Sping 2023 - E2333: Implement Course Component with React</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Sping_2023_-_E2333:_Implement_Course_Component_with_React&amp;diff=148758"/>
		<updated>2023-04-05T03:23:32Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: Created page with &amp;quot;==Expertiza== Expertiza is an Open Source Software project developed by NC State University, funded by the National Science Foundation. It allows the instructor to create assi...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
Expertiza is an Open Source Software project developed by NC State University, funded by the National Science Foundation. It allows the instructor to create assignments as well as modify existing assignments. Students can signup for topics in an assignment and can submit articles, codes, web-sites etc. It is a web application built on Ruby on Rails framework. It also allows students to review the submissions that have been made other students.&lt;br /&gt;
&lt;br /&gt;
== React JS ==&lt;br /&gt;
ReactJS is an open source JavaScript library, used to provide a view for data rendered as HTML.It is maintained by Facebook, Instagram and a community of individual developers and corporations. React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP. It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012. It was open-sourced at JSConf US in May 2013.&lt;br /&gt;
&lt;br /&gt;
=== Advantages of ReactJS ===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to know how a component is rendered, you just look at the render function. This render function basically implements html &amp;lt;i&amp;gt;divs&amp;lt;/i&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; JSX is a faster, safer and easer JavaScript which makes it easy to read the code of your components. It is also really easy to see the layout, or how components are plugged or combined with each other.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; React can be rendered on the server-side. So you can easily use it in the Ruby on Rails too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It is easy to test (easier than the traditional JavaScript or JQuery where you have to test the code in the Developer Tools) and it can easily be integrated with tools like jest which can make  testing painless.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It ensures readability and makes maintainability easier.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; It can be used with any framework such as Backbone.js, Angular.js, as it is only a view layer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current Implementation == &lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
==References==&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Sping_2023_-_E2322:_Refactor_Questionnaire_View_to_display_Bookmark_Rating&amp;diff=148404</id>
		<title>CSC/ECE 517 Sping 2023 - E2322: Refactor Questionnaire View to display Bookmark Rating</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Sping_2023_-_E2322:_Refactor_Questionnaire_View_to_display_Bookmark_Rating&amp;diff=148404"/>
		<updated>2023-03-27T19:50:38Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Design Pattern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==Questionnaires Controller==&lt;br /&gt;
&lt;br /&gt;
Questionnaire is the superclass for all types of questionnaires and rubrics. We can create, display, and manage questionnaires using this controller. Expertiza allows users to create a variety of questionnaires, including reviews, metareviews, teammate reviews, assignments, global surveys, course surveys, and bookmark ratings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Refactoring the methods doing multiple tasks and breaking them in different modules.&lt;br /&gt;
* Refactoring duplicate code into a single method.&lt;br /&gt;
* Add comments to methods and complex lines of code.&lt;br /&gt;
* Removing code that is no longer being used or required&lt;br /&gt;
* Try to fix issues from Code Climate.&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
&lt;br /&gt;
Below are the files we changed as part of refactoring&lt;br /&gt;
&lt;br /&gt;
=====Bookmarks Controller=====&lt;br /&gt;
&lt;br /&gt;
This is the bookmarks_controller.rb which handles all the CRUD operation performed on bookmarks. Multiple things were done in just one method which we broke in modules doing that specific task. We have the same code repeating in multiple places which we moved into a single method.&lt;br /&gt;
&lt;br /&gt;
=====Questionnaire Node=====&lt;br /&gt;
In the file app/models/questionnaire_node.rb which deals with the attributes of quesstionnaire.&lt;br /&gt;
&lt;br /&gt;
=====Questionnaire Type Node=====&lt;br /&gt;
In the file app/models/questionnaire_type_node.rb which handles and defines the structure of the questionnaire Node template.&lt;br /&gt;
&lt;br /&gt;
==Refactoring==&lt;br /&gt;
=====Refactor Bookmark Controller===== &lt;br /&gt;
&lt;br /&gt;
The file that is no longer being used in project and was written long ago to add bookmark functionality can be considered as &amp;quot;dead code&amp;quot;. And the bookmark functionality that was originally implemented in this file has been moved to another file in the project, making the original file redundant. To address this issue, the dead code in the form of the original file can be safely removed from the project.&lt;br /&gt;
&lt;br /&gt;
By removing this unused code, we can simplify the codebase and improve the maintainability of the application, as well as potentially reduce the size of the project and improve its performance.&lt;br /&gt;
&lt;br /&gt;
=====Refactor Questionnaire Type Node=====&lt;br /&gt;
The file questionnaire_type_node.rb serves as a template for all the questionnaire nodes which handles the folders list of questionnaires of various types. we have refactored by creating a helper method for the return_nodes_list, which returns a list of folder nodes for the corresponding list of folders.&lt;br /&gt;
&lt;br /&gt;
[[File:questionnaire_type_node_diff.png | 800px]]&lt;br /&gt;
&lt;br /&gt;
=====Refactor Questionnaire Node=====&lt;br /&gt;
The file questionnaire_node.rb deals with the attributes associated with questionnaire. This refactored code uses a single method get_attr that takes the name of the attribute as an argument and retrieves it. Then, each of the get_* methods simply calls get_attr with the appropriate attribute name. This eliminates the duplication in the original code and makes it easier to maintain if changes need to be made.&lt;br /&gt;
&lt;br /&gt;
[[File:Questionnaire_node.PNG | 800px]]&lt;br /&gt;
&lt;br /&gt;
== Design Pattern ==&lt;br /&gt;
&lt;br /&gt;
The DRY pattern is used during refactoring to extract common functionality into reusable functions or methods. For example, if a section of code is repeated in multiple places, it can be extracted into a reusable function or method that can be called from those places instead. This not only reduces duplication but also makes the code easier to read and maintain.&lt;br /&gt;
&lt;br /&gt;
We implemented the Dry design pattern to remove redundant code in questionnaire_node.rb and questionnaire_type_node.rb and removed the dead code in bookmark_controller.rb.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Bookmark Rating Before creation&lt;br /&gt;
# After logging in as instructor, go to Manage &amp;gt; Questionnaires.&lt;br /&gt;
# Initially there will be no bookmarks rating.&lt;br /&gt;
# Click on the Bookmark Rating, there wont be a dropdown as there are no ratings.&lt;br /&gt;
&lt;br /&gt;
*Create new Bookmark Rating&lt;br /&gt;
# As an instructor, go to Manage &amp;gt; Questionnaires,&lt;br /&gt;
# In bookmark Rating field, click on plus button.&lt;br /&gt;
# Create a new Bookmark Rating with required details.&lt;br /&gt;
# After creating Bookmark Rating, Start adding questions.&lt;br /&gt;
&lt;br /&gt;
* View Bookmark Rating After creation&lt;br /&gt;
# After logging in as instructor, go to Manage &amp;gt; Questionnaires.&lt;br /&gt;
# Click on the Bookmark Rating, there will be a dropdown with list of Bookmark Ratings.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing with RSpec ===&lt;br /&gt;
&lt;br /&gt;
For most of our changes we did not have to create new test cases or modified exiting test cases for all the functionalities that we have been modifying. After refactoring we run the test cases in respective files. &lt;br /&gt;
&lt;br /&gt;
Below is the screenshot of the result after running the test cases.&lt;br /&gt;
&lt;br /&gt;
[[File:testruns.PNG| 850px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Questionnaire_node_test.jpeg| 850px]]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
* Divyang Doshi&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
#[https://expertiza.ncsu.edu/ Expertiza]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza/pull/2549 Pull Request to Merge]&lt;br /&gt;
#[http://152.7.177.124:8080/ Deployed Changes Userid - instructor6 and Password - password]&lt;br /&gt;
#[https://github.com/users/mithila-reddy/projects/1 GitHub Project Board]&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Sping_2023_-_E2322:_Refactor_Questionnaire_View_to_display_Bookmark_Rating&amp;diff=148402</id>
		<title>CSC/ECE 517 Sping 2023 - E2322: Refactor Questionnaire View to display Bookmark Rating</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Sping_2023_-_E2322:_Refactor_Questionnaire_View_to_display_Bookmark_Rating&amp;diff=148402"/>
		<updated>2023-03-27T19:47:37Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==Questionnaires Controller==&lt;br /&gt;
&lt;br /&gt;
Questionnaire is the superclass for all types of questionnaires and rubrics. We can create, display, and manage questionnaires using this controller. Expertiza allows users to create a variety of questionnaires, including reviews, metareviews, teammate reviews, assignments, global surveys, course surveys, and bookmark ratings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Refactoring the methods doing multiple tasks and breaking them in different modules.&lt;br /&gt;
* Refactoring duplicate code into a single method.&lt;br /&gt;
* Add comments to methods and complex lines of code.&lt;br /&gt;
* Removing code that is no longer being used or required&lt;br /&gt;
* Try to fix issues from Code Climate.&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
&lt;br /&gt;
Below are the files we changed as part of refactoring&lt;br /&gt;
&lt;br /&gt;
=====Bookmarks Controller=====&lt;br /&gt;
&lt;br /&gt;
This is the bookmarks_controller.rb which handles all the CRUD operation performed on bookmarks. Multiple things were done in just one method which we broke in modules doing that specific task. We have the same code repeating in multiple places which we moved into a single method.&lt;br /&gt;
&lt;br /&gt;
=====Questionnaire Node=====&lt;br /&gt;
In the file app/models/questionnaire_node.rb which deals with the attributes of quesstionnaire.&lt;br /&gt;
&lt;br /&gt;
=====Questionnaire Type Node=====&lt;br /&gt;
In the file app/models/questionnaire_type_node.rb which handles and defines the structure of the questionnaire Node template.&lt;br /&gt;
&lt;br /&gt;
==Refactoring==&lt;br /&gt;
=====Refactor Bookmark Controller===== &lt;br /&gt;
&lt;br /&gt;
The file that is no longer being used in project and was written long ago to add bookmark functionality can be considered as &amp;quot;dead code&amp;quot;. And the bookmark functionality that was originally implemented in this file has been moved to another file in the project, making the original file redundant. To address this issue, the dead code in the form of the original file can be safely removed from the project.&lt;br /&gt;
&lt;br /&gt;
By removing this unused code, we can simplify the codebase and improve the maintainability of the application, as well as potentially reduce the size of the project and improve its performance.&lt;br /&gt;
&lt;br /&gt;
=====Refactor Questionnaire Type Node=====&lt;br /&gt;
The file questionnaire_type_node.rb serves as a template for all the questionnaire nodes which handles the folders list of questionnaires of various types. we have refactored by creating a helper method for the return_nodes_list, which returns a list of folder nodes for the corresponding list of folders.&lt;br /&gt;
&lt;br /&gt;
[[File:questionnaire_type_node_diff.png | 800px]]&lt;br /&gt;
&lt;br /&gt;
=====Refactor Questionnaire Node=====&lt;br /&gt;
The file questionnaire_node.rb deals with the attributes associated with questionnaire. This refactored code uses a single method get_attr that takes the name of the attribute as an argument and retrieves it. Then, each of the get_* methods simply calls get_attr with the appropriate attribute name. This eliminates the duplication in the original code and makes it easier to maintain if changes need to be made.&lt;br /&gt;
&lt;br /&gt;
[[File:Questionnaire_node.PNG | 800px]]&lt;br /&gt;
&lt;br /&gt;
== Design Pattern ==&lt;br /&gt;
&lt;br /&gt;
The DRY pattern is used during refactoring to extract common functionality into reusable functions or methods. For example, if a section of code is repeated in multiple places, it can be extracted into a reusable function or method that can be called from those places instead. This not only reduces duplication but also makes the code easier to read and maintain.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Bookmark Rating Before creation&lt;br /&gt;
# After logging in as instructor, go to Manage &amp;gt; Questionnaires.&lt;br /&gt;
# Initially there will be no bookmarks rating.&lt;br /&gt;
# Click on the Bookmark Rating, there wont be a dropdown as there are no ratings.&lt;br /&gt;
&lt;br /&gt;
*Create new Bookmark Rating&lt;br /&gt;
# As an instructor, go to Manage &amp;gt; Questionnaires,&lt;br /&gt;
# In bookmark Rating field, click on plus button.&lt;br /&gt;
# Create a new Bookmark Rating with required details.&lt;br /&gt;
# After creating Bookmark Rating, Start adding questions.&lt;br /&gt;
&lt;br /&gt;
* View Bookmark Rating After creation&lt;br /&gt;
# After logging in as instructor, go to Manage &amp;gt; Questionnaires.&lt;br /&gt;
# Click on the Bookmark Rating, there will be a dropdown with list of Bookmark Ratings.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing with RSpec ===&lt;br /&gt;
&lt;br /&gt;
For most of our changes we did not have to create new test cases or modified exiting test cases for all the functionalities that we have been modifying. After refactoring we run the test cases in respective files. &lt;br /&gt;
&lt;br /&gt;
Below is the screenshot of the result after running the test cases.&lt;br /&gt;
&lt;br /&gt;
[[File:testruns.PNG| 850px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Questionnaire_node_test.jpeg| 850px]]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
* Divyang Doshi&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* Kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
#[https://expertiza.ncsu.edu/ Expertiza]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza/pull/2549 Pull Request to Merge]&lt;br /&gt;
#[http://152.7.177.124:8080/ Deployed Changes Userid - instructor6 and Password - password]&lt;br /&gt;
#[https://github.com/users/mithila-reddy/projects/1 GitHub Project Board]&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Sping_2023_-_E2322:_Refactor_Questionnaire_View_to_display_Bookmark_Rating&amp;diff=147770</id>
		<title>CSC/ECE 517 Sping 2023 - E2322: Refactor Questionnaire View to display Bookmark Rating</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Sping_2023_-_E2322:_Refactor_Questionnaire_View_to_display_Bookmark_Rating&amp;diff=147770"/>
		<updated>2023-03-22T04:03:19Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Testing From UI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==Questionnaires Controller==&lt;br /&gt;
&lt;br /&gt;
Questionnaire is the superclass for all types of questionnaires and rubrics. We can create, display, and manage questionnaires using this controller. Expertiza allows users to create a variety of questionnaires, including reviews, metareviews, teammate reviews, assignments, global surveys, course surveys, and bookmark ratings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Refactoring the methods doing multiple tasks and breaking them in different modules.&lt;br /&gt;
* Refactoring duplicate code into a single method.&lt;br /&gt;
* Add comments to methods and complex lines of code.&lt;br /&gt;
* Removing code that is no longer being used or required&lt;br /&gt;
* Try to fix issues from Code Climate.&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
&lt;br /&gt;
Below are the files we changed as part of refactoring&lt;br /&gt;
&lt;br /&gt;
=====Bookmarks Controller=====&lt;br /&gt;
&lt;br /&gt;
This is the bookmarks_controller.rb which handles all the CRUD operation performed on bookmarks. Multiple things were done in just one method which we broke in modules doing that specific task. We have the same code repeating in multiple places which we moved into a single method.&lt;br /&gt;
&lt;br /&gt;
=====Questionnaire Node=====&lt;br /&gt;
&lt;br /&gt;
=====Questionnaire Type Node=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Refactoring==&lt;br /&gt;
=====Refactor Bookmark Controller===== &lt;br /&gt;
&lt;br /&gt;
The file that is no longer being used in project and was written long ago to add bookmark functionality can be considered as &amp;quot;dead code&amp;quot;. And the bookmark functionality that was originally implemented in this file has been moved to another file in the project, making the original file redundant. To address this issue, the dead code in the form of the original file can be safely removed from the project.&lt;br /&gt;
&lt;br /&gt;
By removing this unused code, we can simplify the codebase and improve the maintainability of the application, as well as potentially reduce the size of the project and improve its performance.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
* View Bookmark Rating Before creation&lt;br /&gt;
# After logging in as instructor, go to Manage &amp;gt; Questionnaires.&lt;br /&gt;
# Initially there will be no bookmarks rating.&lt;br /&gt;
# Click on the Bookmark Rating, there wont be a dropdown as there are no ratings.&lt;br /&gt;
&lt;br /&gt;
*Create new Bookmark Rating&lt;br /&gt;
# As an instructor, go to Manage &amp;gt; Questionnaires,&lt;br /&gt;
# In bookmark Rating field, click on plus button.&lt;br /&gt;
# Create a new Bookmark Rating with required details.&lt;br /&gt;
# After creating Bookmark Rating, Start adding questions.&lt;br /&gt;
&lt;br /&gt;
* View Bookmark Rating After creation&lt;br /&gt;
# After logging in as instructor, go to Manage &amp;gt; Questionnaires.&lt;br /&gt;
# Click on the Bookmark Rating, there will be a dropdown with list of Bookmark Ratings.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing with RSpec ===&lt;br /&gt;
&lt;br /&gt;
For most of our changes we did not have to create new test cases or modified exiting test cases for all the functionalities that we have been modifying. After refactoring we run the test cases in respective files. &lt;br /&gt;
&lt;br /&gt;
Below is the screenshot of the result after running the test cases.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
* Divyang Doshi&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
#[https://expertiza.ncsu.edu/ Expertiza]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza/pull/2549 Pull Request to Merge]&lt;br /&gt;
#[http://152.7.177.124:8080/ Deployed Changes Userid - instructor6 and Password - password]&lt;br /&gt;
#[https://github.com/users/mithila-reddy/projects/1 GitHub Project Board]&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Sping_2023_-_E2322:_Refactor_Questionnaire_View_to_display_Bookmark_Rating&amp;diff=147763</id>
		<title>CSC/ECE 517 Sping 2023 - E2322: Refactor Questionnaire View to display Bookmark Rating</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Sping_2023_-_E2322:_Refactor_Questionnaire_View_to_display_Bookmark_Rating&amp;diff=147763"/>
		<updated>2023-03-22T03:43:29Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==Questionnaires Controller==&lt;br /&gt;
&lt;br /&gt;
Questionnaire is the superclass for all types of questionnaires and rubrics. We can create, display, and manage questionnaires using this controller. Expertiza allows users to create a variety of questionnaires, including reviews, metareviews, teammate reviews, assignments, global surveys, course surveys, and bookmark ratings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Refactoring the methods doing multiple tasks and breaking them in different modules.&lt;br /&gt;
* Refactoring duplicate code into a single method.&lt;br /&gt;
* Add comments to methods and complex lines of code.&lt;br /&gt;
* Removing code that is no longer being used or required&lt;br /&gt;
* Try to fix issues from Code Climate.&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
&lt;br /&gt;
Below are the files we changed as part of refactoring&lt;br /&gt;
&lt;br /&gt;
=====Bookmarks Controller=====&lt;br /&gt;
&lt;br /&gt;
This is the bookmarks_controller.rb which handles all the CRUD operation performed on bookmarks. Multiple things were done in just one method which we broke in modules doing that specific task. We have the same code repeating in multiple places which we moved into a single method.&lt;br /&gt;
&lt;br /&gt;
=====Questionnaire Node=====&lt;br /&gt;
&lt;br /&gt;
=====Questionnaire Type Node=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Refactoring==&lt;br /&gt;
=====Refactor Bookmark Controller===== &lt;br /&gt;
&lt;br /&gt;
The file that is no longer being used in project and was written long ago to add bookmark functionality can be considered as &amp;quot;dead code&amp;quot;. And the bookmark functionality that was originally implemented in this file has been moved to another file in the project, making the original file redundant. To address this issue, the dead code in the form of the original file can be safely removed from the project.&lt;br /&gt;
&lt;br /&gt;
By removing this unused code, we can simplify the codebase and improve the maintainability of the application, as well as potentially reduce the size of the project and improve its performance.&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing with RSpec ===&lt;br /&gt;
&lt;br /&gt;
For most of our changes we did not have to create new test cases or modified exiting test cases for all the functionalities that we have been modifying. After refactoring we run the test cases in respective files. &lt;br /&gt;
&lt;br /&gt;
Below is the screenshot of the result after running the test cases.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
* Divyang Doshi&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
#[https://expertiza.ncsu.edu/ Expertiza]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza/pull/2549 Pull Request to Merge]&lt;br /&gt;
#[http://152.7.177.124:8080/ Deployed Changes Userid - instructor6 and Password - password]&lt;br /&gt;
#[https://github.com/users/mithila-reddy/projects/1 GitHub Project Board]&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Sping_2023_-_E2322:_Refactor_Questionnaire_View_to_display_Bookmark_Rating&amp;diff=147526</id>
		<title>CSC/ECE 517 Sping 2023 - E2322: Refactor Questionnaire View to display Bookmark Rating</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Sping_2023_-_E2322:_Refactor_Questionnaire_View_to_display_Bookmark_Rating&amp;diff=147526"/>
		<updated>2023-03-20T05:20:40Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Bookmarks Controller */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==Questionnaires Controller==&lt;br /&gt;
&lt;br /&gt;
Questionnaire is the superclass for all types of questionnaires and rubrics. We can create, display, and manage questionnaires using this controller. Expertiza allows users to create a variety of questionnaires, including reviews, metareviews, teammate reviews, assignments, global surveys, course surveys, and bookmark ratings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Refactoring the methods doing multiple tasks and breaking them in different modules.&lt;br /&gt;
* Refactoring duplicate code into a single method.&lt;br /&gt;
* Add comments to methods and complex lines of code.&lt;br /&gt;
* Try to fix issues from Code Climate.&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
&lt;br /&gt;
Below are the files we changed as part of refactoring&lt;br /&gt;
&lt;br /&gt;
=====Bookmarks Controller=====&lt;br /&gt;
&lt;br /&gt;
This is the bookmarks_controller.rb which handles all the CRUD operation performed on bookmarks. Multiple things were done in just one method which we broke in modules doing that specific task. We have the same code repeating in multiple places which we moved into a single method.&lt;br /&gt;
&lt;br /&gt;
=====Questionnaire Node=====&lt;br /&gt;
&lt;br /&gt;
=====Questionnaire Type Node=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Refactoring==&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing with RSpec ===&lt;br /&gt;
&lt;br /&gt;
For most of our changes we did not have to create new test cases or modified exiting test cases for all the functionalities that we have been modifying. After refactoring we run the test cases in respective files. &lt;br /&gt;
&lt;br /&gt;
Below is the screenshot of the result after running the test cases.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
* Divyang Doshi&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
#[https://expertiza.ncsu.edu/ Expertiza]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza/pull/2549 Pull Request to Merge]&lt;br /&gt;
#[http://152.7.177.124:8080/ Deployed Changes Userid - instructor6 and Password - password]&lt;br /&gt;
#[https://github.com/users/mithila-reddy/projects/1 GitHub Project Board]&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Sping_2023_-_E2322:_Refactor_Questionnaire_View_to_display_Bookmark_Rating&amp;diff=147511</id>
		<title>CSC/ECE 517 Sping 2023 - E2322: Refactor Questionnaire View to display Bookmark Rating</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Sping_2023_-_E2322:_Refactor_Questionnaire_View_to_display_Bookmark_Rating&amp;diff=147511"/>
		<updated>2023-03-20T01:45:55Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==Questionnaires Controller==&lt;br /&gt;
&lt;br /&gt;
Questionnaire is the superclass for all types of questionnaires and rubrics. We can create, display, and manage questionnaires using this controller. Expertiza allows users to create a variety of questionnaires, including reviews, metareviews, teammate reviews, assignments, global surveys, course surveys, and bookmark ratings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Refactoring the methods doing multiple tasks and breaking them in different modules.&lt;br /&gt;
* Refactoring duplicate code into a single method.&lt;br /&gt;
* Add comments to methods and complex lines of code.&lt;br /&gt;
* Try to fix issues from Code Climate.&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
&lt;br /&gt;
Below are the files we changed as part of refactoring&lt;br /&gt;
&lt;br /&gt;
=====Bookmarks Controller===== &lt;br /&gt;
&lt;br /&gt;
=====Questionnaire Node=====&lt;br /&gt;
&lt;br /&gt;
=====Questionnaire Type Node=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Refactoring==&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing with RSpec ===&lt;br /&gt;
&lt;br /&gt;
For most of our changes we did not have to create new test cases or modified exiting test cases for all the functionalities that we have been modifying. After refactoring we run the test cases in respective files. &lt;br /&gt;
&lt;br /&gt;
Below is the screenshot of the result after running the test cases.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
* Divyang Doshi&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
#[https://expertiza.ncsu.edu/ Expertiza]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza/pull/2549 Pull Request to Merge]&lt;br /&gt;
#[http://152.7.177.124:8080/ Deployed Changes Userid - instructor6 and Password - password]&lt;br /&gt;
#[https://github.com/users/mithila-reddy/projects/1 GitHub Project Board]&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Sping_2023_-_E2322:_Refactor_Questionnaire_View_to_display_Bookmark_Rating&amp;diff=147510</id>
		<title>CSC/ECE 517 Sping 2023 - E2322: Refactor Questionnaire View to display Bookmark Rating</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Sping_2023_-_E2322:_Refactor_Questionnaire_View_to_display_Bookmark_Rating&amp;diff=147510"/>
		<updated>2023-03-20T01:45:05Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==Questionnaires Controller==&lt;br /&gt;
&lt;br /&gt;
Questionnaire is the superclass for all types of questionnaires and rubrics. We can create, display, and manage questionnaires using this controller. Expertiza allows users to create a variety of questionnaires, including reviews, metareviews, teammate reviews, assignments, global surveys, course surveys, and bookmark ratings.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Refactoring the methods doing multiple tasks and breaking them in different modules.&lt;br /&gt;
* Refactoring duplicate code into a single method.&lt;br /&gt;
* Add comments to methods and complex lines of code.&lt;br /&gt;
* Try to fix issues from Code Climate.&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
&lt;br /&gt;
Below are the files we changed as part of refactoring&lt;br /&gt;
&lt;br /&gt;
=====Bookmarks Controller===== &lt;br /&gt;
&lt;br /&gt;
=====Questionnaire Node=====&lt;br /&gt;
&lt;br /&gt;
=====Questionnaire Type Node=====. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Refactoring==&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing with RSpec ===&lt;br /&gt;
&lt;br /&gt;
For most of our changes we did not have to create new test cases or modified exiting test cases for all the functionalities that we have been modifying. After refactoring we run the test cases in respective files. &lt;br /&gt;
&lt;br /&gt;
Below is the screenshot of the result after running the test cases.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
* Divyang Doshi&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
#[https://expertiza.ncsu.edu/ Expertiza]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza/pull/2549 Pull Request to Merge]&lt;br /&gt;
#[http://152.7.177.124:8080/ Deployed Changes Userid - instructor6 and Password - password]&lt;br /&gt;
#[https://github.com/users/mithila-reddy/projects/1 GitHub Project Board]&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Sping_2023_-_E2322:_Refactor_Questionnaire_View_to_display_Bookmark_Rating&amp;diff=147507</id>
		<title>CSC/ECE 517 Sping 2023 - E2322: Refactor Questionnaire View to display Bookmark Rating</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Sping_2023_-_E2322:_Refactor_Questionnaire_View_to_display_Bookmark_Rating&amp;diff=147507"/>
		<updated>2023-03-20T01:27:13Z</updated>

		<summary type="html">&lt;p&gt;Mtatigo: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a [http://rubyonrails.org/ Ruby on Rails] based open source project. Instructors have the ability to add new projects, assignments, etc., as well as edit existing ones. Later on, they can view student submissions and grade them. Students can also use Expertiza to organize into teams to work on a different projects and assignments and submit their work. They can also review other students' submissions.&lt;br /&gt;
&lt;br /&gt;
==Questionnaires Controller==&lt;br /&gt;
&lt;br /&gt;
Questionnaire is the superclass for all types of questionnaires and rubrics. We can create, display, and manage questionnaires using this controller. Expertiza allows users to create a variety of questionnaires, including reviews, metareviews, teammate reviews, assignments, global surveys, course surveys, and bookmark ratings.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
&lt;br /&gt;
Below are the files we changed as part of refactoring&lt;br /&gt;
&lt;br /&gt;
==Refactoring==&lt;br /&gt;
&lt;br /&gt;
== Testing  Plan ==&lt;br /&gt;
&lt;br /&gt;
===Testing From UI ===&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing with RSpec ===&lt;br /&gt;
&lt;br /&gt;
For most of our changes we did not have to create new test cases or modified exiting test cases for all the functionalities that we have been modifying. After refactoring we run the test cases in respective files. &lt;br /&gt;
&lt;br /&gt;
Below is the screenshot of the result after running the test cases.&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
* Divyang Doshi&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Mithila Reddy Tatigotla, mtatigo&lt;br /&gt;
* Vineeth Dasi, vdasi&lt;br /&gt;
* kalyan Karnati, kkarnat&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
#[https://expertiza.ncsu.edu/ Expertiza]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza/pull/2549 Pull Request to Merge]&lt;br /&gt;
#[http://152.7.177.124:8080/ Deployed Changes Userid - instructor6 and Password - password]&lt;br /&gt;
#[https://github.com/users/mithila-reddy/projects/1 GitHub Project Board]&lt;/div&gt;</summary>
		<author><name>Mtatigo</name></author>
	</entry>
</feed>