<?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=Onam</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=Onam"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Onam"/>
	<updated>2026-06-15T20:52:01Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=106577</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=106577"/>
		<updated>2016-12-06T05:13:20Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1691 Convert Assignment Creation Form to ReactJS =&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&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;
=== Dynamic Rendering ===&lt;br /&gt;
A client-side dynamic web page processes the web page using HTML scripting running in the browser as it loads. JavaScript and other scripting languages determine the way the HTML in the received page is parsed into the Document Object Model, or DOM, that represents the loaded web page. The same client-side techniques can then dynamically update or change the DOM in the same way.&lt;br /&gt;
&lt;br /&gt;
Shown below is an example of a dynamically rendered webpage. The user is able to enter values, which are reflected in the view immediately after submission, without any redirection or reloading of the webpage. You can also see the timer running on the page, which demonstrates the ability to dynamically update variable values inside the view.&lt;br /&gt;
&lt;br /&gt;
[[File:Giphy.gif|centre]]&lt;br /&gt;
&lt;br /&gt;
== Assignment Creation ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
The assignment creation view is currently implemented mostly in HTML and some data validations are done using JQuery. This implementation does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to create a new assignment, clicking the new assignment link will generate a server request and the new view is rendered (url is changed). After filling up all the details required for the assignment creation, save link will again generate a server request which will make the database entry and again render a new view. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin: 5px 5px 5px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic222.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin: 5px 5px 5px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic1.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
&lt;br /&gt;
In the revised implementation, clicking on the &amp;lt;i&amp;gt;New Assignment&amp;lt;/i&amp;gt; link generates a drop-down window, which contains the form for creating a new assignment. This form contains the same fields as the original form.&amp;lt;br/&amp;gt;&lt;br /&gt;
In addition, we have added data validations for two fields. The name of the assignment cannot be left blank, and the 'submission directory' field cannot be left blank or contain any special characters. If either of these conditions is violated, an error message is displayed to the user. Furthermore, these validations are done in the client-side itself, removing the need for a server request to validate the data.&lt;br /&gt;
Submitting the form will create a  database entry and close the form.&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic88.png|center]]&lt;br /&gt;
&lt;br /&gt;
====Changed files====&lt;br /&gt;
*apps/assets/javascripts/tree_display.jsx.erb&lt;br /&gt;
*apps/controllers/assignments_controller.rb&lt;br /&gt;
*apps/controllers/tree_display_controller.rb&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
We created a new React class NewAssignmentForm which dynamically creates and displays the form for New assignment. This class the following methods:&lt;br /&gt;
     getInitialState function(){}      -  Here we identify the form parameters that will be sent to the database when a new assignment is created.&lt;br /&gt;
     handleNameChange function(e){}    -  The following methods get triggered on change of the form fields and capture/update the state variables  &lt;br /&gt;
     handleCourseChange: function(e){}  -//-&lt;br /&gt;
     handleSubChange: function(e){}  -//-&lt;br /&gt;
     handleDescChange: function(e){}   -//-&lt;br /&gt;
     handleTeamChange: function(e){}   -//-&lt;br /&gt;
     handleQuizChange: function(e){}   -//-&lt;br /&gt;
     handleDeadlineChange: function(e){}  -//-&lt;br /&gt;
     handleReviewsChange: function(e){}   -//-&lt;br /&gt;
     handleCalibrationChange: function(e){}   -//-&lt;br /&gt;
     handleAvailabilityChange: function(e){}  -//-&lt;br /&gt;
     handleReputationChange: function(e){}   -//-&lt;br /&gt;
&lt;br /&gt;
      directoryValidate: function(e){}  - this method validates that there is valid directory entered&lt;br /&gt;
      nameValidate: function(e){}  - this method validates that a valid project name isentered&lt;br /&gt;
&lt;br /&gt;
      handleCreateAssignment: function(e) {}  - this method sends ajax request with the parameters from the filled form.&lt;br /&gt;
&lt;br /&gt;
      handleGetCourses: function() {}  - this method is triggered when a course selection drop down is clicked. It sends a jQuery request and gets all the courses based on the instructor role &lt;br /&gt;
&lt;br /&gt;
      render: function(){}  - this method renders the form components&lt;br /&gt;
&lt;br /&gt;
In assignment_controller.rb we edited create method:&lt;br /&gt;
&lt;br /&gt;
    @assignment_form.assignment.instructor_id = current_user.id   --  We now pass current instructor to the assignment form.&lt;br /&gt;
&lt;br /&gt;
In tree_display_controller.rb we added new method:&lt;br /&gt;
&lt;br /&gt;
    def get_courses_node_ng   -- This method returns the course list array of hashes based on the instructor chosen. This logic is similar to the helper method course_options&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor and check that creating a new assignment works as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that the assignment could be created successfully and all the entered options have been preserved&lt;br /&gt;
&lt;br /&gt;
== Editing Assignment ==&lt;br /&gt;
=== Current Implementation ===&lt;br /&gt;
Similar to New assignment creation page Edit page does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to edit the name of the assignment or change number of slots they have to click edit button. It will generate a server request and the new view is rendered (url is changed). After filling out all the details that changed, save link will again generate a server request which will make the database entry and again render a new view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin-right:2%;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic55.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin-left:2%;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic66.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
In the revised implementation, as the edit button is clicked a dynamic drop down form will be displayed. Saving the details will make the database entry. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic99.png|center]]&lt;br /&gt;
&lt;br /&gt;
====Files to be changed====&lt;br /&gt;
*apps/views/tree_display/list.html.erb&lt;br /&gt;
*apps/views/assignments/edit.html.erb&lt;br /&gt;
*apps/views/assignments/edit/_general.html.erb&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
1. Log in as an instructor and check that editing an assignment works as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that an assignment could be successfully edited and all the existing functionality is preserved&amp;lt;br&amp;gt;&lt;br /&gt;
==References==&lt;br /&gt;
#[https://facebook.github.io/react/ ReactJS by Facebook Code]&lt;br /&gt;
#[https://www.airpair.com/reactjs/posts/reactjs-a-guide-for-rails-developers ReactJS for Ruby on Rails]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[http://wiki.expertiza.ncsu.edu/index.php/Main_Page Expertiza wiki]&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=106576</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=106576"/>
		<updated>2016-12-06T05:12:59Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1691 Convert Assignment Creation Form to ReactJS =&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&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;
=== Dynamic Rendering ===&lt;br /&gt;
A client-side dynamic web page processes the web page using HTML scripting running in the browser as it loads. JavaScript and other scripting languages determine the way the HTML in the received page is parsed into the Document Object Model, or DOM, that represents the loaded web page. The same client-side techniques can then dynamically update or change the DOM in the same way.&lt;br /&gt;
&lt;br /&gt;
Shown below is an example of a dynamically rendered webpage. The user is able to enter values, which are reflected in the view immediately after submission, without any redirection or reloading of the webpage. You can also see the timer running on the page, which demonstrates the ability to dynamically update variable values inside the view.&lt;br /&gt;
&lt;br /&gt;
[[File:Giphy.gif|centre]]&lt;br /&gt;
&lt;br /&gt;
== Assignment Creation ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
The assignment creation view is currently implemented mostly in HTML and some data validations are done using JQuery. This implementation does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to create a new assignment, clicking the new assignment link will generate a server request and the new view is rendered (url is changed). After filling up all the details required for the assignment creation, save link will again generate a server request which will make the database entry and again render a new view. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin: 5px 5px 5px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic222.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin: 5px 5px 5px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic1.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
&lt;br /&gt;
In the revised implementation, clicking on the &amp;lt;i&amp;gt;New Assignment&amp;lt;/i&amp;gt; link generates a drop-down window, which contains the form for creating a new assignment. This form contains the same fields as the original form.&amp;lt;br/&amp;gt;&lt;br /&gt;
In addition, we have added data validations for two fields. The name of the assignment cannot be left blank, and the 'submission directory' field cannot be left blank or contain any special characters. If either of these conditions is violated, an error message is displayed to the user. Furthermore, these validations are done in the client-side itself, removing the need for a server request to validate the data.&lt;br /&gt;
Submitting the form will create a  database entry and close the form.&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic88.png|center]]&lt;br /&gt;
&lt;br /&gt;
====Changed files====&lt;br /&gt;
*apps/assets/javascripts/tree_display.jsx.erb&lt;br /&gt;
*apps/controllers/assignments_controller.rb&lt;br /&gt;
*apps/controllers/tree_display_controller.rb&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
We created a new React class NewAssignmentForm which dynamically creates and displays the form for New assignment. This class the following methods:&lt;br /&gt;
     getInitialState function(){}      -  Here we identify the form parameters that will be sent to the database when a new assignment is created.&lt;br /&gt;
     handleNameChange function(e){}    -  The following methods get triggered on change of the form fields and capture/update the state variables  &lt;br /&gt;
     handleCourseChange: function(e){}  -//-&lt;br /&gt;
     handleSubChange: function(e){}  -//-&lt;br /&gt;
     handleDescChange: function(e){}   -//-&lt;br /&gt;
     handleTeamChange: function(e){}   -//-&lt;br /&gt;
     handleQuizChange: function(e){}   -//-&lt;br /&gt;
     handleDeadlineChange: function(e){}  -//-&lt;br /&gt;
     handleReviewsChange: function(e){}   -//-&lt;br /&gt;
     handleCalibrationChange: function(e){}   -//-&lt;br /&gt;
     handleAvailabilityChange: function(e){}  -//-&lt;br /&gt;
     handleReputationChange: function(e){}   -//-&lt;br /&gt;
&lt;br /&gt;
      directoryValidate: function(e){}  - this method validates that there is valid directory entered&lt;br /&gt;
      nameValidate: function(e){}  - this method validates that a valid project name isentered&lt;br /&gt;
&lt;br /&gt;
      handleCreateAssignment: function(e) {}  - this method sends ajax request with the parameters from the filled form.&lt;br /&gt;
&lt;br /&gt;
      handleGetCourses: function() {}  - this method is triggered when a course selection drop down is clicked. It sends a jQuery request and gets all the courses based on the instructor role &lt;br /&gt;
&lt;br /&gt;
      render: function(){}  - this method renders the form components&lt;br /&gt;
