<?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=Kkarnat</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=Kkarnat"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Kkarnat"/>
	<updated>2026-08-20T01:02:30Z</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=150093</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=150093"/>
		<updated>2023-04-25T00:03:19Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: /* 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;&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;/div&gt;</summary>
		<author><name>Kkarnat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Search.PNG&amp;diff=150092</id>
		<title>File:Search.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Search.PNG&amp;diff=150092"/>
		<updated>2023-04-24T23:59:56Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kkarnat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Desc_order.PNG&amp;diff=150091</id>
		<title>File:Desc order.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Desc_order.PNG&amp;diff=150091"/>
		<updated>2023-04-24T23:59:03Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kkarnat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Asc_sort.PNG&amp;diff=150090</id>
		<title>File:Asc sort.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Asc_sort.PNG&amp;diff=150090"/>
		<updated>2023-04-24T23:58:39Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kkarnat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Courses_assignments.PNG&amp;diff=150089</id>
		<title>File:Courses assignments.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Courses_assignments.PNG&amp;diff=150089"/>
		<updated>2023-04-24T23:57:23Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kkarnat</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=150088</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=150088"/>
		<updated>2023-04-24T23:56:57Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: /* Current 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;&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;
== 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;/div&gt;</summary>
		<author><name>Kkarnat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Courses1.PNG&amp;diff=150087</id>
		<title>File:Courses1.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Courses1.PNG&amp;diff=150087"/>
		<updated>2023-04-24T23:52:07Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kkarnat</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=150084</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=150084"/>
		<updated>2023-04-24T23:23:59Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: &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;
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;
== 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;/div&gt;</summary>
		<author><name>Kkarnat</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=150082</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=150082"/>
		<updated>2023-04-24T23:23:06Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: /* 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| 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;
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;
== 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;/div&gt;</summary>
		<author><name>Kkarnat</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=150081</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=150081"/>
		<updated>2023-04-24T23:22:45Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: /* 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;
==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;
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;
== 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;/div&gt;</summary>
		<author><name>Kkarnat</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=150080</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=150080"/>
		<updated>2023-04-24T23:22:21Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: /* 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| 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;
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;
== 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;
&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;/div&gt;</summary>
		<author><name>Kkarnat</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=150079</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=150079"/>
		<updated>2023-04-24T23:22:00Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: /* 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| 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;
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;
== 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;
&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;
Pull Request: https://github.com/expertiza/reimplementation-front-end/pull/9&lt;/div&gt;</summary>
		<author><name>Kkarnat</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=150078</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=150078"/>
		<updated>2023-04-24T23:21:15Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: /* 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;
==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;
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;
== 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;
&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;/div&gt;</summary>
		<author><name>Kkarnat</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=150077</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=150077"/>
		<updated>2023-04-24T23:13:30Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: /* 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;
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;
== 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>Kkarnat</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=150075</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=150075"/>
		<updated>2023-04-24T23:04:02Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: /* 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;
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;
== 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>Kkarnat</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=150073</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=150073"/>
		<updated>2023-04-24T22:55:07Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: /* 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 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;
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>Kkarnat</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=148979</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=148979"/>
		<updated>2023-04-07T17:22:56Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: /* Design */&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;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React. There are totally 4 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.createCourse.js &amp;lt;br&amp;gt;&lt;br /&gt;
3.updateCourse.js &amp;lt;br&amp;gt;&lt;br /&gt;
4.deleteCourse.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 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 CSS styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding.&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;
=== createCourse.js ===&lt;br /&gt;
&lt;br /&gt;
The user can create a new course by entering the username, first name, last name, email address, role, email preferences, and institution details in the pop-up window designed for creating courses.&lt;br /&gt;
&lt;br /&gt;
=== updateCourse.rb ===&lt;br /&gt;
&lt;br /&gt;
Users can modify the information of an already existing course on this page.&lt;br /&gt;
&lt;br /&gt;
=== deleteCourse.rb ===&lt;br /&gt;
&lt;br /&gt;
When the user clicks on the option to delete a course , a pop-up window will appear, prompting the course to confirm the action. If confirmed, the user will be permanently deleted from the records, but only if they are not associated elsewhere to any participants.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;/div&gt;</summary>
		<author><name>Kkarnat</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=148978</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=148978"/>
		<updated>2023-04-07T17:20:15Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: /* About */&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;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React. There are totally 4 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.createCourse.js &amp;lt;br&amp;gt;&lt;br /&gt;
3.updateCourse.js &amp;lt;br&amp;gt;&lt;br /&gt;
4.deleteCourse.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 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 CSS styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding.&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;
=== participants.js (Manage participants) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for users to manage course-related information. From this page, users can access other pages such as create users, update users, and delete users.&lt;br /&gt;
&lt;br /&gt;
=== createParticipants.js ===&lt;br /&gt;
&lt;br /&gt;
The admin can create a new user by entering the username, first name, last name, email address, role, email preferences, and institution details in the pop-up window designed for creating users.&lt;br /&gt;
&lt;br /&gt;
=== updateParticipants.rb ===&lt;br /&gt;
&lt;br /&gt;
Admins can modify the information of an already existing user on this page.&lt;br /&gt;
&lt;br /&gt;
=== deleteParticpants.rb ===&lt;br /&gt;
&lt;br /&gt;
When the user clicks on the option to delete a user, a pop-up window will appear, prompting the user to confirm the action. If confirmed, the user will be permanently deleted from the records, but only if they are not associated elsewhere as a reviewer, reviewee for another assignment, or team member of a team.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;/div&gt;</summary>
		<author><name>Kkarnat</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=148977</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=148977"/>
		<updated>2023-04-07T17:18:48Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: /* About */&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;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React. There are totally 4 main views to be implemented. They are:&lt;br /&gt;