&lt;br /&gt;
In assignment_controller.rb we edited create method:&lt;br /&gt;
&lt;br /&gt;
    @assignment_form.assignment.instructor_id = current_user.id   --  We now pass current instructor to the assignment form.&lt;br /&gt;
&lt;br /&gt;
In tree_display_controller.rb we added new method:&lt;br /&gt;
&lt;br /&gt;
    def get_courses_node_ng   -- This method returns the course list array of hashes based on the instructor chosen. This logic is similar to the helper method course_options&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor and check that creating a new assignment works as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that the assignment could be created successfully and all the entered options have been preserved&lt;br /&gt;
&lt;br /&gt;
== Editing Assignment ==&lt;br /&gt;
=== Current Implementation ===&lt;br /&gt;
Similar to New assignment creation page Edit page does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to edit the name of the assignment or change number of slots they have to click edit button. It will generate a server request and the new view is rendered (url is changed). After filling out all the details that changed, save link will again generate a server request which will make the database entry and again render a new view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin-right:2%;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic55.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin-left:2%;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic66.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
In the revised implementation, as the edit button is clicked a dynamic drop down form will be displayed. Saving the details will make the database entry. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic99.png|center]]&lt;br /&gt;
&lt;br /&gt;
====Files to be changed====&lt;br /&gt;
*apps/views/tree_display/list.html.erb&lt;br /&gt;
*apps/views/assignments/edit.html.erb&lt;br /&gt;
*apps/views/assignments/edit/_general.html.erb&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
1. Log in as an instructor and check that editing an assignment works as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that an assignment could be successfully edited and all the existing functionality is preserved&amp;lt;br&amp;gt;&lt;br /&gt;
==References==&lt;br /&gt;
#[https://facebook.github.io/react/ ReactJS by Facebook Code]&lt;br /&gt;
#[https://www.airpair.com/reactjs/posts/reactjs-a-guide-for-rails-developers ReactJS for Ruby on Rails]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[http://wiki.expertiza.ncsu.edu/index.php/Main_Page Expertiza wiki]&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=106575</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=106575"/>
		<updated>2016-12-06T05:01:59Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1691 Convert Assignment Creation Form to ReactJS =&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&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;
=== Dynamic Rendering ===&lt;br /&gt;
A client-side dynamic web page processes the web page using HTML scripting running in the browser as it loads. JavaScript and other scripting languages determine the way the HTML in the received page is parsed into the Document Object Model, or DOM, that represents the loaded web page. The same client-side techniques can then dynamically update or change the DOM in the same way.&lt;br /&gt;
&lt;br /&gt;
Shown below is an example of a dynamically rendered webpage. The user is able to enter values, which are reflected in the view immediately after submission, without any redirection or reloading of the webpage. You can also see the timer running on the page, which demonstrates the ability to dynamically update variable values inside the view.&lt;br /&gt;
&lt;br /&gt;
[[File:Giphy.gif|centre]]&lt;br /&gt;
&lt;br /&gt;
== Assignment Creation ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
The assignment creation view is currently implemented mostly in HTML and some data validations are done using JQuery. This implementation does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to create a new assignment, clicking the new assignment link will generate a server request and the new view is rendered (url is changed). After filling up all the details required for the assignment creation, save link will again generate a server request which will make the database entry and again render a new view. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin: 5px 5px 5px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic222.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin: 5px 5px 5px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic1.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
&lt;br /&gt;
In the revised implementation, clicking on the &amp;lt;i&amp;gt;New Assignment&amp;lt;/i&amp;gt; link generates a drop-down window, which contains the form for creating a new assignment. This form contains the same fields as the original form.&amp;lt;br/&amp;gt;&lt;br /&gt;
In addition, we have added data validations for two fields. The name of the assignment cannot be left blank, and the 'submission directory' field cannot be left blank or contain any special characters. If either of these conditions is violated, an error message is displayed to the user. Furthermore, these validations are done in the client-side itself, removing the need for a server request to validate the data.&lt;br /&gt;
Submitting the form will create a  database entry and close the form.&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic88.png|center]]&lt;br /&gt;
&lt;br /&gt;
====Changed files====&lt;br /&gt;
*apps/assets/javascripts/tree_display.jsx.erb&lt;br /&gt;
*apps/controllers/assignments_controller.rb&lt;br /&gt;
*apps/controllers/tree_display_controller.rb&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
We created a new React class NewAssignmentForm which dynamically creates and displays the form for New assignment. This class the following methods:&lt;br /&gt;
     getInitialState function(){}      -  Here we identify the form parameters that will be sent to the database when a new assignment is created.&lt;br /&gt;
     handleNameChange function(e){}    -  The following methods get triggered on change of the form fields and capture/update the state variables  &lt;br /&gt;
     handleCourseChange: function(e){}  -//-&lt;br /&gt;
     handleSubChange: function(e){}  -//-&lt;br /&gt;
     handleDescChange: function(e){}   -//-&lt;br /&gt;
     handleTeamChange: function(e){}   -//-&lt;br /&gt;
     handleQuizChange: function(e){}   -//-&lt;br /&gt;
     handleDeadlineChange: function(e){}  -//-&lt;br /&gt;
     handleReviewsChange: function(e){}   -//-&lt;br /&gt;
     handleCalibrationChange: function(e){}   -//-&lt;br /&gt;
     handleAvailabilityChange: function(e){}  -//-&lt;br /&gt;
     handleReputationChange: function(e){}   -//-&lt;br /&gt;
&lt;br /&gt;
      directoryValidate: function(e){}  - this method validates that there is valid directory entered&lt;br /&gt;
      nameValidate: function(e){}  - this method validates that a valid project name isentered&lt;br /&gt;
&lt;br /&gt;
      handleCreateAssignment: function(e) {}  - this method sends ajax request with the parameters from the filled form.&lt;br /&gt;
&lt;br /&gt;
      handleGetCourses: function() {}  - this method is triggered when a course selection drop down is clicked. It sends a jQuery request and gets all the courses based on the instructor role &lt;br /&gt;
&lt;br /&gt;
      render: function(){}  - this method renders the form components&lt;br /&gt;
&lt;br /&gt;
In assignment_controller.rb we edited create method:&lt;br /&gt;
&lt;br /&gt;
    @assignment_form.assignment.instructor_id = current_user.id   --  We now pass current instructor to the assignment form.&lt;br /&gt;
&lt;br /&gt;
In tree_display_controller.rb we added new method:&lt;br /&gt;
&lt;br /&gt;
    def get_courses_node_ng   -- This method returns the course list array of hashes based on the instructor chosen. This logic is similar to the helper method course_options&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor and check that creating a new assignment works as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that the assignment could be created successfully and all the entered options have been preserved&lt;br /&gt;