&lt;br /&gt;
====  course.js ====&lt;br /&gt;
====  createCourse.js ====&lt;br /&gt;
====  updateCourse.js ====&lt;br /&gt;
====  deleteCourse.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 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 CSS styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding.&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;
=== participants.js (Manage participants) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for users to manage course-related information. From this page, users can access other pages such as create users, update users, and delete users.&lt;br /&gt;
&lt;br /&gt;
=== createParticipants.js ===&lt;br /&gt;
&lt;br /&gt;
The admin can create a new user by entering the username, first name, last name, email address, role, email preferences, and institution details in the pop-up window designed for creating users.&lt;br /&gt;
&lt;br /&gt;
=== updateParticipants.rb ===&lt;br /&gt;
&lt;br /&gt;
Admins can modify the information of an already existing user on this page.&lt;br /&gt;
&lt;br /&gt;
=== deleteParticpants.rb ===&lt;br /&gt;
&lt;br /&gt;
When the user clicks on the option to delete a user, a pop-up window will appear, prompting the user to confirm the action. If confirmed, the user will be permanently deleted from the records, but only if they are not associated elsewhere as a reviewer, reviewee for another assignment, or team member of a team.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;/div&gt;</summary>
		<author><name>Kkarnat</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=148976</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=148976"/>
		<updated>2023-04-07T17:16:18Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: &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;
==About==&lt;br /&gt;
&lt;br /&gt;
The aim of Program 4 is to create a UI for course.rb using React. There are totally 4 main views to be implemented. They are:&lt;br /&gt;
&lt;br /&gt;
1. course.js&lt;br /&gt;
2. createCourse.js&lt;br /&gt;
3. updateCourse.js&lt;br /&gt;
4. deleteCourse.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 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 CSS styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding.&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;
=== participants.js (Manage participants) === &lt;br /&gt;
&lt;br /&gt;
This page serves as the primary interface for users to manage course-related information. From this page, users can access other pages such as create users, update users, and delete users.&lt;br /&gt;
&lt;br /&gt;
=== createParticipants.js ===&lt;br /&gt;
&lt;br /&gt;
The admin can create a new user by entering the username, first name, last name, email address, role, email preferences, and institution details in the pop-up window designed for creating users.&lt;br /&gt;
&lt;br /&gt;
=== updateParticipants.rb ===&lt;br /&gt;
&lt;br /&gt;
Admins can modify the information of an already existing user on this page.&lt;br /&gt;
&lt;br /&gt;
=== deleteParticpants.rb ===&lt;br /&gt;
&lt;br /&gt;
When the user clicks on the option to delete a user, a pop-up window will appear, prompting the user to confirm the action. If confirmed, the user will be permanently deleted from the records, but only if they are not associated elsewhere as a reviewer, reviewee for another assignment, or team member of a team.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;/div&gt;</summary>
		<author><name>Kkarnat</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=148975</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=148975"/>
		<updated>2023-04-07T17:06:44Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: /* Proposed Solution */&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;
[[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;
We propose implementing courses 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 CSS styles to the Course component to control the appearance of the card, such as the background color, border radius, and padding.&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;
==References==&lt;/div&gt;</summary>
		<author><name>Kkarnat</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=148974</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=148974"/>
		<updated>2023-04-07T17:00:43Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: /* Current Implementation */&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;
[[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;
==References==&lt;/div&gt;</summary>
		<author><name>Kkarnat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Courses.PNG&amp;diff=148973</id>
		<title>File:Courses.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Courses.PNG&amp;diff=148973"/>
		<updated>2023-04-07T16:56:49Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kkarnat</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=148261</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=148261"/>
		<updated>2023-03-23T03:22:03Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: /* Members */&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;
== 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>Kkarnat</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=148258</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=148258"/>
		<updated>2023-03-23T03:21:43Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: /* Questionnaire Node */&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;
== 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>Kkarnat</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=148254</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=148254"/>
		<updated>2023-03-23T03:21:01Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: /* Automated Testing with RSpec */&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;
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;
== 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>Kkarnat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Questionnaire_node_test.jpeg&amp;diff=148252</id>
		<title>File:Questionnaire node test.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Questionnaire_node_test.jpeg&amp;diff=148252"/>
		<updated>2023-03-23T03:19:52Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kkarnat</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=148250</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=148250"/>
		<updated>2023-03-23T03:18:49Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: /* Refactoring */&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;
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;
== 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]]&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>Kkarnat</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=148242</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=148242"/>
		<updated>2023-03-23T03:14:29Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: /* Refactoring */&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;
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]]&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]]&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>Kkarnat</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Questionnaire_node.PNG&amp;diff=148205</id>
		<title>File:Questionnaire node.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Questionnaire_node.PNG&amp;diff=148205"/>
		<updated>2023-03-23T03:01:18Z</updated>

		<summary type="html">&lt;p&gt;Kkarnat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kkarnat</name></author>
	</entry>
</feed>