&lt;br /&gt;
== Editing Assignment ==&lt;br /&gt;
=== Current Implementation ===&lt;br /&gt;
Similar to New assignment creation page Edit page does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to edit the name of the assignment or change number of slots they have to click edit button. It will generate a server request and the new view is rendered (url is changed). After filling out all the details that changed, save link will again generate a server request which will make the database entry and again render a new view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin-right:2%;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic55.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin-left:2%;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic66.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
In the revised implementation, the main edit table will be dynamically updatable. Saving the details will make the database entry. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic99.png|center]]&lt;br /&gt;
&lt;br /&gt;
====Files to be changed====&lt;br /&gt;
*apps/views/tree_display/list.html.erb&lt;br /&gt;
*apps/views/assignments/edit.html.erb&lt;br /&gt;
*apps/views/assignments/edit/_general.html.erb&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
1. Log in as an instructor and check that editing an assignment works as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that an assignment could be successfully edited and all the existing functionality is preserved&amp;lt;br&amp;gt;&lt;br /&gt;
==References==&lt;br /&gt;
#[https://facebook.github.io/react/ ReactJS by Facebook Code]&lt;br /&gt;
#[https://www.airpair.com/reactjs/posts/reactjs-a-guide-for-rails-developers ReactJS for Ruby on Rails]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[http://wiki.expertiza.ncsu.edu/index.php/Main_Page Expertiza wiki]&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic99.png&amp;diff=106574</id>
		<title>File:FinalProj pic99.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic99.png&amp;diff=106574"/>
		<updated>2016-12-06T05:01:46Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=106103</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=106103"/>
		<updated>2016-12-02T22:47:27Z</updated>

		<summary type="html">&lt;p&gt;Onam: /* Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1691 Convert Assignment Creation Form to ReactJS =&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&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;
=== Dynamic Rendering ===&lt;br /&gt;
A client-side dynamic web page processes the web page using HTML scripting running in the browser as it loads. JavaScript and other scripting languages determine the way the HTML in the received page is parsed into the Document Object Model, or DOM, that represents the loaded web page. The same client-side techniques can then dynamically update or change the DOM in the same way.&lt;br /&gt;
&lt;br /&gt;
Shown below is an example of a dynamically rendered webpage. The user is able to enter values, which are reflected in the view immediately after submission, without any redirection or reloading of the webpage. You can also see the timer running on the page, which demonstrates the ability to dynamically update variable values inside the view.&lt;br /&gt;
&lt;br /&gt;
[[File:Giphy.gif|centre]]&lt;br /&gt;
&lt;br /&gt;
== Assignment Creation ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
The assignment creation view is currently implemented mostly in HTML and some data validations are done using JQuery. This implementation does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to create a new assignment, clicking the new assignment link will generate a server request and the new view is rendered (url is changed). After filling up all the details required for the assignment creation, save link will again generate a server request which will make the database entry and again render a new view. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin: 5px 5px 5px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic222.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin: 5px 5px 5px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic1.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
&lt;br /&gt;
In the revised implementation, clicking on the &amp;lt;i&amp;gt;New Assignment&amp;lt;/i&amp;gt; link generates a drop-down window, which contains the form for creating a new assignment. This form contains the same fields as the original form.&amp;lt;br/&amp;gt;&lt;br /&gt;
In addition, we have added data validations for two fields. The name of the assignment cannot be left blank, and the 'submission directory' field cannot be left blank or contain any special characters. If either of these conditions is violated, an error message is displayed to the user. Furthermore, these validations are done in the client-side itself, removing the need for a server request to validate the data.&lt;br /&gt;
Submitting the form will create a  database entry and close the form.&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic88.png|center]]&lt;br /&gt;
&lt;br /&gt;
====Changed files====&lt;br /&gt;
*apps/assets/javascripts/tree_display.jsx.erb&lt;br /&gt;
*apps/controllers/assignments_controller.rb&lt;br /&gt;
*apps/controllers/tree_display_controller.rb&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
We created a new React class NewAssignmentForm which dynamically creates and displays the form for New assignment. This class the following methods:&lt;br /&gt;
     getInitialState function(){}      -  Here we identify the form parameters that will be sent to the database when a new assignment is created.&lt;br /&gt;
     handleNameChange function(e){}    -  The following methods get triggered on change of the form fields and capture/update the state variables  &lt;br /&gt;
     handleCourseChange: function(e){}  -//-&lt;br /&gt;
     handleSubChange: function(e){}  -//-&lt;br /&gt;
     handleDescChange: function(e){}   -//-&lt;br /&gt;
     handleTeamChange: function(e){}   -//-&lt;br /&gt;
     handleQuizChange: function(e){}   -//-&lt;br /&gt;
     handleDeadlineChange: function(e){}  -//-&lt;br /&gt;
     handleReviewsChange: function(e){}   -//-&lt;br /&gt;
     handleCalibrationChange: function(e){}   -//-&lt;br /&gt;
     handleAvailabilityChange: function(e){}  -//-&lt;br /&gt;
     handleReputationChange: function(e){}   -//-&lt;br /&gt;
&lt;br /&gt;
      directoryValidate: function(e){}  - this method validates that there is valid directory entered&lt;br /&gt;
      nameValidate: function(e){}  - this method validates that a valid project name isentered&lt;br /&gt;
&lt;br /&gt;
      handleCreateAssignment: function(e) {}  - this method sends ajax request with the parameters from the filled form.&lt;br /&gt;
&lt;br /&gt;
      handleGetCourses: function() {}  - this method is triggered when a course selection drop down is clicked. It sends a jQuery request and gets all the courses based on the instructor role &lt;br /&gt;
&lt;br /&gt;
      render: function(){}  - this method renders the form components&lt;br /&gt;
&lt;br /&gt;
In assignment_controller.rb we edited create method:&lt;br /&gt;
&lt;br /&gt;
    @assignment_form.assignment.instructor_id = current_user.id   --  We now pass current instructor to the assignment form.&lt;br /&gt;
&lt;br /&gt;
In tree_display_controller.rb we added new method:&lt;br /&gt;
&lt;br /&gt;
    def get_courses_node_ng   -- This method returns the course list array of hashes based on the instructor chosen. This logic is similar to the helper method course_options&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor and check that creating a new assignment works as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that the assignment could be created successfully and all the entered options have been preserved&lt;br /&gt;
&lt;br /&gt;
== Editing Assignment ==&lt;br /&gt;
=== Current Implementation ===&lt;br /&gt;
Similar to New assignment creation page Edit page does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to edit the name of the assignment or change number of slots they have to click edit button. It will generate a server request and the new view is rendered (url is changed). After filling out all the details that changed, save link will again generate a server request which will make the database entry and again render a new view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin-right:2%;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic55.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin-left:2%;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic66.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
In the revised implementation, the main edit table will be dynamically updatable. Saving the details will make the database entry. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic77.png|center]]&lt;br /&gt;
&lt;br /&gt;
====Files to be changed====&lt;br /&gt;
*apps/views/tree_display/list.html.erb&lt;br /&gt;
*apps/views/assignments/edit.html.erb&lt;br /&gt;
*apps/views/assignments/edit/_general.html.erb&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
1. Log in as an instructor and check that editing an assignment works as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that an assignment could be successfully edited and all the existing functionality is preserved&amp;lt;br&amp;gt;&lt;br /&gt;
==References==&lt;br /&gt;
#[https://facebook.github.io/react/ ReactJS by Facebook Code]&lt;br /&gt;
#[https://www.airpair.com/reactjs/posts/reactjs-a-guide-for-rails-developers ReactJS for Ruby on Rails]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[http://wiki.expertiza.ncsu.edu/index.php/Main_Page Expertiza wiki]&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=106072</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=106072"/>
		<updated>2016-12-02T18:56:51Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1691 Convert Assignment Creation Form to ReactJS =&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&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;
=== Dynamic Rendering ===&lt;br /&gt;
A client-side dynamic web page processes the web page using HTML scripting running in the browser as it loads. JavaScript and other scripting languages determine the way the HTML in the received page is parsed into the Document Object Model, or DOM, that represents the loaded web page. The same client-side techniques can then dynamically update or change the DOM in the same way.&lt;br /&gt;
&lt;br /&gt;
Shown below is an example of a dynamically rendered webpage. The user is able to enter values, which are reflected in the view immediately after submission, without any redirection or reloading of the webpage. You can also see the timer running on the page, which demonstrates the ability to dynamically update variable values inside the view.&lt;br /&gt;
&lt;br /&gt;
[[File:Giphy.gif|centre]]&lt;br /&gt;
&lt;br /&gt;
== Assignment Creation ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
The assignment creation view is currently implemented mostly in HTML and some data validations are done using JQuery. This implementation does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to create a new assignment, clicking the new assignment link will generate a server request and the new view is rendered (url is changed). After filling up all the details required for the assignment creation, save link will again generate a server request which will make the database entry and again render a new view. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin: 5px 5px 5px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic222.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin: 5px 5px 5px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic1.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
&lt;br /&gt;
In the revised implementation, clicking on the &amp;lt;i&amp;gt;New Assignment&amp;lt;/i&amp;gt; link generates a drop-down window, which contains the form for creating a new assignment. This form contains the same fields as the original form.&amp;lt;br/&amp;gt;&lt;br /&gt;
In addition, we have added data validations for two fields. The name of the assignment cannot be left blank, and the 'submission directory' field cannot be left blank or contain any special characters. If either of these conditions is violated, an error message is displayed to the user. Furthermore, these validations are done in the client-side itself, removing the need for a server request to validate the data.&lt;br /&gt;
Submitting the form will create a  database entry and close the form.&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic88.png|center]]&lt;br /&gt;
&lt;br /&gt;
====Changed files====&lt;br /&gt;
*apps/assets/javascripts/tree_display.jsx.erb&lt;br /&gt;
*apps/controllers/assignments_controller.rb&lt;br /&gt;
*apps/controllers/tree_display_controller.rb&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
We created a new React class NewAssignmentForm which dynamically creates and displays the form for New assignment. This class the following methods:&lt;br /&gt;
     getInitialState function(){}      -  Here we identify the form parameters that will be sent to the database when a new assignment is created.&lt;br /&gt;
     handleNameChange function(e){}    -  The following methods get triggered on change of the form fields and capture/update the state variables  &lt;br /&gt;
     handleCourseChange: function(e){}  -//-&lt;br /&gt;
     handleSubChange: function(e){}  -//-&lt;br /&gt;
     handleDescChange: function(e){}   -//-&lt;br /&gt;
     handleTeamChange: function(e){}   -//-&lt;br /&gt;
     handleQuizChange: function(e){}   -//-&lt;br /&gt;
     handleDeadlineChange: function(e){}  -//-&lt;br /&gt;
     handleReviewsChange: function(e){}   -//-&lt;br /&gt;
     handleCalibrationChange: function(e){}   -//-&lt;br /&gt;
     handleAvailabilityChange: function(e){}  -//-&lt;br /&gt;
     handleReputationChange: function(e){}   -//-&lt;br /&gt;
&lt;br /&gt;
      directoryValidate: function(e){}  - this method validates that there is valid directory entered&lt;br /&gt;
      nameValidate: function(e){}  - this method validates that a valid project name isentered&lt;br /&gt;
&lt;br /&gt;
      handleCreateAssignment: function(e) {}  - this method sends ajax request with the parameters from the filled form.&lt;br /&gt;
&lt;br /&gt;
      handleGetCourses: function() {}  - this method is triggered when a course selection drop down is clicked. It sends a jQuery request and gets all the courses based on the instructor role &lt;br /&gt;
&lt;br /&gt;
      render: function(){}  - this method renders the form components&lt;br /&gt;
&lt;br /&gt;
In assignment_controller.rb we edited create method:&lt;br /&gt;
&lt;br /&gt;
    @assignment_form.assignment.instructor_id = current_user.id   --  We now pass current instructor is to the assignment form.&lt;br /&gt;
&lt;br /&gt;
In tree_display_controller.rb we added new method:&lt;br /&gt;
&lt;br /&gt;
    def get_courses_node_ng   -- This method returns the course list based on the instructor chosen. This logic is similar to the helper method course_options&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor and check that creating a new assignment works as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that the assignment could be created successfully and all the entered options have been preserved&lt;br /&gt;
&lt;br /&gt;
== Editing Assignment ==&lt;br /&gt;
=== Current Implementation ===&lt;br /&gt;
Similar to New assignment creation page Edit page does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to edit the name of the assignment or change number of slots they have to click edit button. It will generate a server request and the new view is rendered (url is changed). After filling out all the details that changed, save link will again generate a server request which will make the database entry and again render a new view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin-right:2%;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic55.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin-left:2%;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic66.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
In the revised implementation, the main edit table will be dynamically updatable. Saving the details will make the database entry. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic77.png|center]]&lt;br /&gt;
&lt;br /&gt;
====Files to be changed====&lt;br /&gt;
*apps/views/tree_display/list.html.erb&lt;br /&gt;
*apps/views/assignments/edit.html.erb&lt;br /&gt;
*apps/views/assignments/edit/_general.html.erb&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
1. Log in as an instructor and check that editing an assignment works as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that an assignment could be successfully edited and all the existing functionality is preserved&amp;lt;br&amp;gt;&lt;br /&gt;
==References==&lt;br /&gt;
#[https://facebook.github.io/react/ ReactJS by Facebook Code]&lt;br /&gt;
#[https://www.airpair.com/reactjs/posts/reactjs-a-guide-for-rails-developers ReactJS for Ruby on Rails]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[http://wiki.expertiza.ncsu.edu/index.php/Main_Page Expertiza wiki]&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=106071</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=106071"/>
		<updated>2016-12-02T18:23:35Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1691 Convert Assignment Creation Form to ReactJS =&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&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;
=== Dynamic Rendering ===&lt;br /&gt;
A client-side dynamic web page processes the web page using HTML scripting running in the browser as it loads. JavaScript and other scripting languages determine the way the HTML in the received page is parsed into the Document Object Model, or DOM, that represents the loaded web page. The same client-side techniques can then dynamically update or change the DOM in the same way.&lt;br /&gt;
&lt;br /&gt;
Shown below is an example of a dynamically rendered webpage. The user is able to enter values, which are reflected in the view immediately after submission, without any redirection or reloading of the webpage. You can also see the timer running on the page, which demonstrates the ability to dynamically update variable values inside the view.&lt;br /&gt;
&lt;br /&gt;
[[File:Giphy.gif|centre]]&lt;br /&gt;
&lt;br /&gt;
== Assignment Creation ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
The assignment creation view is currently implemented mostly in HTML and some data validations are done using JQuery. This implementation does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to create a new assignment, clicking the new assignment link will generate a server request and the new view is rendered (url is changed). After filling up all the details required for the assignment creation, save link will again generate a server request which will make the database entry and again render a new view. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin: 5px 5px 5px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic222.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin: 5px 5px 5px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic1.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
&lt;br /&gt;
In the revised implementation, clicking on the &amp;lt;i&amp;gt;New Assignment&amp;lt;/i&amp;gt; link generates a drop-down window, which contains the form for creating a new assignment. This form contains the same fields as the original form.&amp;lt;br/&amp;gt;&lt;br /&gt;
In addition, we have added data validations for two fields. The name of the assignment cannot be left blank, and the 'submission directory' field cannot be left blank or contain any special characters. If either of these conditions is violated, an error message is displayed to the user. Furthermore, these validations are done in the client-side itself, removing the need for a server request to validate the data.&lt;br /&gt;
Submitting the form will create a  database entry and close the form.&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic88.png|center]]&lt;br /&gt;
&lt;br /&gt;
====Changed files====&lt;br /&gt;
*apps/assets/javascripts/tree_display.jsx.erb&lt;br /&gt;
*apps/controllers/assignments_controller.rb&lt;br /&gt;
*apps/controllers/tree_display_controller.rb&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
We created a new React class NewAssignmentForm which dynamically creates and displays the form for New assignment. This class the following methods:&lt;br /&gt;
     getInitialState function(){}      -  Here we identify the form parameters that will be sent to the database when a new assignment is created.&lt;br /&gt;
     handleNameChange function(e){}    -  The following methods get triggered on change of the form fields and capture/update the state variables  &lt;br /&gt;
     handleCourseChange: function(e){}  -//-&lt;br /&gt;
     handleSubChange: function(e){}  -//-&lt;br /&gt;
     handleDescChange: function(e){}   -//-&lt;br /&gt;
     handleTeamChange: function(e){}   -//-&lt;br /&gt;
     handleQuizChange: function(e){}   -//-&lt;br /&gt;
     handleDeadlineChange: function(e){}  -//-&lt;br /&gt;
     handleReviewsChange: function(e){}   -//-&lt;br /&gt;
     handleCalibrationChange: function(e){}   -//-&lt;br /&gt;
     handleAvailabilityChange: function(e){}  -//-&lt;br /&gt;
     handleReputationChange: function(e){}   -//-&lt;br /&gt;
&lt;br /&gt;
      directoryValidate: function(e){}  - this method validates that there is valid directory entered&lt;br /&gt;
      nameValidate: function(e){}  - this method validates that a valid project name isentered&lt;br /&gt;
&lt;br /&gt;
      handleCreateAssignment: function(e) {}  - this method sends ajax request with the parameters from the filled form.&lt;br /&gt;
&lt;br /&gt;
      handleGetCourses: function() {}  - this method is triggered when a course selection drop down is clicked. It sends a jQuery request and gets all the courses based on the instructor role &lt;br /&gt;
&lt;br /&gt;
      render: function(){}  - this method renders the form components&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor and check that creating a new assignment works as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that the assignment could be created successfully and all the entered options have been preserved&lt;br /&gt;
&lt;br /&gt;
== Editing Assignment ==&lt;br /&gt;
=== Current Implementation ===&lt;br /&gt;
Similar to New assignment creation page Edit page does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to edit the name of the assignment or change number of slots they have to click edit button. It will generate a server request and the new view is rendered (url is changed). After filling out all the details that changed, save link will again generate a server request which will make the database entry and again render a new view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin-right:2%;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic55.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin-left:2%;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic66.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
In the revised implementation, the main edit table will be dynamically updatable. Saving the details will make the database entry. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic77.png|center]]&lt;br /&gt;
&lt;br /&gt;
====Files to be changed====&lt;br /&gt;
*apps/views/tree_display/list.html.erb&lt;br /&gt;
*apps/views/assignments/edit.html.erb&lt;br /&gt;
*apps/views/assignments/edit/_general.html.erb&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
1. Log in as an instructor and check that editing an assignment works as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that an assignment could be successfully edited and all the existing functionality is preserved&amp;lt;br&amp;gt;&lt;br /&gt;
==References==&lt;br /&gt;
#[https://facebook.github.io/react/ ReactJS by Facebook Code]&lt;br /&gt;
#[https://www.airpair.com/reactjs/posts/reactjs-a-guide-for-rails-developers ReactJS for Ruby on Rails]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[http://wiki.expertiza.ncsu.edu/index.php/Main_Page Expertiza wiki]&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic88.png&amp;diff=106066</id>
		<title>File:FinalProj pic88.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic88.png&amp;diff=106066"/>
		<updated>2016-12-02T17:26:40Z</updated>

		<summary type="html">&lt;p&gt;Onam: uploaded a new version of &amp;amp;quot;File:FinalProj pic88.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=106065</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=106065"/>
		<updated>2016-12-02T17:25:19Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1691 Convert Assignment Creation Form to ReactJS =&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&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;
=== Dynamic Rendering ===&lt;br /&gt;
A client-side dynamic web page processes the web page using HTML scripting running in the browser as it loads. JavaScript and other scripting languages determine the way the HTML in the received page is parsed into the Document Object Model, or DOM, that represents the loaded web page. The same client-side techniques can then dynamically update or change the DOM in the same way.&lt;br /&gt;
&lt;br /&gt;
Shown below is an example of a dynamically rendered webpage. The user is able to enter values, which are reflected in the view immediately after submission, without any redirection or reloading of the webpage. You can also see the timer running on the page, which demonstrates the ability to dynamically update variable values inside the view.&lt;br /&gt;
&lt;br /&gt;
[[File:Giphy.gif|centre]]&lt;br /&gt;
&lt;br /&gt;
== Assignment Creation ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
The assignment creation view is currently implemented mostly in HTML and some data validations are done using JQuery. This implementation does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to create a new assignment, clicking the new assignment link will generate a server request and the new view is rendered (url is changed). After filling up all the details required for the assignment creation, save link will again generate a server request which will make the database entry and again render a new view. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin: 5px 5px 5px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic222.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin: 5px 5px 5px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic1.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
&lt;br /&gt;
In the revised implementation, clicking on the &amp;lt;i&amp;gt;New Assignment&amp;lt;/i&amp;gt; link generates a drop-down window, which contains the form for creating a new assignment. This form contains the same fields as the original form.&amp;lt;br/&amp;gt;&lt;br /&gt;
In addition, we have added data validations for two fields. The name of the assignment cannot be left blank, and the 'submission directory' field cannot be left blank or contain any special characters. If either of these conditions is violated, an error message is displayed to the user. Furthermore, these validations are done in the client-side itself, removing the need for a server request to validate the data.&lt;br /&gt;
Submitting the form will create a  database entry and close the form.&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic88.png|center]]&lt;br /&gt;
&lt;br /&gt;
====Files to be changed====&lt;br /&gt;
*apps/assets/javascripts/tree_display.jsx.erb&lt;br /&gt;
*apps/controllers/assignments_controller.rb&lt;br /&gt;
*apps/controllers/tree_display_controller.rb&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor and check that creating a new assignment works as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that the assignment could be created successfully and all the entered options have been preserved&lt;br /&gt;
&lt;br /&gt;
== Editing Assignment ==&lt;br /&gt;
=== Current Implementation ===&lt;br /&gt;
Similar to New assignment creation page Edit page does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to edit the name of the assignment or change number of slots they have to click edit button. It will generate a server request and the new view is rendered (url is changed). After filling out all the details that changed, save link will again generate a server request which will make the database entry and again render a new view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin-right:2%;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic55.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin-left:2%;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic66.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
In the revised implementation, the main edit table will be dynamically updatable. Saving the details will make the database entry. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic77.png|center]]&lt;br /&gt;
&lt;br /&gt;
====Files to be changed====&lt;br /&gt;
*apps/views/tree_display/list.html.erb&lt;br /&gt;
*apps/views/assignments/edit.html.erb&lt;br /&gt;
*apps/views/assignments/edit/_general.html.erb&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
1. Log in as an instructor and check that editing an assignment works as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that an assignment could be successfully edited and all the existing functionality is preserved&amp;lt;br&amp;gt;&lt;br /&gt;
==References==&lt;br /&gt;
#[https://facebook.github.io/react/ ReactJS by Facebook Code]&lt;br /&gt;
#[https://www.airpair.com/reactjs/posts/reactjs-a-guide-for-rails-developers ReactJS for Ruby on Rails]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[http://wiki.expertiza.ncsu.edu/index.php/Main_Page Expertiza wiki]&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic88.png&amp;diff=106063</id>
		<title>File:FinalProj pic88.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic88.png&amp;diff=106063"/>
		<updated>2016-12-02T17:21:43Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=106044</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=106044"/>
		<updated>2016-12-02T16:47:57Z</updated>

		<summary type="html">&lt;p&gt;Onam: /* Files to be changed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1691 Convert Assignment Creation Form to ReactJS =&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&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;
=== Dynamic Rendering ===&lt;br /&gt;
A client-side dynamic web page processes the web page using HTML scripting running in the browser as it loads. JavaScript and other scripting languages determine the way the HTML in the received page is parsed into the Document Object Model, or DOM, that represents the loaded web page. The same client-side techniques can then dynamically update or change the DOM in the same way.&lt;br /&gt;
&lt;br /&gt;
Shown below is an example of a dynamically rendered webpage. The user is able to enter values, which are reflected in the view immediately after submission, without any redirection or reloading of the webpage. You can also see the timer running on the page, which demonstrates the ability to dynamically update variable values inside the view.&lt;br /&gt;
&lt;br /&gt;
[[File:Giphy.gif|centre]]&lt;br /&gt;
&lt;br /&gt;
== Assignment Creation ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
The assignment creation view is currently implemented mostly in HTML and some data validations are done using JQuery. This implementation does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to create a new assignment, clicking the new assignment link will generate a server request and the new view is rendered (url is changed). After filling up all the details required for the assignment creation, save link will again generate a server request which will make the database entry and again render a new view. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin: 5px 5px 5px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic222.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin: 5px 5px 5px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic1.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
&lt;br /&gt;
In the revised implementation, clicking on the &amp;lt;i&amp;gt;New Assignment&amp;lt;/i&amp;gt; link will generate a popup window. This window will be generated in the same view (The URL remains unchanged) and will contain the same fields and options as the original form. Saving the details will make the database entry and close the popup window. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic44.png|center]]&lt;br /&gt;
&lt;br /&gt;
====Files to be changed====&lt;br /&gt;
*apps/assets/javascripts/tree_display.jsx.erb&lt;br /&gt;
*apps/controllers/assignments_controller.rb&lt;br /&gt;
*apps/controllers/tree_display_controller.rb&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
&lt;br /&gt;
1. Log in as an instructor and check that creating a new assignment works as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that the assignment could be created successfully and all the entered options have been preserved&lt;br /&gt;
&lt;br /&gt;
== Editing Assignment ==&lt;br /&gt;
=== Current Implementation ===&lt;br /&gt;
Similar to New assignment creation page Edit page does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to edit the name of the assignment or change number of slots they have to click edit button. It will generate a server request and the new view is rendered (url is changed). After filling out all the details that changed, save link will again generate a server request which will make the database entry and again render a new view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;float:left;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin-right:2%;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic55.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;margin-left:2%;&amp;quot;&amp;gt;&lt;br /&gt;
[[image:FinalProj pic66.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
In the revised implementation, the main edit table will be dynamically updatable. Saving the details will make the database entry. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic77.png|center]]&lt;br /&gt;
&lt;br /&gt;
====Files to be changed====&lt;br /&gt;
*apps/views/tree_display/list.html.erb&lt;br /&gt;
*apps/views/assignments/edit.html.erb&lt;br /&gt;
*apps/views/assignments/edit/_general.html.erb&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
1. Log in as an instructor and check that editing an assignment works as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that an assignment could be successfully edited and all the existing functionality is preserved&amp;lt;br&amp;gt;&lt;br /&gt;
==References==&lt;br /&gt;
#[https://facebook.github.io/react/ ReactJS by Facebook Code]&lt;br /&gt;
#[https://www.airpair.com/reactjs/posts/reactjs-a-guide-for-rails-developers ReactJS for Ruby on Rails]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[http://wiki.expertiza.ncsu.edu/index.php/Main_Page Expertiza wiki]&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105617</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105617"/>
		<updated>2016-11-14T19:17:35Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1691 Convert Assignment Creation Form to ReactJS =&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&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;
&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;
=== Dynamic Rendering ===&lt;br /&gt;
A client-side dynamic web page processes the web page using HTML scripting running in the browser as it loads. JavaScript and other scripting languages determine the way the HTML in the received page is parsed into the Document Object Model, or DOM, that represents the loaded web page. The same client-side techniques can then dynamically update or change the DOM in the same way.&lt;br /&gt;
&lt;br /&gt;
Shown below is an example of a dynamically rendered webpage. The user is able to enter values, which are reflected in the view immediately after submission, without any redirection or reloading of the webpage. You can also see the timer running on the page, which demonstrates the ability to dynamically update variable values inside the view.&lt;br /&gt;
&lt;br /&gt;
[[File:Giphy.gif|centre]]&lt;br /&gt;
&lt;br /&gt;
== Assignment Creation ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
The assignment creation view is currently implemented mostly in HTML and some data validations are done using JQuery. This implementation does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to create a new assignment, clicking the new assignment link will generate a server request and the new view is rendered (url is changed). After filling up all the details required for the assignment creation, save link will again generate a server request which will make the database entry and again render a new view. &lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic222.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic1.png]]&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
&lt;br /&gt;
In the revised implementation, clicking on the &amp;lt;i&amp;gt;New Assignment&amp;lt;/i&amp;gt; link will generate a popup window. This window will be generated in the same view (The URL remains unchanged) and will contain the same fields and options as the original form. Saving the details will make the database entry and close the popup window. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic44.png]]&lt;br /&gt;
&lt;br /&gt;
====Files to be changed====&lt;br /&gt;
*apps\views\assignments\new.html.erb&lt;br /&gt;
*apps\views\assignments\edit.html.erb&lt;br /&gt;
*apps/views/assignments/edit/_general.html.erb&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
1. Log in as an instructor and check that new converted page is rendering as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that an assignment could be successfully created and all the existing functionality is preserved&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Editing Assignment ==&lt;br /&gt;
=== Current Implementation ===&lt;br /&gt;
Similar to New assignment creation page Edit page does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to edit the name of the assignment or change number of slots they have to click edit button. It will generate a server request and the new view is rendered (url is changed). After filling out all the details that changed, save link will again generate a server request which will make the database entry and again render a new view.&lt;br /&gt;
[[image:FinalProj pic55.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic66.png]]&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
In the revised implementation, the main edit table will be dynamically updatable. Saving the details will make the database entry. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic77.png]]&lt;br /&gt;
&lt;br /&gt;
====Files to be changed====&lt;br /&gt;
*apps\views\assignments\new.html.erb&lt;br /&gt;
*apps\views\assignments\edit.html.erb&lt;br /&gt;
*apps/views/assignments/edit/_general.html.erb&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
1. Log in as an instructor and check that editing an assignment works as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that an assignment could be successfully edited and all the existing functionality is preserved&amp;lt;br&amp;gt;&lt;br /&gt;
==References==&lt;br /&gt;
*https://facebook.github.io/react/&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic77.png&amp;diff=105616</id>
		<title>File:FinalProj pic77.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic77.png&amp;diff=105616"/>
		<updated>2016-11-14T19:16:36Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic66.png&amp;diff=105615</id>
		<title>File:FinalProj pic66.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic66.png&amp;diff=105615"/>
		<updated>2016-11-14T19:11:47Z</updated>

		<summary type="html">&lt;p&gt;Onam: uploaded a new version of &amp;amp;quot;File:FinalProj pic66.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic55.png&amp;diff=105614</id>
		<title>File:FinalProj pic55.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic55.png&amp;diff=105614"/>
		<updated>2016-11-14T19:11:31Z</updated>

		<summary type="html">&lt;p&gt;Onam: uploaded a new version of &amp;amp;quot;File:FinalProj pic55.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105613</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105613"/>
		<updated>2016-11-14T19:10:25Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1691 Convert Assignment Creation Form to ReactJS =&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&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;
&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;
=== Dynamic Rendering ===&lt;br /&gt;
A client-side dynamic web page processes the web page using HTML scripting running in the browser as it loads. JavaScript and other scripting languages determine the way the HTML in the received page is parsed into the Document Object Model, or DOM, that represents the loaded web page. The same client-side techniques can then dynamically update or change the DOM in the same way.&lt;br /&gt;
&lt;br /&gt;
Shown below is an example of a dynamically rendered webpage. The user is able to enter values, which are reflected in the view immediately after submission, without any redirection or reloading of the webpage. You can also see the timer running on the page, which demonstrates the ability to dynamically update variable values inside the view.&lt;br /&gt;
&lt;br /&gt;
[[File:Giphy.gif|centre]]&lt;br /&gt;
&lt;br /&gt;
== Assignment Creation ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
The assignment creation view is currently implemented mostly in HTML and some data validations are done using JQuery. This implementation does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to create a new assignment, clicking the new assignment link will generate a server request and the new view is rendered (url is changed). After filling up all the details required for the assignment creation, save link will again generate a server request which will make the database entry and again render a new view. &lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic222.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic1.png]]&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
&lt;br /&gt;
In the revised implementation, clicking on the &amp;lt;i&amp;gt;New Assignment&amp;lt;/i&amp;gt; link will generate a popup window. This window will be generated in the same view (The URL remains unchanged) and will contain the same fields and options as the original form. Saving the details will make the database entry and close the popup window. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic44.png]]&lt;br /&gt;
&lt;br /&gt;
====Files to be changed====&lt;br /&gt;
*apps\views\assignments\new.html.erb&lt;br /&gt;
*apps\views\assignments\edit.html.erb&lt;br /&gt;
*apps/views/assignments/edit/_general.html.erb&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
1. Log in as an instructor and check that new converted page is rendering as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that an assignment could be successfully created and all the existing functionality is preserved&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Editing Assignment ==&lt;br /&gt;
=== Current Implementation ===&lt;br /&gt;
Similar to New assignment creation page Edit page does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to edit the name of the assignment or change number of slots they have to click edit button. It will generate a server request and the new view is rendered (url is changed). After filling out all the details that changed, save link will again generate a server request which will make the database entry and again render a new view.&lt;br /&gt;
[[image:FinalProj pic55.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic66.png]]&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
In the revised implementation, the main edit table will be dynamically updatable. Saving the details will make the database entry. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&lt;br /&gt;
&lt;br /&gt;
====Files to be changed====&lt;br /&gt;
*apps\views\assignments\new.html.erb&lt;br /&gt;
*apps\views\assignments\edit.html.erb&lt;br /&gt;
*apps/views/assignments/edit/_general.html.erb&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
1. Log in as an instructor and check that editing an assignment works as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that an assignment could be successfully edited and all the existing functionality is preserved&amp;lt;br&amp;gt;&lt;br /&gt;
==References==&lt;br /&gt;
*https://facebook.github.io/react/&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105612</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105612"/>
		<updated>2016-11-14T19:09:22Z</updated>

		<summary type="html">&lt;p&gt;Onam: /* Proposed Solution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1691 Convert Assignment Creation Form to ReactJS =&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&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;
&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;
=== Dynamic Rendering ===&lt;br /&gt;
A client-side dynamic web page processes the web page using HTML scripting running in the browser as it loads. JavaScript and other scripting languages determine the way the HTML in the received page is parsed into the Document Object Model, or DOM, that represents the loaded web page. The same client-side techniques can then dynamically update or change the DOM in the same way.&lt;br /&gt;
&lt;br /&gt;
Shown below is an example of a dynamically rendered webpage. The user is able to enter values, which are reflected in the view immediately after submission, without any redirection or reloading of the webpage. You can also see the timer running on the page, which demonstrates the ability to dynamically update variable values inside the view.&lt;br /&gt;
&lt;br /&gt;
[[File:Giphy.gif|centre]]&lt;br /&gt;
&lt;br /&gt;
== Assignment Creation ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
The assignment creation view is currently implemented mostly in HTML and some data validations are done using JQuery. This implementation does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to create a new assignment, clicking the new assignment link will generate a server request and the new view is rendered (url is changed). After filling up all the details required for the assignment creation, save link will again generate a server request which will make the database entry and again render a new view. &lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic222.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic1.png]]&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
&lt;br /&gt;
In the revised implementation, clicking on the &amp;lt;i&amp;gt;New Assignment&amp;lt;/i&amp;gt; link will generate a popup window. This window will be generated in the same view (The URL remains unchanged) and will contain the same fields and options as the original form. Saving the details will make the database entry and close the popup window. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic44.png]]&lt;br /&gt;
&lt;br /&gt;
====Files to be changed====&lt;br /&gt;
*apps\views\assignments\new.html.erb&lt;br /&gt;
*apps\views\assignments\edit.html.erb&lt;br /&gt;
*apps/views/assignments/edit/_general.html.erb&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
1. Log in as an instructor and check that new converted page is rendering as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that an assignment could be successfully created and all the existing functionality is preserved&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Editing Assignment ==&lt;br /&gt;
=== Current Implementation ===&lt;br /&gt;
Similar to New assignment creation page Edit page does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to edit the name of the assignment or change number of slots they have to click edit button. It will generate a server request and the new view is rendered (url is changed). After filling out all the details that changed, save link will again generate a server request which will make the database entry and again render a new view.&lt;br /&gt;
[[image:FinalProj pic55.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic66.png]]&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
In the revised implementation, the main edit table will be dynamically updatable. Saving the details will make the database entry. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*https://facebook.github.io/react/&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105611</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105611"/>
		<updated>2016-11-14T19:06:57Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1691 Convert Assignment Creation Form to ReactJS =&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&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;
&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;
=== Dynamic Rendering ===&lt;br /&gt;
A client-side dynamic web page processes the web page using HTML scripting running in the browser as it loads. JavaScript and other scripting languages determine the way the HTML in the received page is parsed into the Document Object Model, or DOM, that represents the loaded web page. The same client-side techniques can then dynamically update or change the DOM in the same way.&lt;br /&gt;
&lt;br /&gt;
Shown below is an example of a dynamically rendered webpage. The user is able to enter values, which are reflected in the view immediately after submission, without any redirection or reloading of the webpage. You can also see the timer running on the page, which demonstrates the ability to dynamically update variable values inside the view.&lt;br /&gt;
&lt;br /&gt;
[[File:Giphy.gif|centre]]&lt;br /&gt;
&lt;br /&gt;
== Assignment Creation ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
The assignment creation view is currently implemented mostly in HTML and some data validations are done using JQuery. This implementation does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to create a new assignment, clicking the new assignment link will generate a server request and the new view is rendered (url is changed). After filling up all the details required for the assignment creation, save link will again generate a server request which will make the database entry and again render a new view. &lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic222.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic1.png]]&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
&lt;br /&gt;
In the revised implementation, clicking on the &amp;lt;i&amp;gt;New Assignment&amp;lt;/i&amp;gt; link will generate a popup window. This window will be generated in the same view (The URL remains unchanged) and will contain the same fields and options as the original form. Saving the details will make the database entry and close the popup window. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic44.png]]&lt;br /&gt;
&lt;br /&gt;
====Files to be changed====&lt;br /&gt;
*apps\views\assignments\new.html.erb&lt;br /&gt;
*apps\views\assignments\edit.html.erb&lt;br /&gt;
*apps/views/assignments/edit/_general.html.erb&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
1. Log in as an instructor and check that new converted page is rendering as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that an assignment could be successfully created and all the existing functionality is preserved&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Editing Assignment ==&lt;br /&gt;
=== Current Implementation ===&lt;br /&gt;
Similar to New assignment creation page Edit page does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to edit the name of the assignment or change number of slots they have to click edit button. It will generate a server request and the new view is rendered (url is changed). After filling out all the details that changed, save link will again generate a server request which will make the database entry and again render a new view.&lt;br /&gt;
[[image:FinalProj pic55.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic66.png]]&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
==References==&lt;br /&gt;
*https://facebook.github.io/react/&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic55.png&amp;diff=105610</id>
		<title>File:FinalProj pic55.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic55.png&amp;diff=105610"/>
		<updated>2016-11-14T19:06:51Z</updated>

		<summary type="html">&lt;p&gt;Onam: uploaded a new version of &amp;amp;quot;File:FinalProj pic55.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic55.png&amp;diff=105609</id>
		<title>File:FinalProj pic55.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic55.png&amp;diff=105609"/>
		<updated>2016-11-14T19:06:10Z</updated>

		<summary type="html">&lt;p&gt;Onam: uploaded a new version of &amp;amp;quot;File:FinalProj pic55.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic66.png&amp;diff=105608</id>
		<title>File:FinalProj pic66.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic66.png&amp;diff=105608"/>
		<updated>2016-11-14T19:05:52Z</updated>

		<summary type="html">&lt;p&gt;Onam: uploaded a new version of &amp;amp;quot;File:FinalProj pic66.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105607</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105607"/>
		<updated>2016-11-14T19:04:08Z</updated>

		<summary type="html">&lt;p&gt;Onam: /* Current Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1691 Convert Assignment Creation Form to ReactJS =&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&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;
&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;
=== Dynamic Rendering ===&lt;br /&gt;
A client-side dynamic web page processes the web page using HTML scripting running in the browser as it loads. JavaScript and other scripting languages determine the way the HTML in the received page is parsed into the Document Object Model, or DOM, that represents the loaded web page. The same client-side techniques can then dynamically update or change the DOM in the same way.&lt;br /&gt;
&lt;br /&gt;
Shown below is an example of a dynamically rendered webpage. The user is able to enter values, which are reflected in the view immediately after submission, without any redirection or reloading of the webpage. You can also see the timer running on the page, which demonstrates the ability to dynamically update variable values inside the view.&lt;br /&gt;
&lt;br /&gt;
[[File:Giphy.gif|centre]]&lt;br /&gt;
&lt;br /&gt;
== Assignment Creation ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
The assignment creation view is currently implemented mostly in HTML and some data validations are done using JQuery. This implementation does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to create a new assignment, clicking the new assignment link will generate a server request and the new view is rendered (url is changed). After filling up all the details required for the assignment creation, save link will again generate a server request which will make the database entry and again render a new view. &lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic222.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic1.png]]&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
&lt;br /&gt;
In the revised implementation, clicking on the &amp;lt;i&amp;gt;New Assignment&amp;lt;/i&amp;gt; link will generate a popup window. This window will be generated in the same view (The URL remains unchanged) and will contain the same fields and options as the original form. Saving the details will make the database entry and close the popup window. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic44.png]]&lt;br /&gt;
&lt;br /&gt;
====Files to be changed====&lt;br /&gt;
*apps\views\assignments\new.html.erb&lt;br /&gt;
*apps\views\assignments\edit.html.erb&lt;br /&gt;
*apps/views/assignments/edit/_general.html.erb&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
1. Log in as an instructor and check that new converted page is rendering as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that an assignment could be successfully created and all the existing functionality is preserved&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Editing Assignment ==&lt;br /&gt;
=== Current Implementation ===&lt;br /&gt;
Similar to New assignment creation page Edit page does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to edit the name of the assignment or change number of slots they have to click edit button. It will generate a server request and the new view is rendered (url is changed). After filling out all the details that changed, save link will again generate a server request which will make the database entry and again render a new view.&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
==References==&lt;br /&gt;
*https://facebook.github.io/react/&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic66.png&amp;diff=105606</id>
		<title>File:FinalProj pic66.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic66.png&amp;diff=105606"/>
		<updated>2016-11-14T19:01:20Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic55.png&amp;diff=105605</id>
		<title>File:FinalProj pic55.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic55.png&amp;diff=105605"/>
		<updated>2016-11-14T19:01:11Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105604</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105604"/>
		<updated>2016-11-14T19:00:12Z</updated>

		<summary type="html">&lt;p&gt;Onam: /* Current Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1691 Convert Assignment Creation Form to ReactJS =&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&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;
&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;
=== Dynamic Rendering ===&lt;br /&gt;
A client-side dynamic web page processes the web page using HTML scripting running in the browser as it loads. JavaScript and other scripting languages determine the way the HTML in the received page is parsed into the Document Object Model, or DOM, that represents the loaded web page. The same client-side techniques can then dynamically update or change the DOM in the same way.&lt;br /&gt;
&lt;br /&gt;
Shown below is an example of a dynamically rendered webpage. The user is able to enter values, which are reflected in the view immediately after submission, without any redirection or reloading of the webpage. You can also see the timer running on the page, which demonstrates the ability to dynamically update variable values inside the view.&lt;br /&gt;
&lt;br /&gt;
[[File:Giphy.gif|centre]]&lt;br /&gt;
&lt;br /&gt;
== Assignment Creation ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
The assignment creation view is currently implemented mostly in HTML and some data validations are done using JQuery. This implementation does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to create a new assignment, clicking the new assignment link will generate a server request and the new view is rendered (url is changed). After filling up all the details required for the assignment creation, save link will again generate a server request which will make the database entry and again render a new view. &lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic222.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic1.png]]&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
&lt;br /&gt;
In the revised implementation, clicking on the &amp;lt;i&amp;gt;New Assignment&amp;lt;/i&amp;gt; link will generate a popup window. This window will be generated in the same view (The URL remains unchanged) and will contain the same fields and options as the original form. Saving the details will make the database entry and close the popup window. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic44.png]]&lt;br /&gt;
&lt;br /&gt;
====Files to be changed====&lt;br /&gt;
*apps\views\assignments\new.html.erb&lt;br /&gt;
*apps\views\assignments\edit.html.erb&lt;br /&gt;
*apps/views/assignments/edit/_general.html.erb&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
1. Log in as an instructor and check that new converted page is rendering as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that an assignment could be successfully created and all the existing functionality is preserved&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Editing Assignment ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
==References==&lt;br /&gt;
*https://facebook.github.io/react/&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic222.png&amp;diff=105603</id>
		<title>File:FinalProj pic222.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic222.png&amp;diff=105603"/>
		<updated>2016-11-14T18:59:36Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105577</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105577"/>
		<updated>2016-11-14T04:40:30Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1691 Convert Assignment Creation Form to ReactJS =&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&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;
&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;
=== Dynamic Rendering ===&lt;br /&gt;
A client-side dynamic web page processes the web page using HTML scripting running in the browser as it loads. JavaScript and other scripting languages determine the way the HTML in the received page is parsed into the Document Object Model, or DOM, that represents the loaded web page. The same client-side techniques can then dynamically update or change the DOM in the same way.&lt;br /&gt;
&lt;br /&gt;
Shown below is an example of a dynamically rendered webpage. The user is able to enter values, which are reflected in the view immediately after submission, without any redirection or reloading of the webpage. You can also see the timer running on the page, which demonstrates the ability to dynamically update variable values inside the view.&lt;br /&gt;
&lt;br /&gt;
[[File:Giphy.gif|centre]]&lt;br /&gt;
&lt;br /&gt;
== Assignment Creation ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
The assignment creation view is currently implemented mostly in HTML and some data validations are done using JQuery. This implementation does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to create a new assignment, clicking the new assignment link will generate a server request and the new view is rendered (url is changed). After filling up all the details required for the assignment creation, save link will again generate a server request which will make the database entry and again render a new view. &lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic22.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic1.png]]&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
&lt;br /&gt;
In the revised implementation, clicking on the &amp;lt;i&amp;gt;New Assignment&amp;lt;/i&amp;gt; link will generate a popup window. This window will be generated in the same view (The URL remains unchanged) and will contain the same fields and options as the original form. Saving the details will make the database entry and close the popup window. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic44.png]]&lt;br /&gt;
&lt;br /&gt;
====Files to be changed====&lt;br /&gt;
*apps\views\assignments\new.html.erb&lt;br /&gt;
*apps\views\assignments\edit.html.erb&lt;br /&gt;
*apps/views/assignments/edit/_general.html.erb&lt;br /&gt;
&lt;br /&gt;
====Testing plan====&lt;br /&gt;
1. Log in as an instructor and check that new converted page is rendering as expected&amp;lt;br&amp;gt;&lt;br /&gt;
2. Log in as an instructor and check that an assignment could be successfully created and all the existing functionality is preserved&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Editing Assignment ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
==References==&lt;br /&gt;
*https://facebook.github.io/react/&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105575</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105575"/>
		<updated>2016-11-14T04:35:52Z</updated>

		<summary type="html">&lt;p&gt;Onam: Undo revision 105574 by Onam (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1691 Convert Assignment Creation Form to ReactJS =&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&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;
&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;
=== Dynamic Rendering ===&lt;br /&gt;
A client-side dynamic web page processes the web page using HTML scripting running in the browser as it loads. JavaScript and other scripting languages determine the way the HTML in the received page is parsed into the Document Object Model, or DOM, that represents the loaded web page. The same client-side techniques can then dynamically update or change the DOM in the same way.&lt;br /&gt;
&lt;br /&gt;
Shown below is an example of a dynamically rendered webpage. The user is able to enter values, which are reflected in the view immediately after submission, without any redirection or reloading of the webpage. You can also see the timer running on the page, which demonstrates the ability to dynamically update variable values inside the view.&lt;br /&gt;
&lt;br /&gt;
[[File:Giphy.gif|centre]]&lt;br /&gt;
&lt;br /&gt;
== Assignment Creation ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
The assignment creation view is currently implemented mostly in HTML and some data validations are done using JQuery. This implementation does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to create a new assignment, clicking the new assignment link will generate a server request and the new view is rendered (url is changed). After filling up all the details required for the assignment creation, save link will again generate a server request which will make the database entry and again render a new view. &lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic22.png]][[image:FinalProj pic1.png]]&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
&lt;br /&gt;
In the revised implementation, clicking on the &amp;lt;i&amp;gt;New Assignment&amp;lt;/i&amp;gt; link will generate a popup window. This window will be generated in the same view (The URL remains unchanged) and will contain the same fields and options as the original form. Saving the details will make the database entry and close the popup window. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic44.png]]&lt;br /&gt;
&lt;br /&gt;
====Files to be changed====&lt;br /&gt;
*apps\views\assignments\new.html.erb&lt;br /&gt;
*apps\views\assignments\edit.html.erb&lt;br /&gt;
*apps/views/assignments/edit/_general.html.erb&lt;br /&gt;
&lt;br /&gt;
== Editing Assignment ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
==References==&lt;br /&gt;
*https://facebook.github.io/react/&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105574</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105574"/>
		<updated>2016-11-14T04:35:21Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1691 Convert Assignment Creation Form to ReactJS =&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&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;
&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;
=== Dynamic Rendering ===&lt;br /&gt;
A client-side dynamic web page processes the web page using HTML scripting running in the browser as it loads. JavaScript and other scripting languages determine the way the HTML in the received page is parsed into the Document Object Model, or DOM, that represents the loaded web page. The same client-side techniques can then dynamically update or change the DOM in the same way.&lt;br /&gt;
&lt;br /&gt;
Shown below is an example of a dynamically rendered webpage. The user is able to enter values, which are reflected in the view immediately after submission, without any redirection or reloading of the webpage. You can also see the timer running on the page, which demonstrates the ability to dynamically update variable values inside the view.&lt;br /&gt;
&lt;br /&gt;
[[File:Giphy.gif|centre]]&lt;br /&gt;
&lt;br /&gt;
== Assignment Creation ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
The assignment creation view is currently implemented mostly in HTML and some data validations are done using JQuery. This implementation does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to create a new assignment, clicking the new assignment link will generate a server request and the new view is rendered (url is changed). After filling up all the details required for the assignment creation, save link will again generate a server request which will make the database entry and again render a new view. &lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic22.png]][[image:FinalProj pic1.png]]&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
&lt;br /&gt;
In the revised implementation, clicking on the &amp;lt;i&amp;gt;New Assignment&amp;lt;/i&amp;gt; link will generate a popup window. This window will be generated in the same view (The URL remains unchanged) and will contain the same fields and options as the original form. Saving the details will make the database entry and close the popup window. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic44.png]]&lt;br /&gt;
&lt;br /&gt;
====Files to be changed====&lt;br /&gt;
*apps\views\assignments\new.html.erb&lt;br /&gt;
*apps\views\assignments\edit.html.erb&lt;br /&gt;
*apps/views/assignments/edit/_general.html.erb&lt;br /&gt;
====Testing plan====&lt;br /&gt;
1. Log in as an instructor and check that new converted page is rendering as expected&lt;br /&gt;
2. Log in as an instructor and check that an assignment could be successfully created and all the existing functionality is preserved&lt;br /&gt;
&lt;br /&gt;
== Editing Assignment ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
==References==&lt;br /&gt;
*https://facebook.github.io/react/&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105481</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105481"/>
		<updated>2016-11-13T05:04:50Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1691 Convert Assignment Creation Form to ReactJS =&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&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;
&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;
=== Dynamic Rendering ===&lt;br /&gt;
A client-side dynamic web page processes the web page using HTML scripting running in the browser as it loads. JavaScript and other scripting languages determine the way the HTML in the received page is parsed into the Document Object Model, or DOM, that represents the loaded web page. The same client-side techniques can then dynamically update or change the DOM in the same way.&lt;br /&gt;
&lt;br /&gt;
Shown below is an example of a dynamically rendered webpage. The user is able to enter values, which are reflected in the view immediately after submission, without any redirection or reloading of the webpage. You can also see the timer running on the page, which demonstrates the ability to dynamically update variable values inside the view.&lt;br /&gt;
&lt;br /&gt;
[[File:Giphy.gif|centre]]&lt;br /&gt;
&lt;br /&gt;
== Assignment Creation ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
The assignment creation view is currently implemented mostly in HTML and some data validations are done using JQuery. This implementation does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to create a new assignment, clicking the new assignment link will generate a server request and the new view is rendered (url is changed). After filling up all the details required for the assignment creation, save link will again generate a server request which will make the database entry and again render a new view. &lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic22.png]][[image:FinalProj pic1.png]]&lt;br /&gt;
&lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
&lt;br /&gt;
In the revised implementation, clicking on the &amp;lt;i&amp;gt;New Assignment&amp;lt;/i&amp;gt; link will generate a popup window. This window will be generated in the same view (The URL remains unchanged) and will contain the same fields and options as the original form. Saving the details will make the database entry and close the popup window. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic44.png]]&lt;br /&gt;
&lt;br /&gt;
== Editing Assignment ==&lt;br /&gt;
=== Current Implementation === &lt;br /&gt;
=== Proposed Solution ===&lt;br /&gt;
==References==&lt;br /&gt;
*https://facebook.github.io/react/&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic44.png&amp;diff=105480</id>
		<title>File:FinalProj pic44.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic44.png&amp;diff=105480"/>
		<updated>2016-11-13T05:01:25Z</updated>

		<summary type="html">&lt;p&gt;Onam: uploaded a new version of &amp;amp;quot;File:FinalProj pic44.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105479</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105479"/>
		<updated>2016-11-13T05:00:25Z</updated>

		<summary type="html">&lt;p&gt;Onam: /* Proposed Solution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1691 Convert Assignment Creation Form to ReactJS =&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&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;
&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;
=== Dynamic Rendering ===&lt;br /&gt;
A client-side dynamic web page processes the web page using HTML scripting running in the browser as it loads. JavaScript and other scripting languages determine the way the HTML in the received page is parsed into the Document Object Model, or DOM, that represents the loaded web page. The same client-side techniques can then dynamically update or change the DOM in the same way.&lt;br /&gt;
&lt;br /&gt;
Shown below is an example of a dynamically rendered webpage. The user is able to enter values, which are reflected in the view immediately after submission, without any redirection or reloading of the webpage. You can also see the timer running on the page, which demonstrates the ability to dynamically update variable values inside the view.&lt;br /&gt;
&lt;br /&gt;
[[File:Giphy.gif|centre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Current Implementation == &lt;br /&gt;
The assignment creation view is currently implemented mostly in HTML and some data validations are done using JQuery. This implementation does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to create a new assignment, clicking the new assignment link will generate a server request and the new view is rendered (url is changed). After filling up all the details required for the assignment creation, save link will again generate a server request which will make the database entry and again render a new view. &lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic22.png]][[image:FinalProj pic1.png]]&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
In the revised implementation, clicking on the &amp;lt;i&amp;gt;New Assignment&amp;lt;/i&amp;gt; link will generate a popup window. This window will be generated in the same view (The URL remains unchanged) and will contain the same fields and options as the original form. Saving the details will make the database entry and close the popup window. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic44.png]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*https://facebook.github.io/react/&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105478</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=105478"/>
		<updated>2016-11-13T04:59:41Z</updated>

		<summary type="html">&lt;p&gt;Onam: /* Current Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1691 Convert Assignment Creation Form to ReactJS =&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&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;
&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;
=== Dynamic Rendering ===&lt;br /&gt;
A client-side dynamic web page processes the web page using HTML scripting running in the browser as it loads. JavaScript and other scripting languages determine the way the HTML in the received page is parsed into the Document Object Model, or DOM, that represents the loaded web page. The same client-side techniques can then dynamically update or change the DOM in the same way.&lt;br /&gt;
&lt;br /&gt;
Shown below is an example of a dynamically rendered webpage. The user is able to enter values, which are reflected in the view immediately after submission, without any redirection or reloading of the webpage. You can also see the timer running on the page, which demonstrates the ability to dynamically update variable values inside the view.&lt;br /&gt;
&lt;br /&gt;
[[File:Giphy.gif|centre]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Current Implementation == &lt;br /&gt;
The assignment creation view is currently implemented mostly in HTML and some data validations are done using JQuery. This implementation does not support dynamic view rendering which is essential to improving the user interface and contributing to the fluidity of the overall experience. For example, If the user wants to create a new assignment, clicking the new assignment link will generate a server request and the new view is rendered (url is changed). After filling up all the details required for the assignment creation, save link will again generate a server request which will make the database entry and again render a new view. &lt;br /&gt;
&lt;br /&gt;
[[image:FinalProj pic22.png]][[image:FinalProj pic1.png]]&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
In the revised implementation, clicking on the &amp;lt;i&amp;gt;New Assignment&amp;lt;/i&amp;gt; link will generate a popup window. This window will be generated in the same view (The URL remains unchanged) and will contain the same fields and options as the original form. Saving the details will make the database entry and close the popup window. Except for the database update, all the processing is done on the client side itself, leading to a decrease in the number of server requests.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*https://facebook.github.io/react/&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic44.png&amp;diff=105477</id>
		<title>File:FinalProj pic44.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic44.png&amp;diff=105477"/>
		<updated>2016-11-13T04:58:32Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic22.png&amp;diff=105476</id>
		<title>File:FinalProj pic22.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic22.png&amp;diff=105476"/>
		<updated>2016-11-13T04:58:23Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic4.png&amp;diff=105475</id>
		<title>File:FinalProj pic4.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic4.png&amp;diff=105475"/>
		<updated>2016-11-13T04:55:20Z</updated>

		<summary type="html">&lt;p&gt;Onam: uploaded a new version of &amp;amp;quot;File:FinalProj pic4.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic2.png&amp;diff=105474</id>
		<title>File:FinalProj pic2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic2.png&amp;diff=105474"/>
		<updated>2016-11-13T04:55:04Z</updated>

		<summary type="html">&lt;p&gt;Onam: uploaded a new version of &amp;amp;quot;File:FinalProj pic2.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic2.png&amp;diff=105473</id>
		<title>File:FinalProj pic2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic2.png&amp;diff=105473"/>
		<updated>2016-11-13T04:54:46Z</updated>

		<summary type="html">&lt;p&gt;Onam: uploaded a new version of &amp;amp;quot;File:FinalProj pic2.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic4.png&amp;diff=105472</id>
		<title>File:FinalProj pic4.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic4.png&amp;diff=105472"/>
		<updated>2016-11-13T04:46:46Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic2.png&amp;diff=105471</id>
		<title>File:FinalProj pic2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic2.png&amp;diff=105471"/>
		<updated>2016-11-13T04:46:32Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=104390</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=104390"/>
		<updated>2016-11-04T18:33:51Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== E1691 Convert Assignment Creation Form to ReactJS ==&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&gt;
===React JS===&lt;br /&gt;
ReactJS is an open source JavaScript library&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Current implementation=== &lt;br /&gt;
The assignment creating page view is as follows.&lt;br /&gt;
[[File:FinalProj pic1.png]]&lt;br /&gt;
&lt;br /&gt;
Currently it is implemented fully in HTML which hard to read and it is not very dynamic.&lt;br /&gt;
&lt;br /&gt;
===Proposed solution=== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*https://facebook.github.io/react/&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=104388</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=104388"/>
		<updated>2016-11-04T18:32:35Z</updated>

		<summary type="html">&lt;p&gt;Onam: /* Current implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== E1691 Convert Assignment Creation Form to ReactJS ==&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&gt;
===React JS===&lt;br /&gt;
ReactJS is an open source JavaScript library&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Current implementation=== &lt;br /&gt;
The assignment creating page view is as follows.&lt;br /&gt;
[[File:FinalProj pic1.png]]&lt;br /&gt;
&lt;br /&gt;
Currently it is implemented fully in HTML which hard to read and it is not very dynamic.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*https://facebook.github.io/react/&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=104360</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=104360"/>
		<updated>2016-11-04T17:50:15Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== E1691 Convert Assignment Creation Form to ReactJS ==&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&gt;
===React JS===&lt;br /&gt;
ReactJS is an open source JavaScript library&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Current implementation=== &lt;br /&gt;
The assignment creating page view is as follows.&lt;br /&gt;
[[File:FinalProj pic1.png]]&lt;br /&gt;
&lt;br /&gt;
Currently it is implemented fully in HTML.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*https://facebook.github.io/react/&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic1.png&amp;diff=104357</id>
		<title>File:FinalProj pic1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProj_pic1.png&amp;diff=104357"/>
		<updated>2016-11-04T17:46:21Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=104353</id>
		<title>CSC/ECE 517 Fall 2016 E1691 ConvertAssignmentCreationFormtoReactJS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1691_ConvertAssignmentCreationFormtoReactJS&amp;diff=104353"/>
		<updated>2016-11-04T17:39:43Z</updated>

		<summary type="html">&lt;p&gt;Onam: Created page with &amp;quot;== E1691 Convert Assignment Creation Form to ReactJS ==  This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to Rea...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== E1691 Convert Assignment Creation Form to ReactJS ==&lt;br /&gt;
&lt;br /&gt;
This a page to describe a final project for ECE517. In this project we will be converting Assignment creation form to ReactJS. &lt;br /&gt;
&lt;br /&gt;
===Current implementation=== &lt;br /&gt;
&lt;br /&gt;
===ReactJS introduction===&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1656._Improve_imports/screenshots&amp;diff=104255</id>
		<title>CSC/ECE 517 Fall 2016/E1656. Improve imports/screenshots</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1656._Improve_imports/screenshots&amp;diff=104255"/>
		<updated>2016-11-03T22:22:05Z</updated>

		<summary type="html">&lt;p&gt;Onam: /* Test Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Ordering of Imported Fields (Issue 110)==&lt;br /&gt;
====Test Example====&lt;br /&gt;
&lt;br /&gt;
1. Log in as instructor6&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:OSS1656 picture1.png]]&lt;br /&gt;
&lt;br /&gt;
2. Select Manage Assignments then create teams&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:OSS1656 picture2.png]]&lt;br /&gt;
&lt;br /&gt;
3. Create Test team and add two users as shown&lt;br /&gt;
&lt;br /&gt;
[[File:OSS1656 picture3.png]]&lt;br /&gt;
&lt;br /&gt;
4. Create an import file import_team with the Test team and three users, make sure that order of columns is not as default. Team member 3 is first and Team name is last.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:OSS1656 picture4.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5.Set up import page, set the drop down for columns to match what csv and pick the right file to import.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:OSS1656 picture5.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6. Check that the third user was properly added.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:OSS1656 picture6.png]]&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:OSS1656_picture6.png&amp;diff=104254</id>
		<title>File:OSS1656 picture6.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:OSS1656_picture6.png&amp;diff=104254"/>
		<updated>2016-11-03T22:18:55Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:OSS1656_picture5.png&amp;diff=104253</id>
		<title>File:OSS1656 picture5.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:OSS1656_picture5.png&amp;diff=104253"/>
		<updated>2016-11-03T22:18:48Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:OSS1656_picture4.png&amp;diff=104252</id>
		<title>File:OSS1656 picture4.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:OSS1656_picture4.png&amp;diff=104252"/>
		<updated>2016-11-03T22:18:39Z</updated>

		<summary type="html">&lt;p&gt;Onam: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Onam</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:OSS1656_picture3.png&amp;diff=104251</id>
		<title>File:OSS1656 picture3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:OSS1656_picture3.png&amp;diff=104251"/>
		<updated>2016-11-03T22:18:30Z</updated>

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