<?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=Sadhika2</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=Sadhika2"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Sadhika2"/>
	<updated>2026-06-12T10:28:06Z</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_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129479</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129479"/>
		<updated>2019-11-16T04:20:54Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Design - The Gruby Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
===Existing Solution===&lt;br /&gt;
Conference assignments are the type of assignments open for all the people. We can assign participants to assignments they are participating in, and they can submit their work for it. In today's scenario, participants share google doc, authors and co-authors name with instructor. Then instructor has to add those authors and co-authors as users in expertiza, assign them to the particular assignment.&lt;br /&gt;
&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
This project concentrates on the use of expertiza assignments as conferences/journals. Using these assignments, people can submit their papers and get reviews for the same.&lt;br /&gt;
The focus of this project will be to enable a particular conference participants to create an expertiza account and teams for conference submission by minimizing the inputs required from the application admin/instructor.&lt;br /&gt;
&lt;br /&gt;
==Task to be Accomplished==&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Conference Assignments&lt;br /&gt;
* Author should be able to create account by clicking on the link.   If author doesnt have an account&lt;br /&gt;
* Author should be assigned to a newly created team and should be able to create a link for co-authors to join the team. &lt;br /&gt;
* Co-Authors on clicking on link should be able to join  author's team and should be able to submit work for the assignment.&lt;br /&gt;
&lt;br /&gt;
==Sequence Diagram==&lt;br /&gt;
[[File:SequenceDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Design - The Gruby Details==&lt;br /&gt;
&lt;br /&gt;
===Creating The conference type assignment===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the instructor would be performing to create a conference type assignment along with the changes required:&lt;br /&gt;
&lt;br /&gt;
1. Instructor logs in with his credentials.&lt;br /&gt;
&lt;br /&gt;
2. Instructor creates an assignment by checking a new check box - “Is conference style assignment”, to mark the assignment to be of conference type.&lt;br /&gt;
&lt;br /&gt;
* This checkbox will be introduced in the Assignment’s edit page('''app/views/assignments/edit/_general.html''')&lt;br /&gt;
&lt;br /&gt;
3. Based on the flag, once the assignment is created, a shareable URL will be displayed on the assignments page that can be used by the Instructor to share among students/authors. They will use this URL to be automatically assigned the given assignment.&lt;br /&gt;
&lt;br /&gt;
* If the student does not have an expertiza account, he/she will be asked to create an account and will not be having a need to get it authorized from the admin as only those people will be able to create an account in expertiza with whom the link is shared.&lt;br /&gt;
&lt;br /&gt;
The usage of the url and it’s working will be discussed in the next part.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's authors===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the Author would be performing to create an account:&lt;br /&gt;
&lt;br /&gt;
1. After instructor has created new assignment and a team for this assignment, instructor will be able to see a URL which will be shared by him with potential authors so that they can use their existing expertiza accounts or create new accounts to add submissions to the assignment. Creation of new account will not require approval from instructor/admin. URL will be visible on page '''/assignments/{id}/edit '''.&lt;br /&gt;
&lt;br /&gt;
2. If Author already has an account he will be able to view the conference type assignment and his default team. If Author account does not exists he will be redirect to page '''/users/request_new?role=Student'''.  On this page author can input all the required details to create author account with role as student. This account will not require any approval from instructor to activation.&lt;br /&gt;
&lt;br /&gt;
3. After Author account is created, the author can add co-authors to this assignments.&lt;br /&gt;
&lt;br /&gt;
4. Author can login in and navigate to '''assignment -&amp;gt; Your Team''' and invite co-authors into his team for working on the submission.&lt;br /&gt;
&lt;br /&gt;
5. Adding co-authors has following two cases - either the co-author's expertiza account already exists or a new user will be created otherwise in a similar way in which the author's account is created.&lt;br /&gt;
&lt;br /&gt;
6. Author can provide email id of co-authors in invite list of “Your Team” and will be able to view a shareable URL on page '''student_teams/view?student_id={id}''', which will be shared by author to his team mates to join this team.&lt;br /&gt;
&lt;br /&gt;
7. The role for both Author and Co-author is a student type.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's co-authors===&lt;br /&gt;
&lt;br /&gt;
1. When a co-author click on the URL shared by author to join his team&lt;br /&gt;
&lt;br /&gt;
* If co-author already has an account, he will be asked to login and will be able to view his team and assignment.&lt;br /&gt;
* If co-author does not exist, he will be redirected to page '''/users/request_new?role=Student'''. On this page all the details required to create a new user will be entered and a student account will be created which will not require approval from instructor for account activation.&lt;br /&gt;
&lt;br /&gt;
2. Co-author's email will be verified while creating student account to validate if co-author is same person which author intended to add on his team. This will prevent spam/fake users from joining the author's team.&lt;br /&gt;
&lt;br /&gt;
===Database Changes===&lt;br /&gt;
There are no database changes as per the current design&lt;br /&gt;
&lt;br /&gt;
===Files to be changed===&lt;br /&gt;
[[Image:Design_pic.png]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
Please find the below plan to test the functionality&lt;br /&gt;
&lt;br /&gt;
=== RSpec Tests ===&lt;br /&gt;
Please find below RSpec Test cases for this feature&lt;br /&gt;
&lt;br /&gt;
====Scenario 1: Creating student type user from controller by bypassing admin approval ====&lt;br /&gt;
After Instructor creates a conference type assignment, Author should be able to create an account and this account doesn't require approval from admin.&lt;br /&gt;
&lt;br /&gt;
Files associated with this functionality:&lt;br /&gt;
#users_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
Following tests will be performed to verify whether the functionality is working as desired.&lt;br /&gt;
*Positive test case to check if author is able to to create and login into a new account without admin approval&lt;br /&gt;
*Negative test case to check author not able to login after account creation&lt;br /&gt;
&lt;br /&gt;
====Scenario 2: Author/Co-author after creating an account is able to access conference type assignment====&lt;br /&gt;
After Author has created an account, he/she should be able to access the conference type account.&lt;br /&gt;
&lt;br /&gt;
Files associated with this functionality:&lt;br /&gt;
#users_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
Following tests will be performed to verify whether the functionality is working as desired.&lt;br /&gt;
*Test case to check if Author is assigned to conference type assignment and able to access it&lt;br /&gt;
*Test case to check if Co-author is assigned to conference type assignment and able to access it&lt;br /&gt;
*Test case to check if Author has been added to default team&lt;br /&gt;
*Test case to check if Co-author is added to Author's team&lt;br /&gt;
&lt;br /&gt;
====Scenario 3: Conference type assignment being created ====&lt;br /&gt;
Instructor should be able to create conference type assignment&lt;br /&gt;
&lt;br /&gt;
Files associated with this functionality:&lt;br /&gt;
#users_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
Following tests will be performed to verify whether the functionality is working as desired.&lt;br /&gt;
*Test case to check if Conference type assignment has been created&lt;br /&gt;
&lt;br /&gt;
====Scenario 4: Author/Co-author should be able to see assignment if they already have an account ====&lt;br /&gt;
After Instructor creates a conference type assignment, Author/Co-author clicks on link provided to them. If they already have an account, they should see conference type assignment in their assignment page&lt;br /&gt;
&lt;br /&gt;
Files associated with this functionality:&lt;br /&gt;
#users_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
Following tests will be performed to verify whether the functionality is working as desired.&lt;br /&gt;
*Test case to check if Author/Co-author already have an account&lt;br /&gt;
*Test case to validate if  Author/Co-author can see assignment in their assignment page if they already have an account&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj (bbhardw)&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Github Repository for Expertiza]&lt;br /&gt;
# [http://wiki.expertiza.ncsu.edu/index.php/Documentation_on_Database_Tables Expertiza Documentation on Database Tables]&lt;br /&gt;
# [https://guides.rubyonrails.org/api_app.html Rails Guide Documentation]&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129478</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129478"/>
		<updated>2019-11-16T04:17:37Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
===Existing Solution===&lt;br /&gt;
Conference assignments are the type of assignments open for all the people. We can assign participants to assignments they are participating in, and they can submit their work for it. In today's scenario, participants share google doc, authors and co-authors name with instructor. Then instructor has to add those authors and co-authors as users in expertiza, assign them to the particular assignment.&lt;br /&gt;
&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
This project concentrates on the use of expertiza assignments as conferences/journals. Using these assignments, people can submit their papers and get reviews for the same.&lt;br /&gt;
The focus of this project will be to enable a particular conference participants to create an expertiza account and teams for conference submission by minimizing the inputs required from the application admin/instructor.&lt;br /&gt;
&lt;br /&gt;
==Task to be Accomplished==&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Conference Assignments&lt;br /&gt;
* Author should be able to create account by clicking on the link.   If author doesnt have an account&lt;br /&gt;
* Author should be assigned to a newly created team and should be able to create a link for co-authors to join the team. &lt;br /&gt;
* Co-Authors on clicking on link should be able to join  author's team and should be able to submit work for the assignment.&lt;br /&gt;
&lt;br /&gt;
==Sequence Diagram==&lt;br /&gt;
[[File:SequenceDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Design - The Gruby Details==&lt;br /&gt;
&lt;br /&gt;
===Creating The conference type assignment===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the instructor would be performing to create a conference type assignment along with the changes required:&lt;br /&gt;
&lt;br /&gt;
1. Instructor logs in with his credentials.&lt;br /&gt;
&lt;br /&gt;
2. Instructor creates an assignment by checking a new check box - “Is conference style assignment”, to mark the assignment to be of conference type.&lt;br /&gt;
&lt;br /&gt;
* This checkbox will be introduced in the Assignment’s edit page('''app/views/assignments/edit/_general.html''')&lt;br /&gt;
&lt;br /&gt;
3. Based on the flag, once the assignment is created, a shareable URL will be displayed on the assignments page that can be used by the Instructor to share among students/authors. They will use this URL to be automatically assigned the given assignment.&lt;br /&gt;
&lt;br /&gt;
* If the student does not have an expertiza account, he/she will be asked to create an account and will not be having a need to get it authorized from the admin as only those people will be able to create an account in expertiza with whom the link is shared.&lt;br /&gt;
&lt;br /&gt;
The usage of the url and it’s working will be discussed in the next part.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's authors===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the Author would be performing to create an account:&lt;br /&gt;
&lt;br /&gt;
1. After instructor has created new assignment and a team for this assignment, instructor will be able to see a URL which will be shared by him with potential authors so that they can use their existing expertiza accounts or create new accounts to add submissions to the assignment. Creation of new account will not require approval from instructor/admin. URL will be visible on page '''/assignments/{id}/edit '''.&lt;br /&gt;
&lt;br /&gt;
2. If Author already has an account he will be able to view the conference type assignment and his default team. If Author account does not exists he will be redirect to page '''/users/request_new?role=Student'''.  On this page author can input all the required details to create author account with role as student. This account will not require any approval from instructor to activation.&lt;br /&gt;
&lt;br /&gt;
3. After Author account is created, the author can add co-authors to this assignments.&lt;br /&gt;
&lt;br /&gt;
4. Author can login in and navigate to '''assignment -&amp;gt; Your Team''' and invite co-authors into his team for working on the submission.&lt;br /&gt;
&lt;br /&gt;
5. Adding co-authors has following two cases - either the co-author's expertiza account already exists or a new user will be created otherwise in a similar way in which the author's account is created.&lt;br /&gt;
&lt;br /&gt;
6. Author can provide email id of co-authors in invite list of “Your Team” and will be able to view a shareable URL on page '''student_teams/view?student_id={id}''', which will be shared by author to his team mates to join this team.&lt;br /&gt;
&lt;br /&gt;
7. The role for both Author and Co-author is a student type.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's co-authors===&lt;br /&gt;
&lt;br /&gt;
1. When a co-author click on the URL shared by author to join his team&lt;br /&gt;
&lt;br /&gt;
* If co-author already has an account, he will be asked to login and will be able to view his team and assignment.&lt;br /&gt;
* If co-author does not exist, he will be redirected to page '''/users/request_new?role=Student'''. On this page all the details required to create a new user will be entered and a student account will be created which will not require approval from instructor for account activation.&lt;br /&gt;
&lt;br /&gt;
2. Co-author's email will be verified while creating student account to validate if co-author is same person which author intended to add on his team. This will prevent spam/fake users from joining the author's team.&lt;br /&gt;
&lt;br /&gt;
===Files to be changed===&lt;br /&gt;
[[Image:Design_pic.png]]&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
Please find the below plan to test the functionality&lt;br /&gt;
&lt;br /&gt;
=== RSpec Tests ===&lt;br /&gt;
Please find below RSpec Test cases for this feature&lt;br /&gt;
&lt;br /&gt;
====Scenario 1: Creating student type user from controller by bypassing admin approval ====&lt;br /&gt;
After Instructor creates a conference type assignment, Author should be able to create an account and this account doesn't require approval from admin.&lt;br /&gt;
&lt;br /&gt;
Files associated with this functionality:&lt;br /&gt;
#users_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
Following tests will be performed to verify whether the functionality is working as desired.&lt;br /&gt;
*Positive test case to check if author is able to to create and login into a new account without admin approval&lt;br /&gt;
*Negative test case to check author not able to login after account creation&lt;br /&gt;
&lt;br /&gt;
====Scenario 2: Author/Co-author after creating an account is able to access conference type assignment====&lt;br /&gt;
After Author has created an account, he/she should be able to access the conference type account.&lt;br /&gt;
&lt;br /&gt;
Files associated with this functionality:&lt;br /&gt;
#users_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
Following tests will be performed to verify whether the functionality is working as desired.&lt;br /&gt;
*Test case to check if Author is assigned to conference type assignment and able to access it&lt;br /&gt;
*Test case to check if Co-author is assigned to conference type assignment and able to access it&lt;br /&gt;
*Test case to check if Author has been added to default team&lt;br /&gt;
*Test case to check if Co-author is added to Author's team&lt;br /&gt;
&lt;br /&gt;
====Scenario 3: Conference type assignment being created ====&lt;br /&gt;
Instructor should be able to create conference type assignment&lt;br /&gt;
&lt;br /&gt;
Files associated with this functionality:&lt;br /&gt;
#users_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
Following tests will be performed to verify whether the functionality is working as desired.&lt;br /&gt;
*Test case to check if Conference type assignment has been created&lt;br /&gt;
&lt;br /&gt;
====Scenario 4: Author/Co-author should be able to see assignment if they already have an account ====&lt;br /&gt;
After Instructor creates a conference type assignment, Author/Co-author clicks on link provided to them. If they already have an account, they should see conference type assignment in their assignment page&lt;br /&gt;
&lt;br /&gt;
Files associated with this functionality:&lt;br /&gt;
#users_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
Following tests will be performed to verify whether the functionality is working as desired.&lt;br /&gt;
*Test case to check if Author/Co-author already have an account&lt;br /&gt;
*Test case to validate if  Author/Co-author can see assignment in their assignment page if they already have an account&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj (bbhardw)&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Github Repository for Expertiza]&lt;br /&gt;
# [http://wiki.expertiza.ncsu.edu/index.php/Documentation_on_Database_Tables Expertiza Documentation on Database Tables]&lt;br /&gt;
# [https://guides.rubyonrails.org/api_app.html Rails Guide Documentation]&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129477</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129477"/>
		<updated>2019-11-16T04:16:51Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Changes for Conference's authors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
===Existing Solution===&lt;br /&gt;
Conference assignments are the type of assignments open for all the people. We can assign participants to assignments they are participating in, and they can submit their work for it. In today's scenario, participants share google doc, authors and co-authors name with instructor. Then instructor has to add those authors and co-authors as users in expertiza, assign them to the particular assignment.&lt;br /&gt;
&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
This project concentrates on the use of expertiza assignments as conferences/journals. Using these assignments, people can submit their papers and get reviews for the same.&lt;br /&gt;
The focus of this project will be to enable a particular conference participants to create an expertiza account and teams for conference submission by minimizing the inputs required from the application admin/instructor.&lt;br /&gt;
&lt;br /&gt;
==Task to be Accomplished==&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Conference Assignments&lt;br /&gt;
* Author should be able to create account by clicking on the link.   If author doesnt have an account&lt;br /&gt;
* Author should be assigned to a newly created team and should be able to create a link for co-authors to join the team. &lt;br /&gt;
* Co-Authors on clicking on link should be able to join  author's team and should be able to submit work for the assignment.&lt;br /&gt;
&lt;br /&gt;
==Sequence Diagram==&lt;br /&gt;
[[File:SequenceDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Design - The Gruby Details==&lt;br /&gt;
&lt;br /&gt;
===Creating The conference type assignment===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the instructor would be performing to create a conference type assignment along with the changes required:&lt;br /&gt;
&lt;br /&gt;
1. Instructor logs in with his credentials.&lt;br /&gt;
&lt;br /&gt;
2. Instructor creates an assignment by checking a new check box - “Is conference style assignment”, to mark the assignment to be of conference type.&lt;br /&gt;
&lt;br /&gt;
* This checkbox will be introduced in the Assignment’s edit page('''app/views/assignments/edit/_general.html''')&lt;br /&gt;
&lt;br /&gt;
3. Based on the flag, once the assignment is created, a shareable URL will be displayed on the assignments page that can be used by the Instructor to share among students/authors. They will use this URL to be automatically assigned the given assignment.&lt;br /&gt;
&lt;br /&gt;
* If the student does not have an expertiza account, he/she will be asked to create an account and will not be having a need to get it authorized from the admin as only those people will be able to create an account in expertiza with whom the link is shared.&lt;br /&gt;
&lt;br /&gt;
The usage of the url and it’s working will be discussed in the next part.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's authors===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the Author would be performing to create an account:&lt;br /&gt;
&lt;br /&gt;
1. After instructor has created new assignment and a team for this assignment, instructor will be able to see a URL which will be shared by him with potential authors so that they can use their existing expertiza accounts or create new accounts to add submissions to the assignment. Creation of new account will not require approval from instructor/admin. URL will be visible on page '''/assignments/{id}/edit '''.&lt;br /&gt;
&lt;br /&gt;
2. If Author already has an account he will be able to view the conference type assignment and his default team. If Author account does not exists he will be redirect to page '''/users/request_new?role=Student'''.  On this page author can input all the required details to create author account with role as student. This account will not require any approval from instructor to activation.&lt;br /&gt;
&lt;br /&gt;
3. After Author account is created, the author can add co-authors to this assignments.&lt;br /&gt;
&lt;br /&gt;
4. Author can login in and navigate to '''assignment -&amp;gt; Your Team''' and invite co-authors into his team for working on the submission.&lt;br /&gt;
&lt;br /&gt;
5. Adding co-authors has following two cases - either the co-author's expertiza account already exists or a new user will be created otherwise in a similar way in which the author's account is created.&lt;br /&gt;
&lt;br /&gt;
6. Author can provide email id of co-authors in invite list of “Your Team” and will be able to view a shareable URL on page '''student_teams/view?student_id={id}''', which will be shared by author to his team mates to join this team.&lt;br /&gt;
&lt;br /&gt;
7. The role for both Author and Co-author is a student type.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's co-authors===&lt;br /&gt;
&lt;br /&gt;
1. When a co-author click on the URL shared by author to join his team&lt;br /&gt;
&lt;br /&gt;
* If co-author already has an account, he will be asked to login and will be able to view his team and assignment.&lt;br /&gt;
* If co-author does not exist, he will be redirected to page '''/users/request_new?role=Student'''. On this page all the details required to create a new user will be entered and a student account will be created which will not require approval from instructor for account activation.&lt;br /&gt;
&lt;br /&gt;
2. Co-author's email will be verified while creating student account to validate if co-author is same person which author intended to add on his team. This will prevent spam/fake users from joining the author's team.&lt;br /&gt;
&lt;br /&gt;
===Files to be changed===&lt;br /&gt;
[[Image:Design_pic.png]]&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
Please find the below plan to test the functionality&lt;br /&gt;
&lt;br /&gt;
=== RSpec Tests ===&lt;br /&gt;
Please find below RSpec Test cases for this feature&lt;br /&gt;
&lt;br /&gt;
====Scenario 1: Creating student type user from controller by bypassing admin approval ====&lt;br /&gt;
After Instructor creates a conference type assignment, Author should be able to create an account and this account doesn't require approval from admin.&lt;br /&gt;
&lt;br /&gt;
Files associated with this functionality:&lt;br /&gt;
#users_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
Following tests will be performed to verify whether the functionality is working as desired.&lt;br /&gt;
*Positive test case to check if author is able to to create and login into a new account without admin approval&lt;br /&gt;
*Negative test case to check author not able to login after account creation&lt;br /&gt;
&lt;br /&gt;
====Scenario 2: Author/Co-author after creating an account is able to access conference type assignment====&lt;br /&gt;
After Author has created an account, he/she should be able to access the conference type account.&lt;br /&gt;
&lt;br /&gt;
Files associated with this functionality:&lt;br /&gt;
#users_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
Following tests will be performed to verify whether the functionality is working as desired.&lt;br /&gt;
*Test case to check if Author is assigned to conference type assignment and able to access it&lt;br /&gt;
*Test case to check if Co-author is assigned to conference type assignment and able to access it&lt;br /&gt;
*Test case to check if Author has been added to default team&lt;br /&gt;
*Test case to check if Co-author is added to Author's team&lt;br /&gt;
&lt;br /&gt;
====Scenario 3: Conference type assignment being created ====&lt;br /&gt;
Instructor should be able to create conference type assignment&lt;br /&gt;
&lt;br /&gt;
Files associated with this functionality:&lt;br /&gt;
#users_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
Following tests will be performed to verify whether the functionality is working as desired.&lt;br /&gt;
*Test case to check if Conference type assignment has been created&lt;br /&gt;
&lt;br /&gt;
====Scenario 4: Author/Co-author should be able to see assignment if they already have an account ====&lt;br /&gt;
After Instructor creates a conference type assignment, Author/Co-author clicks on link provided to them. If they already have an account, they should see conference type assignment in their assignment page&lt;br /&gt;
&lt;br /&gt;
Files associated with this functionality:&lt;br /&gt;
#users_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
Following tests will be performed to verify whether the functionality is working as desired.&lt;br /&gt;
*Test case to check if Author/Co-author already have an account&lt;br /&gt;
*Test case to validate if  Author/Co-author can see assignment in their assignment page if they already have an account&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj (bbhardw)&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129473</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129473"/>
		<updated>2019-11-16T04:08:56Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
===Existing Solution===&lt;br /&gt;
Conference assignments are the type of assignments open for all the people. We can assign participants to assignments they are participating in, and they can submit their work for it. In today's scenario, participants share google doc, authors and co-authors name with instructor. Then instructor has to add those authors and co-authors as users in expertiza, assign them to the particular assignment.&lt;br /&gt;
&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
This project concentrates on the use of expertiza assignments as conferences/journals. Using these assignments, people can submit their papers and get reviews for the same.&lt;br /&gt;
The focus of this project will be to enable a particular conference participants to create an expertiza account and teams for conference submission by minimizing the inputs required from the application admin/instructor.&lt;br /&gt;
&lt;br /&gt;
==Task to be Accomplished==&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Conference Assignments&lt;br /&gt;
* Author should be able to create account by clicking on the link.   If author doesnt have an account&lt;br /&gt;
* Author should be assigned to a newly created team and should be able to create a link for co-authors to join the team. &lt;br /&gt;
* Co-Authors on clicking on link should be able to join  author's team and should be able to submit work for the assignment.&lt;br /&gt;
&lt;br /&gt;
==Sequence Diagram==&lt;br /&gt;
[[File:SequenceDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Design - The Gruby Details==&lt;br /&gt;
&lt;br /&gt;
===Creating The conference type assignment===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the instructor would be performing to create a conference type assignment along with the changes required:&lt;br /&gt;
&lt;br /&gt;
1. Instructor logs in with his credentials.&lt;br /&gt;
&lt;br /&gt;
2. Instructor creates an assignment by checking a new check box - “Is conference style assignment”, to mark the assignment to be of conference type.&lt;br /&gt;
&lt;br /&gt;
* This checkbox will be introduced in the Assignment’s edit page('''app/views/assignments/edit/_general.html''')&lt;br /&gt;
&lt;br /&gt;
3. Based on the flag, once the assignment is created, a shareable URL will be displayed on the assignments page that can be used by the Instructor to share among students/authors. They will use this URL to be automatically assigned the given assignment.&lt;br /&gt;
&lt;br /&gt;
* If the student does not have an expertiza account, he/she will be asked to create an account and will not be having a need to get it authorized from the admin as only those people will be able to create an account in expertiza with whom the link is shared.&lt;br /&gt;
&lt;br /&gt;
The usage of the url and it’s working will be discussed in the next part.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's authors===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the Author would be performing to create an account:&lt;br /&gt;
&lt;br /&gt;
1. After instructor has created new assignment and a team for this assignment, instructor will be able to see a URL which will be shared by him with potential authors so that they can use their existing expertiza accounts or create new accounts to add submissions to the assignment. Creation of new account will not require approval from instructor/admin. URL will be visible on page '''/assignments/{id}/edit '''.&lt;br /&gt;
&lt;br /&gt;
2. If Author already has an account he will be able to view the conference type assignment and his default team. If Author account does not exists he will be redirect to page '''/users/request_new?role=Student'''.  On this page author can input all the required details to create author account with role as student. This account will not require any approval from instructor to activation.&lt;br /&gt;
&lt;br /&gt;
3. After Author account is created, the author can add co-authors to this assignments.&lt;br /&gt;
&lt;br /&gt;
4. Author can login in and navigate to '''assignment -&amp;gt; Your Team''' and invite co-authors into his team for working on the submission.&lt;br /&gt;
&lt;br /&gt;
5. Adding co-authors has following two cases - either the co-author's expertiza account already exists or a new user will be created otherwise in a similar way in which the author's account is created.&lt;br /&gt;
&lt;br /&gt;
6. Author can provide email id of co-authors in invite list of “Your Team” and will be able to view a shareable URL on page '''student_teams/view?student_id={id}''', which will be shared by author to his team mates to join this team.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's co-authors===&lt;br /&gt;
&lt;br /&gt;
1. When a co-author click on the URL shared by author to join his team&lt;br /&gt;
&lt;br /&gt;
* If co-author already has an account, he will be asked to login and will be able to view his team and assignment.&lt;br /&gt;
* If co-author does not exist, he will be redirected to page '''/users/request_new?role=Student'''. On this page all the details required to create a new user will be entered and a student account will be created which will not require approval from instructor for account activation.&lt;br /&gt;
&lt;br /&gt;
2. Co-author's email will be verified while creating student account to validate if co-author is same person which author intended to add on his team. This will prevent spam/fake users from joining the author's team.&lt;br /&gt;
&lt;br /&gt;
===Files to be changed===&lt;br /&gt;
[[Image:Design_pic.png]]&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
Please find the below plan to test the functionality&lt;br /&gt;
&lt;br /&gt;
=== RSpec Tests ===&lt;br /&gt;
Please find below RSpec Test cases for this feature&lt;br /&gt;
&lt;br /&gt;
====Scenario 1: Creating student type user from controller by bypassing admin approval ====&lt;br /&gt;
After Instructor creates a conference type assignment, Author should be able to create an account and this account doesn't require approval from admin.&lt;br /&gt;
&lt;br /&gt;
Files associated with this functionality:&lt;br /&gt;
#users_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
Following tests will be performed to verify whether the functionality is working as desired.&lt;br /&gt;
*Positive test case to check if author is able to to create and login into a new account without admin approval&lt;br /&gt;
*Negative test case to check author not able to login after account creation&lt;br /&gt;
&lt;br /&gt;
====Scenario 2: Author/Co-author after creating an account is able to access conference type assignment====&lt;br /&gt;
After Author has created an account, he/she should be able to access the conference type account.&lt;br /&gt;
&lt;br /&gt;
Files associated with this functionality:&lt;br /&gt;
#users_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
Following tests will be performed to verify whether the functionality is working as desired.&lt;br /&gt;
*Test case to check if Author is assigned to conference type assignment and able to access it&lt;br /&gt;
*Test case to check if Co-author is assigned to conference type assignment and able to access it&lt;br /&gt;
*Test case to check if Author has been added to default team&lt;br /&gt;
*Test case to check if Co-author is added to Author's team&lt;br /&gt;
&lt;br /&gt;
====Scenario 3: Conference type assignment being created ====&lt;br /&gt;
Instructor should be able to create conference type assignment&lt;br /&gt;
&lt;br /&gt;
Files associated with this functionality:&lt;br /&gt;
#users_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
Following tests will be performed to verify whether the functionality is working as desired.&lt;br /&gt;
*Test case to check if Conference type assignment has been created&lt;br /&gt;
&lt;br /&gt;
====Scenario 4: Author/Co-author should be able to see assignment if they already have an account ====&lt;br /&gt;
After Instructor creates a conference type assignment, Author/Co-author clicks on link provided to them. If they already have an account, they should see conference type assignment in their assignment page&lt;br /&gt;
&lt;br /&gt;
Files associated with this functionality:&lt;br /&gt;
#users_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
Following tests will be performed to verify whether the functionality is working as desired.&lt;br /&gt;
*Test case to check if Author/Co-author already have an account&lt;br /&gt;
*Test case to validate if  Author/Co-author can see assignment in their assignment page if they already have an account&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj (bbhardw)&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129462</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129462"/>
		<updated>2019-11-16T04:01:44Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
===Existing Solution===&lt;br /&gt;
Conference assignments are the type of assignments open for all the people. We can assign participants to assignments they are participating in, and they can submit their work for it. In today's scenario, participants share google doc, authors and co-authors name with instructor. Then instructor has to add those authors and co-authors as users in expertiza, assign them to the particular assignment.&lt;br /&gt;
&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
This project concentrates on the use of expertiza assignments as conferences/journals. Using these assignments, people can submit their papers and get reviews for the same.&lt;br /&gt;
The focus of this project will be to enable a particular conference participants to create an expertiza account and teams for conference submission by minimizing the inputs required from the application admin/instructor.&lt;br /&gt;
&lt;br /&gt;
==Task to be Accomplished==&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Conference Assignments&lt;br /&gt;
* Author should be able to create account by clicking on the link.   If author doesnt have an account&lt;br /&gt;
* Author should be assigned to a newly created team and should be able to create a link for co-authors to join the team. &lt;br /&gt;
* Co-Authors on clicking on link should be able to join  author's team and should be able to submit work for the assignment.&lt;br /&gt;
&lt;br /&gt;
==Sequence Diagram==&lt;br /&gt;
[[File:SequenceDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Design - The Gruby Details==&lt;br /&gt;
&lt;br /&gt;
===Creating The conference type assignment===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the instructor would be performing to create a conference type assignment along with the changes required:&lt;br /&gt;
&lt;br /&gt;
1. Instructor logs in with his credentials.&lt;br /&gt;
&lt;br /&gt;
2. Instructor creates an assignment by checking a new check box - “Is conference style assignment”, to mark the assignment to be of conference type.&lt;br /&gt;
&lt;br /&gt;
* This checkbox will be introduced in the Assignment’s edit page('''app/views/assignments/edit/_general.html''')&lt;br /&gt;
&lt;br /&gt;
3. Based on the flag, once the assignment is created, a shareable URL will be displayed on the assignments page that can be used by the Instructor to share among students/authors. They will use this URL to be automatically assigned the given assignment.&lt;br /&gt;
&lt;br /&gt;
* If the student does not have an expertiza account, he/she will be asked to create an account and will not be having a need to get it authorized from the admin as only those people will be able to create an account in expertiza with whom the link is shared.&lt;br /&gt;
&lt;br /&gt;
The usage of the url and it’s working will be discussed in the next part.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's authors===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the Author would be performing to create an account:&lt;br /&gt;
&lt;br /&gt;
1. After instructor has created new assignment and a team for this assignment, instructor will be able to see a URL which will be shared by him with potential authors so that they can use their existing expertiza accounts or create new accounts to add submissions to the assignment. Creation of new account will not require approval from instructor/admin. URL will be visible on page '''/assignments/{id}/edit '''.&lt;br /&gt;
&lt;br /&gt;
2. If Author already has an account he will be able to view the conference type assignment and his default team. If Author account does not exists he will be redirect to page '''/users/request_new?role=Student'''.  On this page author can input all the required details to create author account with role as student. This account will not require any approval from instructor to activation.&lt;br /&gt;
&lt;br /&gt;
3. After Author account is created, the author can add co-authors to this assignments.&lt;br /&gt;
&lt;br /&gt;
4. Author can login in and navigate to '''assignment -&amp;gt; Your Team''' and invite co-authors into his team for working on the submission.&lt;br /&gt;
&lt;br /&gt;
5. Adding co-authors has following two cases - either the co-author's expertiza account already exists or a new user will be created otherwise in a similar way in which the author's account is created.&lt;br /&gt;
&lt;br /&gt;
6. Author can provide email id of co-authors in invite list of “Your Team” and will be able to view a shareable URL on page '''student_teams/view?student_id={id}''', which will be shared by author to his team mates to join this team.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's co-authors===&lt;br /&gt;
&lt;br /&gt;
1. When a co-author click on the URL shared by author to join his team&lt;br /&gt;
&lt;br /&gt;
* If co-author already has an account, he will be asked to login and will be able to view his team and assignment.&lt;br /&gt;
* If co-author does not exist, he will be redirected to page '''/users/request_new?role=Student'''. On this page all the details required to create a new user will be entered and a student account will be created which will not require approval from instructor for account activation.&lt;br /&gt;
&lt;br /&gt;
2. Co-author's email will be verified while creating student account to validate if co-author is same person which author intended to add on his team. This will prevent spam/fake users from joining the author's team.&lt;br /&gt;
&lt;br /&gt;
===Files to be changed===&lt;br /&gt;
[[Image:Design_pic.png]]&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
Please find the below plan to test the functionality&lt;br /&gt;
&lt;br /&gt;
=== RSpec Tests ===&lt;br /&gt;
Please find below RSpec Test cases for this feature&lt;br /&gt;
&lt;br /&gt;
====Scenario 1: Creating student type user from controller by bypassing admin approval ====&lt;br /&gt;
After Instructor creates a conference type assignment, Author should be able to create an account and this account doesn't require approval from admin.&lt;br /&gt;
&lt;br /&gt;
Files associated with this functionality:&lt;br /&gt;
#users_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
Following tests will be performed to verify whether the functionality is working as desired.&lt;br /&gt;
*Positive test case to check if author is able to to create and login into a new account without admin approval&lt;br /&gt;
*Negative test case to check author not able to login after account creation&lt;br /&gt;
&lt;br /&gt;
====Scenario 2: Author after creating an account is able to access conference type assignment====&lt;br /&gt;
After Author has created an account, he/she should be able to access the conference type account.&lt;br /&gt;
&lt;br /&gt;
Files associated with this functionality:&lt;br /&gt;
#users_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
Following tests will be performed to verify whether the functionality is working as desired.&lt;br /&gt;
*Test case to check if Author is assigned to conference type assignment and able to access it&lt;br /&gt;
*Test case to check if Author has been added to default team&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj (bbhardw)&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129454</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129454"/>
		<updated>2019-11-16T03:51:07Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
===Existing Solution===&lt;br /&gt;
Conference assignments are the type of assignments open for all the people. We can assign participants to assignments they are participating in, and they can submit their work for it. In today's scenario, participants share google doc, authors and co-authors name with instructor. Then instructor has to add those authors and co-authors as users in expertiza, assign them to the particular assignment.&lt;br /&gt;
&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
This project concentrates on the use of expertiza assignments as conferences/journals. Using these assignments, people can submit their papers and get reviews for the same.&lt;br /&gt;
The focus of this project will be to enable a particular conference participants to create an expertiza account and teams for conference submission by minimizing the inputs required from the application admin/instructor.&lt;br /&gt;
&lt;br /&gt;
==Task to be Accomplished==&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Conference Assignments&lt;br /&gt;
* Author should be able to create account by clicking on the link.   If author doesnt have an account&lt;br /&gt;
* Author should be assigned to a newly created team and should be able to create a link for co-authors to join the team. &lt;br /&gt;
* Co-Authors on clicking on link should be able to join  author's team and should be able to submit work for the assignment.&lt;br /&gt;
&lt;br /&gt;
==Sequence Diagram==&lt;br /&gt;
[[File:SequenceDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Design - The Gruby Details==&lt;br /&gt;
&lt;br /&gt;
===Creating The conference type assignment===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the instructor would be performing to create a conference type assignment along with the changes required:&lt;br /&gt;
&lt;br /&gt;
1. Instructor logs in with his credentials.&lt;br /&gt;
&lt;br /&gt;
2. Instructor creates an assignment by checking a new check box - “Is conference style assignment”, to mark the assignment to be of conference type.&lt;br /&gt;
&lt;br /&gt;
* This checkbox will be introduced in the Assignment’s edit page('''app/views/assignments/edit/_general.html''')&lt;br /&gt;
&lt;br /&gt;
3. Based on the flag, once the assignment is created, a shareable URL will be displayed on the assignments page that can be used by the Instructor to share among students/authors. They will use this URL to be automatically assigned the given assignment.&lt;br /&gt;
&lt;br /&gt;
* If the student does not have an expertiza account, he/she will be asked to create an account and will not be having a need to get it authorized from the admin as only those people will be able to create an account in expertiza with whom the link is shared.&lt;br /&gt;
&lt;br /&gt;
The usage of the url and it’s working will be discussed in the next part.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's authors===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the Author would be performing to create an account:&lt;br /&gt;
&lt;br /&gt;
1. After instructor has created new assignment and a team for this assignment, instructor will be able to see a URL which will be shared by him with potential authors so that they can use their existing expertiza accounts or create new accounts to add submissions to the assignment. Creation of new account will not require approval from instructor/admin. URL will be visible on page '''/assignments/{id}/edit '''.&lt;br /&gt;
&lt;br /&gt;
2. If Author already has an account he will be able to view the conference type assignment and his default team. If Author account does not exists he will be redirect to page '''/users/request_new?role=Student'''.  On this page author can input all the required details to create author account with role as student. This account will not require any approval from instructor to activation.&lt;br /&gt;
&lt;br /&gt;
3. After Author account is created, the author can add co-authors to this assignments.&lt;br /&gt;
&lt;br /&gt;
4. Author can login in and navigate to '''assignment -&amp;gt; Your Team''' and invite co-authors into his team for working on the submission.&lt;br /&gt;
&lt;br /&gt;
5. Adding co-authors has following two cases - either the co-author's expertiza account already exists or a new user will be created otherwise in a similar way in which the author's account is created.&lt;br /&gt;
&lt;br /&gt;
6. Author can provide email id of co-authors in invite list of “Your Team” and will be able to view a shareable URL on page '''student_teams/view?student_id={id}''', which will be shared by author to his team mates to join this team.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's co-authors===&lt;br /&gt;
&lt;br /&gt;
1. When a co-author click on the URL shared by author to join his team&lt;br /&gt;
&lt;br /&gt;
* If co-author already has an account, he will be asked to login and will be able to view his team and assignment.&lt;br /&gt;
* If co-author does not exist, he will be redirected to page '''/users/request_new?role=Student'''. On this page all the details required to create a new user will be entered and a student account will be created which will not require approval from instructor for account activation.&lt;br /&gt;
&lt;br /&gt;
2. Co-author's email will be verified while creating student account to validate if co-author is same person which author intended to add on his team. This will prevent spam/fake users from joining the author's team.&lt;br /&gt;
&lt;br /&gt;
===Files to be changed===&lt;br /&gt;
[[Image:Design_pic.png]]&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== RSpec Tests ===&lt;br /&gt;
Please find below RSpec Test cases for this feature&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj (bbhardw)&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129244</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129244"/>
		<updated>2019-11-12T04:42:59Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Files to be changed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
===Existing Solution===&lt;br /&gt;
Conference assignments are the type of assignments open for all the people. We can assign participants to assignments they are participating in, and they can submit their work for it. In today's scenario, participants share google doc, authors and co-authors name with instructor. Then instructor has to add those authors and co-authors as users in expertiza, assign them to the particular assignment.&lt;br /&gt;
&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
This project concentrates on the use of expertiza assignments as conferences/journals. Using these assignments, people can submit their papers and get reviews for the same.&lt;br /&gt;
The focus of this project will be to enable a particular conference participants to create an expertiza account and teams for conference submission by minimizing the inputs required from the application admin/instructor.&lt;br /&gt;
&lt;br /&gt;
==Task to be Accomplished==&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Conference Assignments&lt;br /&gt;
* Author should be able to create account by clicking on the link.   If author doesnt have an account&lt;br /&gt;
* Author should be assigned to a newly created team and should be able to create a link for co-authors to join the team. &lt;br /&gt;
* Co-Authors on clicking on link should be able to join  author's team and should be able to submit work for the assignment.&lt;br /&gt;
&lt;br /&gt;
==Sequence Diagram==&lt;br /&gt;
[[File:SequenceDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Design - The Gruby Details==&lt;br /&gt;
&lt;br /&gt;
===Creating The conference type assignment===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the instructor would be performing to create a conference type assignment along with the changes required:&lt;br /&gt;
&lt;br /&gt;
1. Instructor logs in with his credentials.&lt;br /&gt;
&lt;br /&gt;
2. Instructor creates an assignment by checking a new check box - “Is conference style assignment”, to mark the assignment to be of conference type.&lt;br /&gt;
&lt;br /&gt;
* This checkbox will be introduced in the Assignment’s edit page('''app/views/assignments/edit/_general.html''')&lt;br /&gt;
&lt;br /&gt;
3. Based on the flag, once the assignment is created, a shareable URL will be displayed on the assignments page that can be used by the Instructor to share among students/authors. They will use this URL to be automatically assigned the given assignment.&lt;br /&gt;
&lt;br /&gt;
* If the student does not have an expertiza account, he/she will be asked to create an account and will not be having a need to get it authorized from the admin as only those people will be able to create an account in expertiza with whom the link is shared.&lt;br /&gt;
&lt;br /&gt;
The usage of the url and it’s working will be discussed in the next part.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's authors===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the Author would be performing to create an account:&lt;br /&gt;
&lt;br /&gt;
1. After instructor has created new assignment and a team for this assignment, instructor will be able to see a URL which will be shared by him with potential authors so that they can use their existing expertiza accounts or create new accounts to add submissions to the assignment. Creation of new account will not require approval from instructor/admin. URL will be visible on page '''/assignments/{id}/edit '''.&lt;br /&gt;
&lt;br /&gt;
2. If Author already has an account he will be able to view the conference type assignment and his default team. If Author account does not exists he will be redirect to page '''/users/request_new?role=Student'''.  On this page author can input all the required details to create author account with role as student. This account will not require any approval from instructor to activation.&lt;br /&gt;
&lt;br /&gt;
3. After Author account is created, the author can add co-authors to this assignments.&lt;br /&gt;
&lt;br /&gt;
4. Author can login in and navigate to '''assignment -&amp;gt; Your Team''' and invite co-authors into his team for working on the submission.&lt;br /&gt;
&lt;br /&gt;
5. Adding co-authors has following two cases - either the co-author's expertiza account already exists or a new user will be created otherwise in a similar way in which the author's account is created.&lt;br /&gt;
&lt;br /&gt;
6. Author can provide email id of co-authors in invite list of “Your Team” and will be able to view a shareable URL on page '''student_teams/view?student_id={id}''', which will be shared by author to his team mates to join this team.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's co-authors===&lt;br /&gt;
&lt;br /&gt;
1. When a co-author click on the URL shared by author to join his team&lt;br /&gt;
&lt;br /&gt;
* If co-author already has an account, he will be asked to login and will be able to view his team and assignment.&lt;br /&gt;
* If co-author does not exist, he will be redirected to page '''/users/request_new?role=Student'''. On this page all the details required to create a new user will be entered and a student account will be created which will not require approval from instructor for account activation.&lt;br /&gt;
&lt;br /&gt;
2. Co-author's email will be verified while creating student account to validate if co-author is same person which author intended to add on his team. This will prevent spam/fake users from joining the author's team.&lt;br /&gt;
&lt;br /&gt;
===Files to be changed===&lt;br /&gt;
[[Image:Design_pic.png]]&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj (bbhardw)&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Design_pic.png&amp;diff=129243</id>
		<title>File:Design pic.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Design_pic.png&amp;diff=129243"/>
		<updated>2019-11-12T04:42:42Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Design_new.png&amp;diff=129241</id>
		<title>File:Design new.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Design_new.png&amp;diff=129241"/>
		<updated>2019-11-12T04:34:51Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129240</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129240"/>
		<updated>2019-11-12T04:33:00Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Files to be changed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
===Existing Solution===&lt;br /&gt;
Conference assignments are the type of assignments open for all the people. We can assign participants to assignments they are participating in, and they can submit their work for it. In today's scenario, participants share google doc, authors and co-authors name with instructor. Then instructor has to add those authors and co-authors as users in expertiza, assign them to the particular assignment.&lt;br /&gt;
&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
This project concentrates on the use of expertiza assignments as conferences/journals. Using these assignments, people can submit their papers and get reviews for the same.&lt;br /&gt;
The focus of this project will be to enable a particular conference participants to create an expertiza account and teams for conference submission by minimizing the inputs required from the application admin/instructor.&lt;br /&gt;
&lt;br /&gt;
==Task to be Accomplished==&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Conference Assignments&lt;br /&gt;
* Author should be able to create account by clicking on the link.   If author doesnt have an account&lt;br /&gt;
* Author should be assigned to a newly created team and should be able to create a link for co-authors to join the team. &lt;br /&gt;
* Co-Authors on clicking on link should be able to join  author's team and should be able to submit work for the assignment.&lt;br /&gt;
&lt;br /&gt;
==Sequence Diagram==&lt;br /&gt;
[[File:SequenceDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Design - The Gruby Details==&lt;br /&gt;
&lt;br /&gt;
===Creating The conference type assignment===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the instructor would be performing to create a conference type assignment along with the changes required:&lt;br /&gt;
&lt;br /&gt;
1. Instructor logs in with his credentials.&lt;br /&gt;
&lt;br /&gt;
2. Instructor creates an assignment by checking a new check box - “Is conference style assignment”, to mark the assignment to be of conference type.&lt;br /&gt;
&lt;br /&gt;
* This checkbox will be introduced in the Assignment’s edit page('''app/views/assignments/edit/_general.html''')&lt;br /&gt;
&lt;br /&gt;
3. Based on the flag, once the assignment is created, a shareable URL will be displayed on the assignments page that can be used by the Instructor to share among students/authors. They will use this URL to be automatically assigned the given assignment.&lt;br /&gt;
&lt;br /&gt;
* If the student does not have an expertiza account, he/she will be asked to create an account and will not be having a need to get it authorized from the admin as only those people will be able to create an account in expertiza with whom the link is shared.&lt;br /&gt;
&lt;br /&gt;
The usage of the url and it’s working will be discussed in the next part.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's authors===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the Author would be performing to create an account:&lt;br /&gt;
&lt;br /&gt;
1. After instructor has created new assignment and a team for this assignment, instructor will be able to see a URL which will be shared by him with potential authors so that they can use their existing expertiza accounts or create new accounts to add submissions to the assignment. Creation of new account will not require approval from instructor/admin. URL will be visible on page '''/assignments/{id}/edit '''.&lt;br /&gt;
&lt;br /&gt;
2. If Author already has an account he will be able to view the conference type assignment and his default team. If Author account does not exists he will be redirect to page '''/users/request_new?role=Student'''.  On this page author can input all the required details to create author account with role as student. This account will not require any approval from instructor to activation.&lt;br /&gt;
&lt;br /&gt;
3. After Author account is created, the author can add co-authors to this assignments.&lt;br /&gt;
&lt;br /&gt;
4. Author can login in and navigate to '''assignment -&amp;gt; Your Team''' and invite co-authors into his team for working on the submission.&lt;br /&gt;
&lt;br /&gt;
5. Adding co-authors has following two cases - either the co-author's expertiza account already exists or a new user will be created otherwise in a similar way in which the author's account is created.&lt;br /&gt;
&lt;br /&gt;
6. Author can provide email id of co-authors in invite list of “Your Team” and will be able to view a shareable URL on page '''student_teams/view?student_id={id}''', which will be shared by author to his team mates to join this team.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's co-authors===&lt;br /&gt;
&lt;br /&gt;
1. When a co-author click on the URL shared by author to join his team&lt;br /&gt;
&lt;br /&gt;
* If co-author already has an account, he will be asked to login and will be able to view his team and assignment.&lt;br /&gt;
* If co-author does not exist, he will be redirected to page '''/users/request_new?role=Student'''. On this page all the details required to create a new user will be entered and a student account will be created which will not require approval from instructor for account activation.&lt;br /&gt;
&lt;br /&gt;
2. Co-author's email will be verified while creating student account to validate if co-author is same person which author intended to add on his team. This will prevent spam/fake users from joining the author's team.&lt;br /&gt;
&lt;br /&gt;
===Files to be changed===&lt;br /&gt;
&lt;br /&gt;
[[File:Design.png]]&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj (bbhardw)&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Design.png&amp;diff=129239</id>
		<title>File:Design.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Design.png&amp;diff=129239"/>
		<updated>2019-11-12T04:32:25Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: uploaded a new version of &amp;amp;quot;File:Design.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FileChange.png&amp;diff=129237</id>
		<title>File:FileChange.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FileChange.png&amp;diff=129237"/>
		<updated>2019-11-12T04:30:13Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:File_Changes.png&amp;diff=129232</id>
		<title>File:File Changes.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:File_Changes.png&amp;diff=129232"/>
		<updated>2019-11-12T04:25:39Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129224</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129224"/>
		<updated>2019-11-12T04:22:32Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Files to be changed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
===Existing Solution===&lt;br /&gt;
Conference assignments are the type of assignments open for all the people. We can assign participants to assignments they are participating in, and they can submit their work for it. In today's scenario, participants share google doc, authors and co-authors name with instructor. Then instructor has to add those authors and co-authors as users in expertiza, assign them to the particular assignment.&lt;br /&gt;
&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
This project concentrates on the use of expertiza assignments as conferences/journals. Using these assignments, people can submit their papers and get reviews for the same.&lt;br /&gt;
The focus of this project will be to enable a particular conference participants to create an expertiza account and teams for conference submission by minimizing the inputs required from the application admin/instructor.&lt;br /&gt;
&lt;br /&gt;
==Task to be Accomplished==&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Conference Assignments&lt;br /&gt;
* Author should be able to create account by clicking on the link.   If author doesnt have an account&lt;br /&gt;
* Author should be assigned to a newly created team and should be able to create a link for co-authors to join the team. &lt;br /&gt;
* Co-Authors on clicking on link should be able to join  author's team and should be able to submit work for the assignment.&lt;br /&gt;
&lt;br /&gt;
==Sequence Diagram==&lt;br /&gt;
[[File:SequenceDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Design - The Gruby Details==&lt;br /&gt;
&lt;br /&gt;
===Creating The conference type assignment===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the instructor would be performing to create a conference type assignment along with the changes required:&lt;br /&gt;
&lt;br /&gt;
1. Instructor logs in with his credentials.&lt;br /&gt;
&lt;br /&gt;
2. Instructor creates an assignment by checking a new check box - “Is conference style assignment”, to mark the assignment to be of conference type.&lt;br /&gt;
&lt;br /&gt;
* This checkbox will be introduced in the Assignment’s edit page('''app/views/assignments/edit/_general.html''')&lt;br /&gt;
&lt;br /&gt;
3. Based on the flag, once the assignment is created, a shareable URL will be displayed on the assignments page that can be used by the Instructor to share among students/authors. They will use this URL to be automatically assigned the given assignment.&lt;br /&gt;
&lt;br /&gt;
* If the student does not have an expertiza account, he/she will be asked to create an account and will not be having a need to get it authorized from the admin as only those people will be able to create an account in expertiza with whom the link is shared.&lt;br /&gt;
&lt;br /&gt;
The usage of the url and it’s working will be discussed in the next part.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's authors===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the Author would be performing to create an account:&lt;br /&gt;
&lt;br /&gt;
1. After instructor has created new assignment and a team for this assignment, instructor will be able to see a URL which will be shared by him with potential authors so that they can use their existing expertiza accounts or create new accounts to add submissions to the assignment. Creation of new account will not require approval from instructor/admin. URL will be visible on page '''/assignments/{id}/edit '''.&lt;br /&gt;
&lt;br /&gt;
2. If Author already has an account he will be able to view the conference type assignment and his default team. If Author account does not exists he will be redirect to page '''/users/request_new?role=Student'''.  On this page author can input all the required details to create author account with role as student. This account will not require any approval from instructor to activation.&lt;br /&gt;
&lt;br /&gt;
3. After Author account is created, the author can add co-authors to this assignments.&lt;br /&gt;
&lt;br /&gt;
4. Author can login in and navigate to '''assignment -&amp;gt; Your Team''' and invite co-authors into his team for working on the submission.&lt;br /&gt;
&lt;br /&gt;
5. Adding co-authors has following two cases - either the co-author's expertiza account already exists or a new user will be created otherwise in a similar way in which the author's account is created.&lt;br /&gt;
&lt;br /&gt;
6. Author can provide email id of co-authors in invite list of “Your Team” and will be able to view a shareable URL on page '''student_teams/view?student_id={id}''', which will be shared by author to his team mates to join this team.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's co-authors===&lt;br /&gt;
&lt;br /&gt;
1. When a co-author click on the URL shared by author to join his team&lt;br /&gt;
&lt;br /&gt;
* If co-author already has an account, he will be asked to login and will be able to view his team and assignment.&lt;br /&gt;
* If co-author does not exist, he will be redirected to page '''/users/request_new?role=Student'''. On this page all the details required to create a new user will be entered and a student account will be created which will not require approval from instructor for account activation.&lt;br /&gt;
&lt;br /&gt;
2. Co-author's email will be verified while creating student account to validate if co-author is same person which author intended to add on his team. This will prevent spam/fake users from joining the author's team.&lt;br /&gt;
&lt;br /&gt;
===Files to be changed===&lt;br /&gt;
&lt;br /&gt;
[[File:FileChanges.png]]&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj (bbhardw)&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FileChanges.png&amp;diff=129222</id>
		<title>File:FileChanges.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FileChanges.png&amp;diff=129222"/>
		<updated>2019-11-12T04:21:55Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129139</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129139"/>
		<updated>2019-11-12T03:51:16Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Changes for Conference's authors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
===Existing Solution===&lt;br /&gt;
Conference assignments are the type of assignments open for all the people. We can assign participants to assignments they are participating in, and they can submit their work for it. In today's scenario, participants share google doc, authors and co-authors name with instructor. Then instructor has to add those authors and co-authors as users in expertiza, assign them to the particular assignment.&lt;br /&gt;
&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
This project concentrates on the use of expertiza assignments as conferences/journals. Using these assignments, people can submit their papers and get reviews for the same.&lt;br /&gt;
The focus of this project will be to enable a particular conference participants to create an expertiza account and teams for conference submission by minimizing the inputs required from the application admin/instructor.&lt;br /&gt;
&lt;br /&gt;
==Task to be Accomplished==&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Conference Assignments&lt;br /&gt;
* Author should be able to create account by clicking on the link.   If author doesnt have an account&lt;br /&gt;
* Author should be assigned to a newly created team and should be able to create a link for co-authors to join the team. &lt;br /&gt;
* Co-Authors on clicking on link should be able to join  author's team and should be able to submit work for the assignment.&lt;br /&gt;
&lt;br /&gt;
==Sequence Diagram==&lt;br /&gt;
[[File:SequenceDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Design - The Gruby Details==&lt;br /&gt;
&lt;br /&gt;
===Creating The conference type assignment===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the instructor would be performing to create a conference type assignment along with the changes required:&lt;br /&gt;
&lt;br /&gt;
1. Instructor logs in with his credentials.&lt;br /&gt;
&lt;br /&gt;
2. Instructor creates an assignment by checking a new check box - “Is conference style assignment”, to mark the assignment to be of conference type.&lt;br /&gt;
&lt;br /&gt;
* This checkbox will be introduced in the Assignment’s edit page('''app/views/assignments/edit/_general.html''')&lt;br /&gt;
&lt;br /&gt;
3. Based on the flag, once the assignment is created, a shareable URL will be displayed on the assignments page that can be used by the Instructor to share among students/authors. They will use this URL to be automatically assigned the given assignment.&lt;br /&gt;
&lt;br /&gt;
* If the student does not have an expertiza account, he/she will be asked to create an account and will not be having a need to get it authorized from the admin as only those people will be able to create an account in expertiza with whom the link is shared.&lt;br /&gt;
&lt;br /&gt;
The usage of the url and it’s working will be discussed in the next part.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's authors===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the Author would be performing to create an account:&lt;br /&gt;
&lt;br /&gt;
1. After instructor has created new assignment and a team for this assignment, instructor will be able to see a URL which will be shared by him with potential authors so that they can use their existing expertiza accounts or create new accounts to add submissions to the assignment. Creation of new account will not require approval from instructor/admin. URL will be visible on page '''/assignments/{id}/edit '''.&lt;br /&gt;
&lt;br /&gt;
2. If Author already has an account he will be able to view assignment and his team. If Author account does not exists he will be redirect to page '''/users/request_new?role=Student'''.  On this page author can input all the required details to create Author account with role as student. This account will not require any approval from instructor to activate account.&lt;br /&gt;
&lt;br /&gt;
3. After Author account is created, the author can add co-authors to this assignments.&lt;br /&gt;
&lt;br /&gt;
4. Author can login in and navigate to '''assignment -&amp;gt; Your Team''' and invite co-authors for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. Adding co-authors two cases either the co-author account already exists or a new user will be created if co-author account is not present.&lt;br /&gt;
&lt;br /&gt;
6. Author can provide email id of co-authors in invite list of “Your Team” and will be able to view a url on page '''student_teams/view?student_id={id}''', which will be shared by author to his team mates to join this team.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's co-authors===&lt;br /&gt;
&lt;br /&gt;
1. When a co-author click on the URL shared by author to join his team&lt;br /&gt;
&lt;br /&gt;
* If co-author already has an account, he will be asked to login and will be able to view his team and assignment.&lt;br /&gt;
* If co-author does not exists, he will be redirected to page '''/users/request_new?role=Student'''. On this page all the details required to create a new user will be entered and a student account will be created which not require approval from instructor to activate account.&lt;br /&gt;
&lt;br /&gt;
2. Co-authors email will be verified while creating student account to validate if co-author is same person which author intended to add on his team.&lt;br /&gt;
&lt;br /&gt;
===Files to be changed===&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj (bbhardw)&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129123</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129123"/>
		<updated>2019-11-12T03:44:26Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Design - The Gruby Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
===Existing Solution===&lt;br /&gt;
Conference assignments are the type of assignments open for all the people. We can assign participants to assignments they are participating in, and they can submit their work for it. In today's scenario, participants share google doc, authors and co-authors name with instructor. Then instructor has to add those authors and co-authors as users in expertiza, assign them to the particular assignment.&lt;br /&gt;
&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
This project concentrates on the use of expertiza assignments as conferences/journals. Using these assignments, people can submit their papers and get reviews for the same.&lt;br /&gt;
The focus of this project will be to enable a particular conference participants to create an expertiza account and teams for conference submission by minimizing the inputs required from the application admin/instructor.&lt;br /&gt;
&lt;br /&gt;
==Task to be Accomplished==&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Conference Assignments&lt;br /&gt;
* Author should be able to create account by clicking on the link.   If author doesnt have an account&lt;br /&gt;
* Author should be assigned to a newly created team and should be able to create a link for co-authors to join the team. &lt;br /&gt;
* Co-Authors on clicking on link should be able to join  author's team and should be able to submit work for the assignment.&lt;br /&gt;
&lt;br /&gt;
==Sequence Diagram==&lt;br /&gt;
[[File:SequenceDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Design - The Gruby Details==&lt;br /&gt;
&lt;br /&gt;
===Creating The conference type assignment===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the instructor would be performing to create a conference type assignment along with the changes required:&lt;br /&gt;
&lt;br /&gt;
1. Instructor logs in with his credentials.&lt;br /&gt;
&lt;br /&gt;
2. Instructor creates an assignment by checking a new check box - “Is conference style assignment”, to mark the assignment to be of conference type.&lt;br /&gt;
&lt;br /&gt;
* This checkbox will be introduced in the Assignment’s edit page('''app/views/assignments/edit/_general.html''')&lt;br /&gt;
&lt;br /&gt;
3. Based on the flag, once the assignment is created, a shareable URL will be displayed on the assignments page that can be used by the Instructor to share among students/authors. They will use this URL to be automatically assigned the given assignment.&lt;br /&gt;
&lt;br /&gt;
* If the student does not have an expertiza account, he/she will be asked to create an account and will not be having a need to get it authorized from the admin as only those people will be able to create an account in expertiza with whom the link is shared.&lt;br /&gt;
&lt;br /&gt;
The usage of the url and it’s working will be discussed in the next part.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's authors===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the Author would be performing to create an account:&lt;br /&gt;
&lt;br /&gt;
1. After instructor has created new assignment and a team for this assignment, instructor will be able to see a URL which will be shared by him with potential authors so that they can use their existing expertiza accounts or create new accounts to add submissions to the assignment. Creation of new account will not require approval from instructor/admin. URL will be visible on page '''/assignments/{id}/edit '''.&lt;br /&gt;
&lt;br /&gt;
2. If Author already has an account he will be able to view assignment and his team. If Author account does not exists he will be redirect to page '''/users/request_new?role=Student'''.  On this page author can input all the required details to create Author account with role as student. This account will not require any approval from instructor to activate account.&lt;br /&gt;
&lt;br /&gt;
3. After Author account is created, the author can add co-authors to this assignments.&lt;br /&gt;
&lt;br /&gt;
4. Author can login in and navigate to '''assignment -&amp;gt; Your Team''' and invite co-authors for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. Adding co-authors two cases either the co-author account already exists or a new user will be created if co-author account is not present.&lt;br /&gt;
&lt;br /&gt;
6. Author can provide email id of co-authors in invite list of “Your Team” and will be able to view a url on page '''student_teams/view?student_id={id}''', which will be shared by author to his team mates to join this team.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's authors===&lt;br /&gt;
&lt;br /&gt;
1. When a co-author click on the URL shared by author to join his team&lt;br /&gt;
&lt;br /&gt;
* If co-author already has an account, he will be asked to login and will be able to view his team and assignment.&lt;br /&gt;
* If co-author does not exists, he will be redirected to page '''/users/request_new?role=Student'''. On this page all the details required to create a new user will be entered and a student account will be created which not require approval from instructor to activate account.&lt;br /&gt;
&lt;br /&gt;
2. Co-authors email will be verified while creating student account to validate if co-author is same person which author intended to add on his team.&lt;br /&gt;
&lt;br /&gt;
===Files to be changed===&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj (bbhardw)&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129120</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129120"/>
		<updated>2019-11-12T03:41:40Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Changes for Conference's authors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
===Existing Solution===&lt;br /&gt;
Conference assignments are the type of assignments open for all the people. We can assign participants to assignments they are participating in, and they can submit their work for it. In today's scenario, participants share google doc, authors and co-authors name with instructor. Then instructor has to add those authors and co-authors as users in expertiza, assign them to the particular assignment.&lt;br /&gt;
&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
This project concentrates on the use of expertiza assignments as conferences/journals. Using these assignments, people can submit their papers and get reviews for the same.&lt;br /&gt;
The focus of this project will be to enable a particular conference participants to create an expertiza account and teams for conference submission by minimizing the inputs required from the application admin/instructor.&lt;br /&gt;
&lt;br /&gt;
==Task to be Accomplished==&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Conference Assignments&lt;br /&gt;
* Author should be able to create account by clicking on the link.   If author doesnt have an account&lt;br /&gt;
* Author should be assigned to a newly created team and should be able to create a link for co-authors to join the team. &lt;br /&gt;
* Co-Authors on clicking on link should be able to join  author's team and should be able to submit work for the assignment.&lt;br /&gt;
&lt;br /&gt;
==Sequence Diagram==&lt;br /&gt;
[[File:SequenceDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Design - The Gruby Details==&lt;br /&gt;
&lt;br /&gt;
===Creating The conference type assignment===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the instructor would be performing to create a conference type assignment along with the changes required:&lt;br /&gt;
&lt;br /&gt;
1. Instructor logs in with his credentials.&lt;br /&gt;
&lt;br /&gt;
2. Instructor creates an assignment by checking a new check box - “Is conference style assignment”, to mark the assignment to be of conference type.&lt;br /&gt;
&lt;br /&gt;
* This checkbox will be introduced in the Assignment’s edit page('''app/views/assignments/edit/_general.html''')&lt;br /&gt;
&lt;br /&gt;
3. Based on the flag, once the assignment is created, a shareable URL will be displayed on the assignments page that can be used by the Instructor to share among students/authors. They will use this URL to be automatically assigned the given assignment.&lt;br /&gt;
&lt;br /&gt;
* If the student does not have an expertiza account, he/she will be asked to create an account and will not be having a need to get it authorized from the admin as only those people will be able to create an account in expertiza with whom the link is shared.&lt;br /&gt;
&lt;br /&gt;
The usage of the url and it’s working will be discussed in the next part.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's authors===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the Author would be performing to create an account:&lt;br /&gt;
&lt;br /&gt;
1. After instructor has created new assignment and a team for this assignment, instructor will be able to see a URL which will be shared by him with potential authors so that they can use their existing expertiza accounts or create new accounts to add submissions to the assignment. Creation of new account will not require approval from instructor/admin. URL will be visible on page '''/assignments/{id}/edit '''.&lt;br /&gt;
&lt;br /&gt;
2. If Author already has an account he will be able to view assignment and his team. If Author account does not exists he will be redirect to page '''/users/request_new?role=Student'''.  On this page author can input all the required details to create Author account with role as student. This account will not require any approval from instructor to activate account.&lt;br /&gt;
&lt;br /&gt;
3. After Author account is created, the author can add co-authors to this assignments.&lt;br /&gt;
&lt;br /&gt;
4. Author can login in and navigate to '''assignment -&amp;gt; Your Team''' and invite co-authors for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. Adding co-authors two cases either the co-author account already exists or a new user will be created if co-author account is not present.&lt;br /&gt;
&lt;br /&gt;
6. Author can provide email id of co-authors in invite list of “Your Team” and will be able to view a url on page '''student_teams/view?student_id={id}''', which will be shared by author to his team mates to join this team.&lt;br /&gt;
&lt;br /&gt;
===Files to be changed===&lt;br /&gt;
==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj (bbhardw)&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129112</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129112"/>
		<updated>2019-11-12T03:36:34Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Changes for Conference's authors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
===Existing Solution===&lt;br /&gt;
Conference assignments are the type of assignments open for all the people. We can assign participants to assignments they are participating in, and they can submit their work for it. In today's scenario, participants share google doc, authors and co-authors name with instructor. Then instructor has to add those authors and co-authors as users in expertiza, assign them to the particular assignment.&lt;br /&gt;
&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
This project concentrates on the use of expertiza assignments as conferences/journals. Using these assignments, people can submit their papers and get reviews for the same.&lt;br /&gt;
The focus of this project will be to enable a particular conference participants to create an expertiza account and teams for conference submission by minimizing the inputs required from the application admin/instructor.&lt;br /&gt;
&lt;br /&gt;
==Task to be Accomplished==&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Conference Assignments&lt;br /&gt;
* Author should be able to create account by clicking on the link.   If author doesnt have an account&lt;br /&gt;
* Author should be assigned to a newly created team and should be able to create a link for co-authors to join the team. &lt;br /&gt;
* Co-Authors on clicking on link should be able to join  author's team and should be able to submit work for the assignment.&lt;br /&gt;
&lt;br /&gt;
==Sequence Diagram==&lt;br /&gt;
[[File:SequenceDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Design - The Gruby Details==&lt;br /&gt;
&lt;br /&gt;
===Creating The conference type assignment===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the instructor would be performing to create a conference type assignment along with the changes required:&lt;br /&gt;
&lt;br /&gt;
1. Instructor logs in with his credentials.&lt;br /&gt;
&lt;br /&gt;
2. Instructor creates an assignment by checking a new check box - “Is conference style assignment”, to mark the assignment to be of conference type.&lt;br /&gt;
&lt;br /&gt;
* This checkbox will be introduced in the Assignment’s edit page('''app/views/assignments/edit/_general.html''')&lt;br /&gt;
&lt;br /&gt;
3. Based on the flag, once the assignment is created, a shareable URL will be displayed on the assignments page that can be used by the Instructor to share among students/authors. They will use this URL to be automatically assigned the given assignment.&lt;br /&gt;
&lt;br /&gt;
* If the student does not have an expertiza account, he/she will be asked to create an account and will not be having a need to get it authorized from the admin as only those people will be able to create an account in expertiza with whom the link is shared.&lt;br /&gt;
&lt;br /&gt;
The usage of the url and it’s working will be discussed in the next part.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's authors===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the Author would be performing to create an account:&lt;br /&gt;
&lt;br /&gt;
1. After instructor has created new assignment and a team for this assignment, instructor will be able to see a URL which will be shared by instructor to add pre-existing author or create new account for author using same URL for “conference style assignment”. Create of new account will not require approval from instructor. URL will be visible on page '''/assignments/{id}/edit '''.&lt;br /&gt;
&lt;br /&gt;
2. If Author already has an account he will be able to view assignment and his team. If Author account does not exists he will be redirect to page '''/users/request_new?role=Student'''.  On this page author can input all the required details to create Author account with role as student. This account will not require any approval from instructor to activate account.&lt;br /&gt;
&lt;br /&gt;
3.After Author account is created, the author can add co-authors to this assignments.&lt;br /&gt;
&lt;br /&gt;
===Files to be changed===&lt;br /&gt;
==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj (bbhardw)&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129109</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129109"/>
		<updated>2019-11-12T03:31:59Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Creating The conference type assignment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
===Existing Solution===&lt;br /&gt;
Conference assignments are the type of assignments open for all the people. We can assign participants to assignments they are participating in, and they can submit their work for it. In today's scenario, participants share google doc, authors and co-authors name with instructor. Then instructor has to add those authors and co-authors as users in expertiza, assign them to the particular assignment.&lt;br /&gt;
&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
This project concentrates on the use of expertiza assignments as conferences/journals. Using these assignments, people can submit their papers and get reviews for the same.&lt;br /&gt;
The focus of this project will be to enable a particular conference participants to create an expertiza account and teams for conference submission by minimizing the inputs required from the application admin/instructor.&lt;br /&gt;
&lt;br /&gt;
==Task to be Accomplished==&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Conference Assignments&lt;br /&gt;
* Author should be able to create account by clicking on the link.   If author doesnt have an account&lt;br /&gt;
* Author should be assigned to a newly created team and should be able to create a link for co-authors to join the team. &lt;br /&gt;
* Co-Authors on clicking on link should be able to join  author's team and should be able to submit work for the assignment.&lt;br /&gt;
&lt;br /&gt;
==Sequence Diagram==&lt;br /&gt;
[[File:SequenceDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Design - The Gruby Details==&lt;br /&gt;
&lt;br /&gt;
===Creating The conference type assignment===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the instructor would be performing to create a conference type assignment along with the changes required:&lt;br /&gt;
&lt;br /&gt;
1. Instructor logs in with his credentials.&lt;br /&gt;
&lt;br /&gt;
2. Instructor creates an assignment by checking a new check box - “Is conference style assignment”, to mark the assignment to be of conference type.&lt;br /&gt;
&lt;br /&gt;
* This checkbox will be introduced in the Assignment’s edit page('''app/views/assignments/edit/_general.html''')&lt;br /&gt;
&lt;br /&gt;
3. Based on the flag, once the assignment is created, a shareable URL will be displayed on the assignments page that can be used by the Instructor to share among students/authors. They will use this URL to be automatically assigned the given assignment.&lt;br /&gt;
&lt;br /&gt;
* If the student does not have an expertiza account, he/she will be asked to create an account and will not be having a need to get it authorized from the admin as only those people will be able to create an account in expertiza with whom the link is shared.&lt;br /&gt;
&lt;br /&gt;
The usage of the url and it’s working will be discussed in the next part.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's authors===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the Author would be performing to create an account:&lt;br /&gt;
&lt;br /&gt;
===Files to be changed===&lt;br /&gt;
==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj (bbhardw)&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129107</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129107"/>
		<updated>2019-11-12T03:31:16Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Problem Statement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
===Existing Solution===&lt;br /&gt;
Conference assignments are the type of assignments open for all the people. We can assign participants to assignments they are participating in, and they can submit their work for it. In today's scenario, participants share google doc, authors and co-authors name with instructor. Then instructor has to add those authors and co-authors as users in expertiza, assign them to the particular assignment.&lt;br /&gt;
&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
This project concentrates on the use of expertiza assignments as conferences/journals. Using these assignments, people can submit their papers and get reviews for the same.&lt;br /&gt;
The focus of this project will be to enable a particular conference participants to create an expertiza account and teams for conference submission by minimizing the inputs required from the application admin/instructor.&lt;br /&gt;
&lt;br /&gt;
==Task to be Accomplished==&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Conference Assignments&lt;br /&gt;
* Author should be able to create account by clicking on the link.   If author doesnt have an account&lt;br /&gt;
* Author should be assigned to a newly created team and should be able to create a link for co-authors to join the team. &lt;br /&gt;
* Co-Authors on clicking on link should be able to join  author's team and should be able to submit work for the assignment.&lt;br /&gt;
&lt;br /&gt;
==Sequence Diagram==&lt;br /&gt;
[[File:SequenceDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Design - The Gruby Details==&lt;br /&gt;
&lt;br /&gt;
===Creating The conference type assignment===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the instructor would be performing to create a conference type assignment along with the changes required:&lt;br /&gt;
&lt;br /&gt;
1. Instructor logs in with his credentials.&lt;br /&gt;
&lt;br /&gt;
2. Instructor creates an assignment by checking a new check box - “Is conference style assignment”, to mark the assignment to be of conference type.&lt;br /&gt;
&lt;br /&gt;
* This checkbox will be introduced in the Assignment’s edit page(“app/views/assignments/edit/_general.html”)&lt;br /&gt;
&lt;br /&gt;
3. Based on the flag, once the assignment is created, a shareable URL will be displayed on the assignments page that can be used by the Instructor to share among students/authors. They will use this URL to be automatically assigned the given assignment.&lt;br /&gt;
&lt;br /&gt;
* If the student does not have an expertiza account, he/she will be asked to create an account and will not be having a need to get it authorized from the admin as only those people will be able to create an account in expertiza with whom the link is shared.&lt;br /&gt;
&lt;br /&gt;
The usage of the url and it’s working will be discussed in the next part.&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's authors===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the Author would be performing to create an account:&lt;br /&gt;
&lt;br /&gt;
===Files to be changed===&lt;br /&gt;
==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj (bbhardw)&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129101</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129101"/>
		<updated>2019-11-12T03:28:51Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Problem Statement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
===Existing Solution===&lt;br /&gt;
&lt;br /&gt;
===Proposed Solution===&lt;br /&gt;
This project concentrates on the use of expertiza assignments as conferences/journals. Using these assignments, people can submit their papers and get reviews for the same.&lt;br /&gt;
The focus of this project will be to enable a particular conference participants to create an expertiza account and teams for conference submission by minimizing the inputs required from the application admin/instructor.&lt;br /&gt;
&lt;br /&gt;
==Task to be Accomplished==&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Conference Assignments&lt;br /&gt;
* Author should be able to create account by clicking on the link.   If author doesnt have an account&lt;br /&gt;
* Author should be assigned to a newly created team and should be able to create a link for co-authors to join the team. &lt;br /&gt;
* Co-Authors on clicking on link should be able to join  author's team and should be able to submit work for the assignment.&lt;br /&gt;
&lt;br /&gt;
==Sequence Diagram==&lt;br /&gt;
[[File:SequenceDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Design - The Gruby Details==&lt;br /&gt;
&lt;br /&gt;
===Creating The conference type assignment===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the instructor would be performing to create a conference type assignment along with the changes required:&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's authors===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the Author would be performing to create an account:&lt;br /&gt;
&lt;br /&gt;
===Files to be changed===&lt;br /&gt;
==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj (bbhardw)&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129097</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129097"/>
		<updated>2019-11-12T03:27:52Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Changes for Conference's authors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
This project concentrates on the use of expertiza assignments as conferences/journals. Using these assignments, people can submit their papers and get reviews for the same.&lt;br /&gt;
The focus of this project will be to enable a particular conference participants to create an expertiza account and teams for conference submission by minimizing the inputs required from the application admin/instructor.&lt;br /&gt;
&lt;br /&gt;
==Task to be Accomplished==&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Conference Assignments&lt;br /&gt;
* Author should be able to create account by clicking on the link.   If author doesnt have an account&lt;br /&gt;
* Author should be assigned to a newly created team and should be able to create a link for co-authors to join the team. &lt;br /&gt;
* Co-Authors on clicking on link should be able to join  author's team and should be able to submit work for the assignment.&lt;br /&gt;
&lt;br /&gt;
==Sequence Diagram==&lt;br /&gt;
[[File:SequenceDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Design - The Gruby Details==&lt;br /&gt;
&lt;br /&gt;
===Creating The conference type assignment===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the instructor would be performing to create a conference type assignment along with the changes required:&lt;br /&gt;
&lt;br /&gt;
===Changes for Conference's authors===&lt;br /&gt;
&lt;br /&gt;
Following will be the high level steps the Author would be performing to create an account:&lt;br /&gt;
&lt;br /&gt;
===Files to be changed===&lt;br /&gt;
==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj (bbhardw)&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129058</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=129058"/>
		<updated>2019-11-12T03:10:55Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Sequence Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
This project concentrates on the use of expertiza assignments as conferences/journals. Using these assignments, people can submit their papers and get reviews for the same.&lt;br /&gt;
The focus of this project will be to enable a particular conference participants to create an expertiza account and teams for conference submission by minimizing the inputs required from the application admin/instructor.&lt;br /&gt;
&lt;br /&gt;
==Task to be Accomplished==&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Conference Assignments&lt;br /&gt;
* Author should be able to create account by clicking on the link.   If author doesnt have an account&lt;br /&gt;
* Author should be assigned to a newly created team and should be able to create a link for co-authors to join the team. &lt;br /&gt;
* Co-Authors on clicking on link should be able to join  author's team and should be able to submit work for the assignment.&lt;br /&gt;
&lt;br /&gt;
==Sequence Diagram==&lt;br /&gt;
[[File:SequenceDiagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj (bbhardw)&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:SequenceDiagram.png&amp;diff=129056</id>
		<title>File:SequenceDiagram.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:SequenceDiagram.png&amp;diff=129056"/>
		<updated>2019-11-12T03:10:26Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=128626</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=128626"/>
		<updated>2019-11-11T19:04:35Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
===About Expertiza ===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
Whenever someone is attending any seminar they have to submit their paper for it. Seminar is created as assignments in Expertiza backend. In today's scenario, participants just submit a google doc and share it with instructor. Then instructor has to download the paper and add it in expertiza assignment. Not only that, instructor has to create participants who is author or co- author in expertiza. All these things are done manually, which is not a good way. &lt;br /&gt;
&lt;br /&gt;
===Task to be Accomplished===&lt;br /&gt;
&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Seminar Assignments&lt;br /&gt;
* Author on clicking of link should be able to create account if not already present.&lt;br /&gt;
* Author should be assigned to a newly created dummy team and should be able to create a link for Co-Authors to join the team&lt;br /&gt;
* Co-Authors on clicking on link should be able to join the team of Author's and should be able to contribute on assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sequence Diagram==&lt;br /&gt;
&lt;br /&gt;
[[File:Sequence.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj ()&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Sequence.png&amp;diff=128625</id>
		<title>File:Sequence.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Sequence.png&amp;diff=128625"/>
		<updated>2019-11-11T19:03:19Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=128624</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=128624"/>
		<updated>2019-11-11T19:02:52Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
===About Expertiza ===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
Whenever someone is attending any seminar they have to submit their paper for it. Seminar is created as assignments in Expertiza backend. In today's scenario, participants just submit a google doc and share it with instructor. Then instructor has to download the paper and add it in expertiza assignment. Not only that, instructor has to create participants who is author or co- author in expertiza. All these things are done manually, which is not a good way. &lt;br /&gt;
&lt;br /&gt;
===Task to be Accomplished===&lt;br /&gt;
&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Seminar Assignments&lt;br /&gt;
* Author on clicking of link should be able to create account if not already present.&lt;br /&gt;
* Author should be assigned to a newly created dummy team and should be able to create a link for Co-Authors to join the team&lt;br /&gt;
* Co-Authors on clicking on link should be able to join the team of Author's and should be able to contribute on assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj ()&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=128623</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=128623"/>
		<updated>2019-11-11T19:02:14Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
===About Expertiza ===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
Whenever someone is attending any seminar they have to submit their paper for it. Seminar is created as assignments in Expertiza backend. In today's scenario, participants just submit a google doc and share it with instructor. Then instructor has to download the paper and add it in expertiza assignment. Not only that, instructor has to create participants who is author or co- author in expertiza. All these things are done manually, which is not a good way. &lt;br /&gt;
The following tasks is to be  accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Seminar Assignments&lt;br /&gt;
* Author on clicking of link should be able to create account if not already present.&lt;br /&gt;
* Author should be assigned to a newly created dummy team and should be able to create a link for Co-Authors to join the team&lt;br /&gt;
* Co-Authors on clicking on link should be able to join the team of Author's and should be able to contribute on assignment&lt;br /&gt;
&lt;br /&gt;
===About Tagging===&lt;br /&gt;
Expertiza has a feature of peer review where other teams can provide feedback on student's work. There is also another feature of &amp;quot;Tags&amp;quot;, where a student can answer if the feedback provided were helpful or not. Tags can vary from assignment to assignment but the main motive of it is to provide information on whether the feedback provides helpful information for student's assignment. The picture below shows an example of tags.&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj ()&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=128621</id>
		<title>CSC/ECE 517 Fall 2019 - E1953. Tagging report for student</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=128621"/>
		<updated>2019-11-11T18:59:25Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CSC/ECE 517 Fall 2019 - E1953. Tagging report for student&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
===About Expertiza ===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were  accomplished in this project:&lt;br /&gt;
	&lt;br /&gt;
* If tagging is enabled, number of total tags per round is shown on student's score page&lt;br /&gt;
* Implemented feature which shows number of tags student have entered&lt;br /&gt;
* Implemented feature to show number of tags entered and total number of tags in Assignment page.&lt;br /&gt;
* Implemented feature to show tagging counts dynamically when student change tagging type in score page&lt;br /&gt;
* Added RSPEC testcases for testing changes done for tagging&lt;br /&gt;
&lt;br /&gt;
===About Tagging===&lt;br /&gt;
Expertiza has a feature of peer review where other teams can provide feedback on student's work. There is also another feature of &amp;quot;Tags&amp;quot;, where a student can answer if the feedback provided were helpful or not. Tags can vary from assignment to assignment but the main motive of it is to provide information on whether the feedback provides helpful information for student's assignment. The picture below shows an example of tags. &lt;br /&gt;
&lt;br /&gt;
[[File:Example-tags.png]]&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
For a particular assignment, there may be a lot of questions and hence multiple feedback. Students might miss a few tags and they might go unanswered. This feature will provide students to keep track of answered tags and show them how many tags have they answered out of total tags on the page.&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
For counting, we are primarily concerned with two numbers: the number of possible tags for an assignment and the number of completed tags for an assignment. The latter is easy to calculate as it's directly stored as AnswerTags. The former is more difficult: possible tags are stored as TagPromptDeployments which do not have a 1:1 correspondence to the number of prompts the user sees on their page.&lt;br /&gt;
&lt;br /&gt;
[[File:E1953_UML.png]]&lt;br /&gt;
&lt;br /&gt;
The green classes are used to count the number of tags done, the red classes are used to count the number of tags possible, and the yellow classes are used to calculate both counts. All classes help to narrow the scope to a specific user and assignment.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Task 1 : Count answered tags in an assignment on Assignment Homepage ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
On clicking of particular Assignment, student can see his/her teams, work, scores, etc. There is no feature which allows student to show how many of the review tags has he/she answered on this page. This task implements this feature where student can see answered tags with respect to total tags in Assignment page. &lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/controllers/student_task_controller.rb'''&lt;br /&gt;
- The following code counts the number of Tags present in an assignment and total number of answered tags in that particular assignment. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @completed_tags = 0&lt;br /&gt;
    @total_tags = 0&lt;br /&gt;
    vmlist.each do |vm|&lt;br /&gt;
      vm.list_of_rows.each do |r|&lt;br /&gt;
        r.score_row.each do |row|&lt;br /&gt;
          vm_prompts = row.vm_prompts.select {|prompt| prompt.tag_dep.tag_prompt.control_type.downcase != &amp;quot;checkbox&amp;quot;}&lt;br /&gt;
          @total_tags += vm_prompts.count&lt;br /&gt;
          vm_prompts.each do |vm_prompt|&lt;br /&gt;
            answer_tag = AnswerTag.where(tag_prompt_deployment_id: vm_prompt.tag_dep, user_id: @participant.user_id, answer: vm_prompt.answer).first&lt;br /&gt;
            if !answer_tag.nil? and answer_tag.value != &amp;quot;0&amp;quot;&lt;br /&gt;
              @completed_tags += 1&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Task 2 : Count answered tags in an assignment per rounds on Summary Report Page ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
On clicking of particular Assignment&amp;gt;Your Scores&amp;gt; student can see his/her score. Student can also see all the reviews per rounds in particular assignment. This new feature will allow student to see number of answered tags per round with respect to number of total tags present in particular round &lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/controllers/grades_controller.rb'''&lt;br /&gt;
- The following code counts the number of Tags present in a round and total number of answered tags in that particular round. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @vmlist.each do |vm|&lt;br /&gt;
        if vm.round == @round&lt;br /&gt;
          vm.list_of_rows.each do |r|&lt;br /&gt;
            r.score_row.each do |row|&lt;br /&gt;
              vm_prompts = row.vm_prompts.select {|prompt| prompt.tag_dep.tag_prompt.control_type.downcase != &amp;quot;checkbox&amp;quot;}&lt;br /&gt;
              if vm_prompts.count &amp;gt; 0&lt;br /&gt;
                @total_tags += vm_prompts.count&lt;br /&gt;
                vm_prompts.each do |vm_prompt|&lt;br /&gt;
                  answer_tag = AnswerTag.where(tag_prompt_deployment_id: vm_prompt.tag_dep, user_id: @participant.user_id, answer: vm_prompt.answer).first&lt;br /&gt;
                  if !answer_tag.nil? and answer_tag.value != &amp;quot;0&amp;quot;&lt;br /&gt;
                    @completed_tags += 1&lt;br /&gt;
                  end&lt;br /&gt;
                end&lt;br /&gt;
              end&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
      @total_tags_array.append(@total_tags)&lt;br /&gt;
      @completed_tags_array.append(@completed_tags)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Task 3 : Per round tag counts should be automatically updated as soon as tags are changed ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
If a user changes their tags, the page formerly needed to be refreshed in order to display the correct counts. This functionality ensures that the tag counts always accurately reflect the results on the page.&lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/assets/javascripts/answer_tags.js'''&lt;br /&gt;
- The following code correctly increments/decrements the tag count on the page based on the user's action.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
update_tag_count = function(tag_prompt, round_number) {&lt;br /&gt;
    //Get the previous value of this tag prompt from an HTML attribute&lt;br /&gt;
    var old_value =  tag_prompt.getAttribute('data-prev_value')&lt;br /&gt;
    //This is the new value of the tag prompt&lt;br /&gt;
    var new_value = tag_prompt.value&lt;br /&gt;
    //Store the new value back into the HTML attribute&lt;br /&gt;
    tag_prompt.setAttribute('data-prev_value', new_value)&lt;br /&gt;
    //This is the current tag count for the round this tag is in&lt;br /&gt;
    var current_count = parseInt(document.getElementById('tag_counts_' + (round_number)).innerHTML);&lt;br /&gt;
    if(old_value != &amp;quot;0&amp;quot; &amp;amp;&amp;amp; new_value == &amp;quot;0&amp;quot;) {&lt;br /&gt;
      //The user has reset the value of this tag. Decrement the tag count&lt;br /&gt;
      document.getElementById('tag_counts_' + round_number).innerHTML = current_count - 1;&lt;br /&gt;
    } else if(old_value == &amp;quot;0&amp;quot; &amp;amp;&amp;amp; new_value != &amp;quot;0&amp;quot;){&lt;br /&gt;
      //The user has set the value of this tag to something meaningful. Increment the count&lt;br /&gt;
      document.getElementById('tag_counts_' + round_number).innerHTML = current_count + 1;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
[[File:E1953_FlowChart2.png]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== RSpec Tests ===&lt;br /&gt;
Please find below RSpec Test cases for this feature&lt;br /&gt;
&lt;br /&gt;
===Issue 1: Show tagging count for Assignment Homepage===&lt;br /&gt;
====spec/controllers/student_task_controller_spec.rb====&lt;br /&gt;
Follow the below steps to Verify the fix  for this issue:&lt;br /&gt;
&lt;br /&gt;
'''Test Case 1'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
it &amp;quot;reports zero completed tags correctly&amp;quot; do&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  params = {id: 1}&lt;br /&gt;
  get :view, params&lt;br /&gt;
  expect(controller.instance_variable_get(:@participant)).to eq(participant)&lt;br /&gt;
  expect(assigns(:completed_tags)).to eq(0)&lt;br /&gt;
  expect(assigns(:total_tags)).to eq(6)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Test Case 2'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
it &amp;quot;reports some completed tags correctly&amp;quot; do&lt;br /&gt;
  answer_tags = [AnswerTag.new(value: 0), AnswerTag.new(value: 1), AnswerTag.new(value: -1), AnswerTag.new(value: 1),&lt;br /&gt;
  AnswerTag.new(value: 1), AnswerTag.new(value: 1), AnswerTag.new(value: -1), AnswerTag.new(value: 0),]&lt;br /&gt;
        &lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer2).and_return([answer_tags[0]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer2).and_return([answer_tags[1]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer2).and_return([answer_tags[2]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer2).and_return([answer_tags[3]])&lt;br /&gt;
       &lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer1).and_return([answer_tags[4]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer1).and_return([answer_tags[5]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer1).and_return([answer_tags[6]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer1).and_return([answer_tags[7]])&lt;br /&gt;
  params = {id: 1}&lt;br /&gt;
  get :view, params&lt;br /&gt;
  expect(controller.instance_variable_get(:@participant)).to eq(participant)&lt;br /&gt;
  expect(assigns(:completed_tags)).to eq(5)&lt;br /&gt;
  expect(assigns(:total_tags)).to eq(6)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Issue 2: Show tagging count for review page===&lt;br /&gt;
====spec/controllers/grades_controller_spec.rb====&lt;br /&gt;
Follow the below steps to Verify the fix  for this issue:&lt;br /&gt;
&lt;br /&gt;
'''Test Case 1'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
it &amp;quot;reports zero completed tags correctly&amp;quot; do&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  params = {id: 1}&lt;br /&gt;
  get :view_team, params&lt;br /&gt;
  expect(controller.instance_variable_get(:@participant)).to eq(participant)&lt;br /&gt;
  expect(assigns(:completed_tags)).to eq(0)&lt;br /&gt;
  expect(assigns(:total_tags)).to eq(6)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Test Case 2'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
it &amp;quot;reports some completed tags correctly&amp;quot; do&lt;br /&gt;
  answer_tags = [AnswerTag.new(value: 0), AnswerTag.new(value: 1), AnswerTag.new(value: -1), AnswerTag.new(value: 1),&lt;br /&gt;
  AnswerTag.new(value: 1), AnswerTag.new(value: 1), AnswerTag.new(value: -1), AnswerTag.new(value: 0),]&lt;br /&gt;
        &lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer2).and_return([answer_tags[0]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer2).and_return([answer_tags[1]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer2).and_return([answer_tags[2]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer2).and_return([answer_tags[3]])&lt;br /&gt;
       &lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer1).and_return([answer_tags[4]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer1).and_return([answer_tags[5]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer1).and_return([answer_tags[6]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer1).and_return([answer_tags[7]])&lt;br /&gt;
  params = {id: 1}&lt;br /&gt;
  get :view_team, params&lt;br /&gt;
  expect(controller.instance_variable_get(:@participant)).to eq(participant)&lt;br /&gt;
  expect(assigns(:completed_tags)).to eq(5)&lt;br /&gt;
  expect(assigns(:total_tags)).to eq(6)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Regression Tests ===&lt;br /&gt;
Since new changes were added to existing function, we ran the existing tests to ensure none of them were failing.&lt;br /&gt;
&lt;br /&gt;
=== Manual Tests ===&lt;br /&gt;
We needed to check if the feature implemented were resulting the expected behavior. To test this we followed following steps:-&lt;br /&gt;
&lt;br /&gt;
1. Login as a student&lt;br /&gt;
&lt;br /&gt;
2. Select Assignment for Assignment Home Page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 1'''&lt;br /&gt;
&lt;br /&gt;
This page should show number of tags completed and total tags present including all the rounds in that particular assignment. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 2'''&lt;br /&gt;
&lt;br /&gt;
On selecting Your Scores on Student Task page, Each round should show Review Tagged Column. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 3'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should consist of tags completed and total tags count for that particular round. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 4'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should not consist of tags completed in all rounds and total tags count. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 5'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should dynamically increase or decrease tag count when user change their tagging. ✓&lt;br /&gt;
&lt;br /&gt;
==Deployed Example==&lt;br /&gt;
Below are instructions for navigating through expertiza to see the review tags in action.&lt;br /&gt;
&lt;br /&gt;
'''1.''' Go to http://152.46.18.192:8080/ and log in as {username: student7552 password: password}. &lt;br /&gt;
&lt;br /&gt;
'''2.''' After you log in if you are not at the assignments landing page (152.46.18.192:8080//student_task/list) click on Assignments to navigate there. &lt;br /&gt;
&lt;br /&gt;
'''3.''' Click on &amp;quot;Final project (and design doc)&amp;quot; from the list of assignments in the table at the bottom of the page. &lt;br /&gt;
&lt;br /&gt;
'''4.''' Behold the tag counter next to the bullet labeled &amp;quot;Your scores&amp;quot;.  It reads (You have tagged the available tags completed / total available reviews). &lt;br /&gt;
&lt;br /&gt;
[[File:Assignment-page-tags.png]]&lt;br /&gt;
&lt;br /&gt;
'''5'''. Further, click on &amp;quot;Your scores&amp;quot;. On the next page that shows up, click on a row in the table to see the tags. Notice in the last column of the header of the table is a cell containing the available tags completed / total available tags. &lt;br /&gt;
&lt;br /&gt;
[[FIle:Per-round-tags.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
'''6.''' After clicking on a row to reveal tags drag the blue square towards 'No,' 'Yes,' or the middle. Observe that the tags left / total tags has updated.&lt;br /&gt;
&lt;br /&gt;
'''7.''' To observe the new per round tagging capabilities log out and then log in as {username: student8115 password: password}. &lt;br /&gt;
&lt;br /&gt;
'''8.''' Select the first Program 2 from the list of assignments. In the next page click on &amp;quot;Your scores&amp;quot; as in step 4 above. Scroll down and behold tagging statistics for each round in the last column of the table headers.&lt;br /&gt;
&lt;br /&gt;
[[FIle:Per-round-tagging2.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
Mentor -Akanksha Mohan&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Spencer Yoder (smyoder)&lt;br /&gt;
* Mark Trawick (mtrawic)&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Github Repository for Expertiza]&lt;br /&gt;
# [http://wiki.expertiza.ncsu.edu/index.php/Documentation_on_Database_Tables Expertiza Documentation on Database Tables]&lt;br /&gt;
# [https://guides.rubyonrails.org/api_app.html Rails Guide Documentation]&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=128620</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=128620"/>
		<updated>2019-11-11T18:57:02Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
===About Expertiza ===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks is to be  accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Seminar Assignments&lt;br /&gt;
* Author on clicking of link should be able to create account if not already present.&lt;br /&gt;
* Implemented feature to show number of tags entered and total number of tags in Assignment page.&lt;br /&gt;
* Implemented feature to show tagging counts dynamically when student change tagging type in score page&lt;br /&gt;
* Added RSPEC testcases for testing changes done for tagging&lt;br /&gt;
&lt;br /&gt;
===About Tagging===&lt;br /&gt;
Expertiza has a feature of peer review where other teams can provide feedback on student's work. There is also another feature of &amp;quot;Tags&amp;quot;, where a student can answer if the feedback provided were helpful or not. Tags can vary from assignment to assignment but the main motive of it is to provide information on whether the feedback provides helpful information for student's assignment. The picture below shows an example of tags. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj ()&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=128619</id>
		<title>CSC/ECE 517 Fall 2019 - E1953. Tagging report for student</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=128619"/>
		<updated>2019-11-11T18:56:49Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CSC/ECE 517 Fall 2019 - E1953. Tagging report for student&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
===About Expertiza ===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks is to be  accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Implemented feature to show number of tags entered and total number of tags in Assignment page.&lt;br /&gt;
* Implemented feature to show tagging counts dynamically when student change tagging type in score page&lt;br /&gt;
* Added RSPEC testcases for testing changes done for tagging&lt;br /&gt;
&lt;br /&gt;
===About Tagging===&lt;br /&gt;
Expertiza has a feature of peer review where other teams can provide feedback on student's work. There is also another feature of &amp;quot;Tags&amp;quot;, where a student can answer if the feedback provided were helpful or not. Tags can vary from assignment to assignment but the main motive of it is to provide information on whether the feedback provides helpful information for student's assignment. The picture below shows an example of tags. &lt;br /&gt;
&lt;br /&gt;
[[File:Example-tags.png]]&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
For a particular assignment, there may be a lot of questions and hence multiple feedback. Students might miss a few tags and they might go unanswered. This feature will provide students to keep track of answered tags and show them how many tags have they answered out of total tags on the page.&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
For counting, we are primarily concerned with two numbers: the number of possible tags for an assignment and the number of completed tags for an assignment. The latter is easy to calculate as it's directly stored as AnswerTags. The former is more difficult: possible tags are stored as TagPromptDeployments which do not have a 1:1 correspondence to the number of prompts the user sees on their page.&lt;br /&gt;
&lt;br /&gt;
[[File:E1953_UML.png]]&lt;br /&gt;
&lt;br /&gt;
The green classes are used to count the number of tags done, the red classes are used to count the number of tags possible, and the yellow classes are used to calculate both counts. All classes help to narrow the scope to a specific user and assignment.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Task 1 : Count answered tags in an assignment on Assignment Homepage ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
On clicking of particular Assignment, student can see his/her teams, work, scores, etc. There is no feature which allows student to show how many of the review tags has he/she answered on this page. This task implements this feature where student can see answered tags with respect to total tags in Assignment page. &lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/controllers/student_task_controller.rb'''&lt;br /&gt;
- The following code counts the number of Tags present in an assignment and total number of answered tags in that particular assignment. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @completed_tags = 0&lt;br /&gt;
    @total_tags = 0&lt;br /&gt;
    vmlist.each do |vm|&lt;br /&gt;
      vm.list_of_rows.each do |r|&lt;br /&gt;
        r.score_row.each do |row|&lt;br /&gt;
          vm_prompts = row.vm_prompts.select {|prompt| prompt.tag_dep.tag_prompt.control_type.downcase != &amp;quot;checkbox&amp;quot;}&lt;br /&gt;
          @total_tags += vm_prompts.count&lt;br /&gt;
          vm_prompts.each do |vm_prompt|&lt;br /&gt;
            answer_tag = AnswerTag.where(tag_prompt_deployment_id: vm_prompt.tag_dep, user_id: @participant.user_id, answer: vm_prompt.answer).first&lt;br /&gt;
            if !answer_tag.nil? and answer_tag.value != &amp;quot;0&amp;quot;&lt;br /&gt;
              @completed_tags += 1&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Task 2 : Count answered tags in an assignment per rounds on Summary Report Page ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
On clicking of particular Assignment&amp;gt;Your Scores&amp;gt; student can see his/her score. Student can also see all the reviews per rounds in particular assignment. This new feature will allow student to see number of answered tags per round with respect to number of total tags present in particular round &lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/controllers/grades_controller.rb'''&lt;br /&gt;
- The following code counts the number of Tags present in a round and total number of answered tags in that particular round. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @vmlist.each do |vm|&lt;br /&gt;
        if vm.round == @round&lt;br /&gt;
          vm.list_of_rows.each do |r|&lt;br /&gt;
            r.score_row.each do |row|&lt;br /&gt;
              vm_prompts = row.vm_prompts.select {|prompt| prompt.tag_dep.tag_prompt.control_type.downcase != &amp;quot;checkbox&amp;quot;}&lt;br /&gt;
              if vm_prompts.count &amp;gt; 0&lt;br /&gt;
                @total_tags += vm_prompts.count&lt;br /&gt;
                vm_prompts.each do |vm_prompt|&lt;br /&gt;
                  answer_tag = AnswerTag.where(tag_prompt_deployment_id: vm_prompt.tag_dep, user_id: @participant.user_id, answer: vm_prompt.answer).first&lt;br /&gt;
                  if !answer_tag.nil? and answer_tag.value != &amp;quot;0&amp;quot;&lt;br /&gt;
                    @completed_tags += 1&lt;br /&gt;
                  end&lt;br /&gt;
                end&lt;br /&gt;
              end&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
      @total_tags_array.append(@total_tags)&lt;br /&gt;
      @completed_tags_array.append(@completed_tags)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Task 3 : Per round tag counts should be automatically updated as soon as tags are changed ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
If a user changes their tags, the page formerly needed to be refreshed in order to display the correct counts. This functionality ensures that the tag counts always accurately reflect the results on the page.&lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/assets/javascripts/answer_tags.js'''&lt;br /&gt;
- The following code correctly increments/decrements the tag count on the page based on the user's action.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
update_tag_count = function(tag_prompt, round_number) {&lt;br /&gt;
    //Get the previous value of this tag prompt from an HTML attribute&lt;br /&gt;
    var old_value =  tag_prompt.getAttribute('data-prev_value')&lt;br /&gt;
    //This is the new value of the tag prompt&lt;br /&gt;
    var new_value = tag_prompt.value&lt;br /&gt;
    //Store the new value back into the HTML attribute&lt;br /&gt;
    tag_prompt.setAttribute('data-prev_value', new_value)&lt;br /&gt;
    //This is the current tag count for the round this tag is in&lt;br /&gt;
    var current_count = parseInt(document.getElementById('tag_counts_' + (round_number)).innerHTML);&lt;br /&gt;
    if(old_value != &amp;quot;0&amp;quot; &amp;amp;&amp;amp; new_value == &amp;quot;0&amp;quot;) {&lt;br /&gt;
      //The user has reset the value of this tag. Decrement the tag count&lt;br /&gt;
      document.getElementById('tag_counts_' + round_number).innerHTML = current_count - 1;&lt;br /&gt;
    } else if(old_value == &amp;quot;0&amp;quot; &amp;amp;&amp;amp; new_value != &amp;quot;0&amp;quot;){&lt;br /&gt;
      //The user has set the value of this tag to something meaningful. Increment the count&lt;br /&gt;
      document.getElementById('tag_counts_' + round_number).innerHTML = current_count + 1;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
[[File:E1953_FlowChart2.png]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== RSpec Tests ===&lt;br /&gt;
Please find below RSpec Test cases for this feature&lt;br /&gt;
&lt;br /&gt;
===Issue 1: Show tagging count for Assignment Homepage===&lt;br /&gt;
====spec/controllers/student_task_controller_spec.rb====&lt;br /&gt;
Follow the below steps to Verify the fix  for this issue:&lt;br /&gt;
&lt;br /&gt;
'''Test Case 1'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
it &amp;quot;reports zero completed tags correctly&amp;quot; do&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  params = {id: 1}&lt;br /&gt;
  get :view, params&lt;br /&gt;
  expect(controller.instance_variable_get(:@participant)).to eq(participant)&lt;br /&gt;
  expect(assigns(:completed_tags)).to eq(0)&lt;br /&gt;
  expect(assigns(:total_tags)).to eq(6)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Test Case 2'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
it &amp;quot;reports some completed tags correctly&amp;quot; do&lt;br /&gt;
  answer_tags = [AnswerTag.new(value: 0), AnswerTag.new(value: 1), AnswerTag.new(value: -1), AnswerTag.new(value: 1),&lt;br /&gt;
  AnswerTag.new(value: 1), AnswerTag.new(value: 1), AnswerTag.new(value: -1), AnswerTag.new(value: 0),]&lt;br /&gt;
        &lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer2).and_return([answer_tags[0]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer2).and_return([answer_tags[1]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer2).and_return([answer_tags[2]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer2).and_return([answer_tags[3]])&lt;br /&gt;
       &lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer1).and_return([answer_tags[4]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer1).and_return([answer_tags[5]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer1).and_return([answer_tags[6]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer1).and_return([answer_tags[7]])&lt;br /&gt;
  params = {id: 1}&lt;br /&gt;
  get :view, params&lt;br /&gt;
  expect(controller.instance_variable_get(:@participant)).to eq(participant)&lt;br /&gt;
  expect(assigns(:completed_tags)).to eq(5)&lt;br /&gt;
  expect(assigns(:total_tags)).to eq(6)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Issue 2: Show tagging count for review page===&lt;br /&gt;
====spec/controllers/grades_controller_spec.rb====&lt;br /&gt;
Follow the below steps to Verify the fix  for this issue:&lt;br /&gt;
&lt;br /&gt;
'''Test Case 1'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
it &amp;quot;reports zero completed tags correctly&amp;quot; do&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  params = {id: 1}&lt;br /&gt;
  get :view_team, params&lt;br /&gt;
  expect(controller.instance_variable_get(:@participant)).to eq(participant)&lt;br /&gt;
  expect(assigns(:completed_tags)).to eq(0)&lt;br /&gt;
  expect(assigns(:total_tags)).to eq(6)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Test Case 2'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
it &amp;quot;reports some completed tags correctly&amp;quot; do&lt;br /&gt;
  answer_tags = [AnswerTag.new(value: 0), AnswerTag.new(value: 1), AnswerTag.new(value: -1), AnswerTag.new(value: 1),&lt;br /&gt;
  AnswerTag.new(value: 1), AnswerTag.new(value: 1), AnswerTag.new(value: -1), AnswerTag.new(value: 0),]&lt;br /&gt;
        &lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer2).and_return([answer_tags[0]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer2).and_return([answer_tags[1]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer2).and_return([answer_tags[2]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer2).and_return([answer_tags[3]])&lt;br /&gt;
       &lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer1).and_return([answer_tags[4]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer1).and_return([answer_tags[5]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer1).and_return([answer_tags[6]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer1).and_return([answer_tags[7]])&lt;br /&gt;
  params = {id: 1}&lt;br /&gt;
  get :view_team, params&lt;br /&gt;
  expect(controller.instance_variable_get(:@participant)).to eq(participant)&lt;br /&gt;
  expect(assigns(:completed_tags)).to eq(5)&lt;br /&gt;
  expect(assigns(:total_tags)).to eq(6)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Regression Tests ===&lt;br /&gt;
Since new changes were added to existing function, we ran the existing tests to ensure none of them were failing.&lt;br /&gt;
&lt;br /&gt;
=== Manual Tests ===&lt;br /&gt;
We needed to check if the feature implemented were resulting the expected behavior. To test this we followed following steps:-&lt;br /&gt;
&lt;br /&gt;
1. Login as a student&lt;br /&gt;
&lt;br /&gt;
2. Select Assignment for Assignment Home Page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 1'''&lt;br /&gt;
&lt;br /&gt;
This page should show number of tags completed and total tags present including all the rounds in that particular assignment. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 2'''&lt;br /&gt;
&lt;br /&gt;
On selecting Your Scores on Student Task page, Each round should show Review Tagged Column. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 3'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should consist of tags completed and total tags count for that particular round. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 4'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should not consist of tags completed in all rounds and total tags count. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 5'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should dynamically increase or decrease tag count when user change their tagging. ✓&lt;br /&gt;
&lt;br /&gt;
==Deployed Example==&lt;br /&gt;
Below are instructions for navigating through expertiza to see the review tags in action.&lt;br /&gt;
&lt;br /&gt;
'''1.''' Go to http://152.46.18.192:8080/ and log in as {username: student7552 password: password}. &lt;br /&gt;
&lt;br /&gt;
'''2.''' After you log in if you are not at the assignments landing page (152.46.18.192:8080//student_task/list) click on Assignments to navigate there. &lt;br /&gt;
&lt;br /&gt;
'''3.''' Click on &amp;quot;Final project (and design doc)&amp;quot; from the list of assignments in the table at the bottom of the page. &lt;br /&gt;
&lt;br /&gt;
'''4.''' Behold the tag counter next to the bullet labeled &amp;quot;Your scores&amp;quot;.  It reads (You have tagged the available tags completed / total available reviews). &lt;br /&gt;
&lt;br /&gt;
[[File:Assignment-page-tags.png]]&lt;br /&gt;
&lt;br /&gt;
'''5'''. Further, click on &amp;quot;Your scores&amp;quot;. On the next page that shows up, click on a row in the table to see the tags. Notice in the last column of the header of the table is a cell containing the available tags completed / total available tags. &lt;br /&gt;
&lt;br /&gt;
[[FIle:Per-round-tags.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
'''6.''' After clicking on a row to reveal tags drag the blue square towards 'No,' 'Yes,' or the middle. Observe that the tags left / total tags has updated.&lt;br /&gt;
&lt;br /&gt;
'''7.''' To observe the new per round tagging capabilities log out and then log in as {username: student8115 password: password}. &lt;br /&gt;
&lt;br /&gt;
'''8.''' Select the first Program 2 from the list of assignments. In the next page click on &amp;quot;Your scores&amp;quot; as in step 4 above. Scroll down and behold tagging statistics for each round in the last column of the table headers.&lt;br /&gt;
&lt;br /&gt;
[[FIle:Per-round-tagging2.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
Mentor -Akanksha Mohan&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Spencer Yoder (smyoder)&lt;br /&gt;
* Mark Trawick (mtrawic)&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Github Repository for Expertiza]&lt;br /&gt;
# [http://wiki.expertiza.ncsu.edu/index.php/Documentation_on_Database_Tables Expertiza Documentation on Database Tables]&lt;br /&gt;
# [https://guides.rubyonrails.org/api_app.html Rails Guide Documentation]&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=128618</id>
		<title>CSC/ECE 517 Fall 2019 - E1953. Tagging report for student</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=128618"/>
		<updated>2019-11-11T18:56:20Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CSC/ECE 517 Fall 2019 - E1953. Tagging report for student&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
===About Expertiza ===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks is to be  accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Instructor should be able to create new link for Authors to join the Seminar Assignments&lt;br /&gt;
* Author on clicking of link should be able to create account if not already present.&lt;br /&gt;
* Implemented feature to show number of tags entered and total number of tags in Assignment page.&lt;br /&gt;
* Implemented feature to show tagging counts dynamically when student change tagging type in score page&lt;br /&gt;
* Added RSPEC testcases for testing changes done for tagging&lt;br /&gt;
&lt;br /&gt;
===About Tagging===&lt;br /&gt;
Expertiza has a feature of peer review where other teams can provide feedback on student's work. There is also another feature of &amp;quot;Tags&amp;quot;, where a student can answer if the feedback provided were helpful or not. Tags can vary from assignment to assignment but the main motive of it is to provide information on whether the feedback provides helpful information for student's assignment. The picture below shows an example of tags. &lt;br /&gt;
&lt;br /&gt;
[[File:Example-tags.png]]&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
For a particular assignment, there may be a lot of questions and hence multiple feedback. Students might miss a few tags and they might go unanswered. This feature will provide students to keep track of answered tags and show them how many tags have they answered out of total tags on the page.&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
For counting, we are primarily concerned with two numbers: the number of possible tags for an assignment and the number of completed tags for an assignment. The latter is easy to calculate as it's directly stored as AnswerTags. The former is more difficult: possible tags are stored as TagPromptDeployments which do not have a 1:1 correspondence to the number of prompts the user sees on their page.&lt;br /&gt;
&lt;br /&gt;
[[File:E1953_UML.png]]&lt;br /&gt;
&lt;br /&gt;
The green classes are used to count the number of tags done, the red classes are used to count the number of tags possible, and the yellow classes are used to calculate both counts. All classes help to narrow the scope to a specific user and assignment.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Task 1 : Count answered tags in an assignment on Assignment Homepage ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
On clicking of particular Assignment, student can see his/her teams, work, scores, etc. There is no feature which allows student to show how many of the review tags has he/she answered on this page. This task implements this feature where student can see answered tags with respect to total tags in Assignment page. &lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/controllers/student_task_controller.rb'''&lt;br /&gt;
- The following code counts the number of Tags present in an assignment and total number of answered tags in that particular assignment. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @completed_tags = 0&lt;br /&gt;
    @total_tags = 0&lt;br /&gt;
    vmlist.each do |vm|&lt;br /&gt;
      vm.list_of_rows.each do |r|&lt;br /&gt;
        r.score_row.each do |row|&lt;br /&gt;
          vm_prompts = row.vm_prompts.select {|prompt| prompt.tag_dep.tag_prompt.control_type.downcase != &amp;quot;checkbox&amp;quot;}&lt;br /&gt;
          @total_tags += vm_prompts.count&lt;br /&gt;
          vm_prompts.each do |vm_prompt|&lt;br /&gt;
            answer_tag = AnswerTag.where(tag_prompt_deployment_id: vm_prompt.tag_dep, user_id: @participant.user_id, answer: vm_prompt.answer).first&lt;br /&gt;
            if !answer_tag.nil? and answer_tag.value != &amp;quot;0&amp;quot;&lt;br /&gt;
              @completed_tags += 1&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Task 2 : Count answered tags in an assignment per rounds on Summary Report Page ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
On clicking of particular Assignment&amp;gt;Your Scores&amp;gt; student can see his/her score. Student can also see all the reviews per rounds in particular assignment. This new feature will allow student to see number of answered tags per round with respect to number of total tags present in particular round &lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/controllers/grades_controller.rb'''&lt;br /&gt;
- The following code counts the number of Tags present in a round and total number of answered tags in that particular round. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @vmlist.each do |vm|&lt;br /&gt;
        if vm.round == @round&lt;br /&gt;
          vm.list_of_rows.each do |r|&lt;br /&gt;
            r.score_row.each do |row|&lt;br /&gt;
              vm_prompts = row.vm_prompts.select {|prompt| prompt.tag_dep.tag_prompt.control_type.downcase != &amp;quot;checkbox&amp;quot;}&lt;br /&gt;
              if vm_prompts.count &amp;gt; 0&lt;br /&gt;
                @total_tags += vm_prompts.count&lt;br /&gt;
                vm_prompts.each do |vm_prompt|&lt;br /&gt;
                  answer_tag = AnswerTag.where(tag_prompt_deployment_id: vm_prompt.tag_dep, user_id: @participant.user_id, answer: vm_prompt.answer).first&lt;br /&gt;
                  if !answer_tag.nil? and answer_tag.value != &amp;quot;0&amp;quot;&lt;br /&gt;
                    @completed_tags += 1&lt;br /&gt;
                  end&lt;br /&gt;
                end&lt;br /&gt;
              end&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
      @total_tags_array.append(@total_tags)&lt;br /&gt;
      @completed_tags_array.append(@completed_tags)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Task 3 : Per round tag counts should be automatically updated as soon as tags are changed ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
If a user changes their tags, the page formerly needed to be refreshed in order to display the correct counts. This functionality ensures that the tag counts always accurately reflect the results on the page.&lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/assets/javascripts/answer_tags.js'''&lt;br /&gt;
- The following code correctly increments/decrements the tag count on the page based on the user's action.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
update_tag_count = function(tag_prompt, round_number) {&lt;br /&gt;
    //Get the previous value of this tag prompt from an HTML attribute&lt;br /&gt;
    var old_value =  tag_prompt.getAttribute('data-prev_value')&lt;br /&gt;
    //This is the new value of the tag prompt&lt;br /&gt;
    var new_value = tag_prompt.value&lt;br /&gt;
    //Store the new value back into the HTML attribute&lt;br /&gt;
    tag_prompt.setAttribute('data-prev_value', new_value)&lt;br /&gt;
    //This is the current tag count for the round this tag is in&lt;br /&gt;
    var current_count = parseInt(document.getElementById('tag_counts_' + (round_number)).innerHTML);&lt;br /&gt;
    if(old_value != &amp;quot;0&amp;quot; &amp;amp;&amp;amp; new_value == &amp;quot;0&amp;quot;) {&lt;br /&gt;
      //The user has reset the value of this tag. Decrement the tag count&lt;br /&gt;
      document.getElementById('tag_counts_' + round_number).innerHTML = current_count - 1;&lt;br /&gt;
    } else if(old_value == &amp;quot;0&amp;quot; &amp;amp;&amp;amp; new_value != &amp;quot;0&amp;quot;){&lt;br /&gt;
      //The user has set the value of this tag to something meaningful. Increment the count&lt;br /&gt;
      document.getElementById('tag_counts_' + round_number).innerHTML = current_count + 1;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
[[File:E1953_FlowChart2.png]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== RSpec Tests ===&lt;br /&gt;
Please find below RSpec Test cases for this feature&lt;br /&gt;
&lt;br /&gt;
===Issue 1: Show tagging count for Assignment Homepage===&lt;br /&gt;
====spec/controllers/student_task_controller_spec.rb====&lt;br /&gt;
Follow the below steps to Verify the fix  for this issue:&lt;br /&gt;
&lt;br /&gt;
'''Test Case 1'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
it &amp;quot;reports zero completed tags correctly&amp;quot; do&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  params = {id: 1}&lt;br /&gt;
  get :view, params&lt;br /&gt;
  expect(controller.instance_variable_get(:@participant)).to eq(participant)&lt;br /&gt;
  expect(assigns(:completed_tags)).to eq(0)&lt;br /&gt;
  expect(assigns(:total_tags)).to eq(6)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Test Case 2'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
it &amp;quot;reports some completed tags correctly&amp;quot; do&lt;br /&gt;
  answer_tags = [AnswerTag.new(value: 0), AnswerTag.new(value: 1), AnswerTag.new(value: -1), AnswerTag.new(value: 1),&lt;br /&gt;
  AnswerTag.new(value: 1), AnswerTag.new(value: 1), AnswerTag.new(value: -1), AnswerTag.new(value: 0),]&lt;br /&gt;
        &lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer2).and_return([answer_tags[0]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer2).and_return([answer_tags[1]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer2).and_return([answer_tags[2]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer2).and_return([answer_tags[3]])&lt;br /&gt;
       &lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer1).and_return([answer_tags[4]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer1).and_return([answer_tags[5]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer1).and_return([answer_tags[6]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer1).and_return([answer_tags[7]])&lt;br /&gt;
  params = {id: 1}&lt;br /&gt;
  get :view, params&lt;br /&gt;
  expect(controller.instance_variable_get(:@participant)).to eq(participant)&lt;br /&gt;
  expect(assigns(:completed_tags)).to eq(5)&lt;br /&gt;
  expect(assigns(:total_tags)).to eq(6)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Issue 2: Show tagging count for review page===&lt;br /&gt;
====spec/controllers/grades_controller_spec.rb====&lt;br /&gt;
Follow the below steps to Verify the fix  for this issue:&lt;br /&gt;
&lt;br /&gt;
'''Test Case 1'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
it &amp;quot;reports zero completed tags correctly&amp;quot; do&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer2).and_return([])&lt;br /&gt;
&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer1).and_return([])&lt;br /&gt;
  params = {id: 1}&lt;br /&gt;
  get :view_team, params&lt;br /&gt;
  expect(controller.instance_variable_get(:@participant)).to eq(participant)&lt;br /&gt;
  expect(assigns(:completed_tags)).to eq(0)&lt;br /&gt;
  expect(assigns(:total_tags)).to eq(6)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Test Case 2'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
it &amp;quot;reports some completed tags correctly&amp;quot; do&lt;br /&gt;
  answer_tags = [AnswerTag.new(value: 0), AnswerTag.new(value: 1), AnswerTag.new(value: -1), AnswerTag.new(value: 1),&lt;br /&gt;
  AnswerTag.new(value: 1), AnswerTag.new(value: 1), AnswerTag.new(value: -1), AnswerTag.new(value: 0),]&lt;br /&gt;
        &lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer2).and_return([answer_tags[0]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer2).and_return([answer_tags[1]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer2).and_return([answer_tags[2]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer2).and_return([answer_tags[3]])&lt;br /&gt;
       &lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment1, user_id: 1, answer: answer1).and_return([answer_tags[4]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment2, user_id: 1, answer: answer1).and_return([answer_tags[5]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment3, user_id: 1, answer: answer1).and_return([answer_tags[6]])&lt;br /&gt;
  allow(AnswerTag).to receive(:where).with(tag_prompt_deployment_id: deployment4, user_id: 1, answer: answer1).and_return([answer_tags[7]])&lt;br /&gt;
  params = {id: 1}&lt;br /&gt;
  get :view_team, params&lt;br /&gt;
  expect(controller.instance_variable_get(:@participant)).to eq(participant)&lt;br /&gt;
  expect(assigns(:completed_tags)).to eq(5)&lt;br /&gt;
  expect(assigns(:total_tags)).to eq(6)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Regression Tests ===&lt;br /&gt;
Since new changes were added to existing function, we ran the existing tests to ensure none of them were failing.&lt;br /&gt;
&lt;br /&gt;
=== Manual Tests ===&lt;br /&gt;
We needed to check if the feature implemented were resulting the expected behavior. To test this we followed following steps:-&lt;br /&gt;
&lt;br /&gt;
1. Login as a student&lt;br /&gt;
&lt;br /&gt;
2. Select Assignment for Assignment Home Page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 1'''&lt;br /&gt;
&lt;br /&gt;
This page should show number of tags completed and total tags present including all the rounds in that particular assignment. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 2'''&lt;br /&gt;
&lt;br /&gt;
On selecting Your Scores on Student Task page, Each round should show Review Tagged Column. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 3'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should consist of tags completed and total tags count for that particular round. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 4'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should not consist of tags completed in all rounds and total tags count. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 5'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should dynamically increase or decrease tag count when user change their tagging. ✓&lt;br /&gt;
&lt;br /&gt;
==Deployed Example==&lt;br /&gt;
Below are instructions for navigating through expertiza to see the review tags in action.&lt;br /&gt;
&lt;br /&gt;
'''1.''' Go to http://152.46.18.192:8080/ and log in as {username: student7552 password: password}. &lt;br /&gt;
&lt;br /&gt;
'''2.''' After you log in if you are not at the assignments landing page (152.46.18.192:8080//student_task/list) click on Assignments to navigate there. &lt;br /&gt;
&lt;br /&gt;
'''3.''' Click on &amp;quot;Final project (and design doc)&amp;quot; from the list of assignments in the table at the bottom of the page. &lt;br /&gt;
&lt;br /&gt;
'''4.''' Behold the tag counter next to the bullet labeled &amp;quot;Your scores&amp;quot;.  It reads (You have tagged the available tags completed / total available reviews). &lt;br /&gt;
&lt;br /&gt;
[[File:Assignment-page-tags.png]]&lt;br /&gt;
&lt;br /&gt;
'''5'''. Further, click on &amp;quot;Your scores&amp;quot;. On the next page that shows up, click on a row in the table to see the tags. Notice in the last column of the header of the table is a cell containing the available tags completed / total available tags. &lt;br /&gt;
&lt;br /&gt;
[[FIle:Per-round-tags.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
'''6.''' After clicking on a row to reveal tags drag the blue square towards 'No,' 'Yes,' or the middle. Observe that the tags left / total tags has updated.&lt;br /&gt;
&lt;br /&gt;
'''7.''' To observe the new per round tagging capabilities log out and then log in as {username: student8115 password: password}. &lt;br /&gt;
&lt;br /&gt;
'''8.''' Select the first Program 2 from the list of assignments. In the next page click on &amp;quot;Your scores&amp;quot; as in step 4 above. Scroll down and behold tagging statistics for each round in the last column of the table headers.&lt;br /&gt;
&lt;br /&gt;
[[FIle:Per-round-tagging2.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
Mentor -Akanksha Mohan&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Spencer Yoder (smyoder)&lt;br /&gt;
* Mark Trawick (mtrawic)&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Github Repository for Expertiza]&lt;br /&gt;
# [http://wiki.expertiza.ncsu.edu/index.php/Documentation_on_Database_Tables Expertiza Documentation on Database Tables]&lt;br /&gt;
# [https://guides.rubyonrails.org/api_app.html Rails Guide Documentation]&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019&amp;diff=128617</id>
		<title>CSC/ECE 517 Fall 2019</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019&amp;diff=128617"/>
		<updated>2019-11-11T18:52:16Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[CSC/ECE 517 Fall 2019 - Project E1947. Refactor quiz_questionnaire_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - Project E1965. Review report should link to the usual view for reviews]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - Project E1943. Refactor sign up sheet controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1972. OSS project J. Skellington: Accessing Assignment Rubrics]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1961. Email notification to reviewers and instructors]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1971. OSS project Finklestein: Instructors &amp;amp; Institutions]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1953. Tagging report for student]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1955.Write  unit tests for student_task.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1954. Auto-generate submission directory names based on assignment names]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1958. Two issues related to assignment management]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1948. Refactor review_mapping_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1959. Intelligent copying of assignments without topics]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1968. Fixes for adding members to teams]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1969. Fixes for reviews not being available]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1951. Remove multiple topics at a time]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1957. Time travel Not Allowed..!!! Restrict TAs’ ability to change their own grade + limit file-size upload]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1963. Changing assignment participant role]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1941. Issues related to topic deadlines]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1966. Tabbed_reviews partial file refactor for displaying the alternate view of reviews]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1962. Email notification upon account creation]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1967. Fix glitches in author feedback]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1960. Create new late policy successfully and fixing &amp;quot;Back&amp;quot; link]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1939. OSS Project Juniper: Bookmark enhancements]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - M1950. Support Asynchronous Web Assembly Compilation]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1938. OSS project Duke Blue: Fix import glitches]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1985. Let course staff and students do reviews]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - M1951. Implement missing OffscreenCanvas APIs]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1940. Improving email notification]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1956. There is no shortcut to get free review points: Review Assignment Bug]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1942. Refactor stage deadlines in assignment.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - M1952. Missing DOM features project]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1945. Refactor users_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1964. Export review scores for projects]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1949. Write Unit Tests for Importing assignment participants and import glitches]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1944. Refactor review mapping controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1946. Refactor Questionnaire controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1982. Regulate changing of rubrics while projects are in progress]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1989. Track the time students look at other submissions]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1990. Integrate suggestion detection algorithm]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1995. Tests for email functionality]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1993 Track Time Between Successive Tag Assignments]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1979. Completion/Progress view]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1995. Weights in grade calculation]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1980. Sort instructor reports by name, ID, score, etc.]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1984. Improve self-review  Link peer review &amp;amp; self-review to derive grades]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1994. Mentor management for assignments without topics]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1997. Issues related to meta-reviewing]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1981. Student-generated questions added to rubric]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1996. Enhancements to review grader]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1987. Improving search facility in Expertiza]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1978. Fix issues related to deadlines and late policies]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1991. Improvements to anonymized view]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1998. Weights in grade calculation]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 - E1986. Allow reviewers to bid on what to review]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design]]&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=128616</id>
		<title>CSC/ECE 517 Fall 2019 -E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=128616"/>
		<updated>2019-11-11T18:51:40Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: Created page with &amp;quot;==Teammates==  Mentor - Prof. Edward Gehringer  * Sameer Adhikari (sadhika2) * Gurman Singh (gsingh23) * Garima Garima (ggarima) * Bharat Bhardwaj ()&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Teammates==&lt;br /&gt;
&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj ()&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=128615</id>
		<title>E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=128615"/>
		<updated>2019-11-11T18:51:30Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Teammates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=128614</id>
		<title>E1974 Allow users to create an account and submit work to an ”assignment” Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1974_Allow_users_to_create_an_account_and_submit_work_to_an_%E2%80%9Dassignment%E2%80%9D_Design&amp;diff=128614"/>
		<updated>2019-11-11T18:49:13Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: Created page with &amp;quot;==Teammates== Mentor - Prof. Edward Gehringer * Sameer Adhikari (sadhika2) * Gurman Singh (gsingh23) * Garima Garima (ggarima) * Bharat Bhardwaj ()&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Teammates==&lt;br /&gt;
Mentor - Prof. Edward Gehringer&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Gurman Singh (gsingh23)&lt;br /&gt;
* Garima Garima (ggarima)&lt;br /&gt;
* Bharat Bhardwaj ()&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=127947</id>
		<title>CSC/ECE 517 Fall 2019 - E1953. Tagging report for student</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=127947"/>
		<updated>2019-11-07T03:45:33Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CSC/ECE 517 Fall 2019 - E1953. Tagging report for student&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
===About Expertiza ===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* If tagging is enabled, number of total tags per round is shown on student's score page&lt;br /&gt;
* Implemented feature which shows number of tags student have entered&lt;br /&gt;
* Implemented feature to show number of tags entered and total number of tags in Assignment page.&lt;br /&gt;
* Implemented feature to show tagging counts dynamically when student change tagging type in score page&lt;br /&gt;
* Added RSPEC testcases for testing changes done for tagging&lt;br /&gt;
&lt;br /&gt;
===About Tagging===&lt;br /&gt;
Expertiza has a feature of peer review where other teams can provide feedback on student's work. There is also another feature of &amp;quot;Tags&amp;quot;, where a student can answer if the feedback provided were helpful or not. Tags can vary from assignment to assignment but the main motive of it is to provide information on whether the feedback provides helpful information for student's assignment. The picture below shows an example of tags. &lt;br /&gt;
&lt;br /&gt;
[[File:Example-tags.png]]&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
For a particular assignment, there may be a lot of questions and hence multiple feedback. Students might miss a few tags and they might go unanswered. This feature will provide students to keep track of answered tags and show them how many tags have they answered out of total tags on the page.&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
For counting, we are primarily concerned with two numbers: the number of possible tags for an assignment and the number of completed tags for an assignment. The latter is easy to calculate as it's directly stored as AnswerTags. The former is more difficult: possible tags are stored as TagPromptDeployments which do not have a 1:1 correspondence to the number of prompts the user sees on their page.&lt;br /&gt;
&lt;br /&gt;
[[File:E1953_UML.png]]&lt;br /&gt;
&lt;br /&gt;
The green classes are used to count the number of tags done, the red classes are used to count the number of tags possible, and the yellow classes are used to calculate both counts. All classes help to narrow the scope to a specific user and assignment.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Task 1 : Count answered tags in an assignment on Assignment Homepage ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
On clicking of particular Assignment, student can see his/her teams, work, scores, etc. There is no feature which allows student to show how many of the review tags has he/she answered on this page. This task implements this feature where student can see answered tags with respect to total tags in Assignment page. &lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/controllers/student_task_controller.rb'''&lt;br /&gt;
- The following code counts the number of Tags present in an assignment and total number of answered tags in that particular assignment. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @completed_tags = 0&lt;br /&gt;
    @total_tags = 0&lt;br /&gt;
    vmlist.each do |vm|&lt;br /&gt;
      vm.list_of_rows.each do |r|&lt;br /&gt;
        r.score_row.each do |row|&lt;br /&gt;
          vm_prompts = row.vm_prompts.select {|prompt| prompt.tag_dep.tag_prompt.control_type.downcase != &amp;quot;checkbox&amp;quot;}&lt;br /&gt;
          @total_tags += vm_prompts.count&lt;br /&gt;
          vm_prompts.each do |vm_prompt|&lt;br /&gt;
            answer_tag = AnswerTag.where(tag_prompt_deployment_id: vm_prompt.tag_dep, user_id: @participant.user_id, answer: vm_prompt.answer).first&lt;br /&gt;
            if !answer_tag.nil? and answer_tag.value != &amp;quot;0&amp;quot;&lt;br /&gt;
              @completed_tags += 1&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Task 2 : Count answered tags in an assignment per rounds on Summary Report Page ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
On clicking of particular Assignment&amp;gt;Your Scores&amp;gt; student can see his/her score. Student can also see all the reviews per rounds in particular assignment. This new feature will allow student to see number of answered tags per round with respect to number of total tags present in particular round &lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/controllers/grades_controller.rb'''&lt;br /&gt;
- The following code counts the number of Tags present in a round and total number of answered tags in that particular round. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @vmlist.each do |vm|&lt;br /&gt;
        if vm.round == @round&lt;br /&gt;
          vm.list_of_rows.each do |r|&lt;br /&gt;
            r.score_row.each do |row|&lt;br /&gt;
              vm_prompts = row.vm_prompts.select {|prompt| prompt.tag_dep.tag_prompt.control_type.downcase != &amp;quot;checkbox&amp;quot;}&lt;br /&gt;
              if vm_prompts.count &amp;gt; 0&lt;br /&gt;
                @total_tags += vm_prompts.count&lt;br /&gt;
                vm_prompts.each do |vm_prompt|&lt;br /&gt;
                  answer_tag = AnswerTag.where(tag_prompt_deployment_id: vm_prompt.tag_dep, user_id: @participant.user_id, answer: vm_prompt.answer).first&lt;br /&gt;
                  if !answer_tag.nil? and answer_tag.value != &amp;quot;0&amp;quot;&lt;br /&gt;
                    @completed_tags += 1&lt;br /&gt;
                  end&lt;br /&gt;
                end&lt;br /&gt;
              end&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
      @total_tags_array.append(@total_tags)&lt;br /&gt;
      @completed_tags_array.append(@completed_tags)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Task 3 : Per round tag counts should be automatically updated as soon as tags are changed ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
If a user changes their tags, the page formerly needed to be refreshed in order to display the correct counts. This functionality ensures that the tag counts always accurately reflect the results on the page.&lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/assets/javascripts/answer_tags.js'''&lt;br /&gt;
- The following code correctly increments/decrements the tag count on the page based on the user's action.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
update_tag_count = function(tag_prompt, round_number) {&lt;br /&gt;
    //Get the previous value of this tag prompt from an HTML attribute&lt;br /&gt;
    var old_value =  tag_prompt.getAttribute('data-prev_value')&lt;br /&gt;
    //This is the new value of the tag prompt&lt;br /&gt;
    var new_value = tag_prompt.value&lt;br /&gt;
    //Store the new value back into the HTML attribute&lt;br /&gt;
    tag_prompt.setAttribute('data-prev_value', new_value)&lt;br /&gt;
    //This is the current tag count for the round this tag is in&lt;br /&gt;
    var current_count = parseInt(document.getElementById('tag_counts_' + (round_number)).innerHTML);&lt;br /&gt;
    if(old_value != &amp;quot;0&amp;quot; &amp;amp;&amp;amp; new_value == &amp;quot;0&amp;quot;) {&lt;br /&gt;
      //The user has reset the value of this tag. Decrement the tag count&lt;br /&gt;
      document.getElementById('tag_counts_' + round_number).innerHTML = current_count - 1;&lt;br /&gt;
    } else if(old_value == &amp;quot;0&amp;quot; &amp;amp;&amp;amp; new_value != &amp;quot;0&amp;quot;){&lt;br /&gt;
      //The user has set the value of this tag to something meaningful. Increment the count&lt;br /&gt;
      document.getElementById('tag_counts_' + round_number).innerHTML = current_count + 1;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
[[File:E1953_FlowChart2.png]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== RSpec Tests ===&lt;br /&gt;
Please find below RSpec Test cases for this feature&lt;br /&gt;
&lt;br /&gt;
===Issue 1: Show tagging count for Assignment Homepage===&lt;br /&gt;
Follow the below steps to Verify the fix  for this issue:&lt;br /&gt;
&lt;br /&gt;
'''Test Case 1'''&lt;br /&gt;
//Spencer to paste code&lt;br /&gt;
&lt;br /&gt;
'''Test Case 2'''&lt;br /&gt;
//Spencer to paste code&lt;br /&gt;
&lt;br /&gt;
=== Regression Tests ===&lt;br /&gt;
Since new changes were added to existing function, we ran the existing tests to ensure none of them were failing.&lt;br /&gt;
&lt;br /&gt;
=== Manual Tests ===&lt;br /&gt;
We needed to check if the feature implemented were resulting the expected behavior. To test this we followed following steps:-&lt;br /&gt;
&lt;br /&gt;
1. Login as a student&lt;br /&gt;
&lt;br /&gt;
2. Select Assignment for Assignment Home Page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 1'''&lt;br /&gt;
&lt;br /&gt;
This page should show number of tags completed and total tags present including all the rounds in that particular assignment. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 2'''&lt;br /&gt;
&lt;br /&gt;
On selecting Your Scores on Student Task page, Each round should show Review Tagged Column. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 3'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should consist of tags completed and total tags count for that particular round. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 4'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should not consist of tags completed in all rounds and total tags count. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 5'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should dynamically increase or decrease tag count when user change their tagging. ✓&lt;br /&gt;
&lt;br /&gt;
==Deployed Example==&lt;br /&gt;
Below are instructions for navigating through expertiza to see the review tags in action.&lt;br /&gt;
&lt;br /&gt;
'''1.''' Go to http://152.46.18.192:8080/ and log in as {username: student7552 password: password}. &lt;br /&gt;
&lt;br /&gt;
'''2.''' After you log in if you are not at the assignments landing page (152.46.18.192:8080//student_task/list) click on Assignments to navigate there. &lt;br /&gt;
&lt;br /&gt;
'''3.''' Click on &amp;quot;Final project (and design doc)&amp;quot; from the list of assignments in the table at the bottom of the page. &lt;br /&gt;
&lt;br /&gt;
'''4.''' Behold the tag counter next to the bullet labeled &amp;quot;Your scores&amp;quot;.  It reads (You have tagged the available tags completed / total available reviews). &lt;br /&gt;
&lt;br /&gt;
[[File:Assignment-page-tags.png]]&lt;br /&gt;
&lt;br /&gt;
'''5'''. Further, click on &amp;quot;Your scores&amp;quot;. On the next page that shows up, click on a row in the table to see the tags. Notice in the last column of the header of the table is a cell containing the available tags completed / total available tags. &lt;br /&gt;
&lt;br /&gt;
[[FIle:Per-round-tags.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
'''6.''' After clicking on a row to reveal tags drag the blue square towards 'No,' 'Yes,' or the middle. Observe that the tags left / total tags has updated.&lt;br /&gt;
&lt;br /&gt;
'''7.''' To observe the new per round tagging capabilities log out and then log in as {username: student8115 password: password}. &lt;br /&gt;
&lt;br /&gt;
'''8.''' Select the first Program 2 from the list of assignments. In the next page click on &amp;quot;Your scores&amp;quot; as in step 4 above. Scroll down and behold tagging statistics for each round in the last column of the table headers.&lt;br /&gt;
&lt;br /&gt;
[[FIle:Per-round-tagging2.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
Mentor -Akanksha Mohan&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Spencer Yoder (smyoder)&lt;br /&gt;
* Mark Trawick (mtrawic)&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Github Repository for Expertiza]&lt;br /&gt;
# [http://wiki.expertiza.ncsu.edu/index.php/Documentation_on_Database_Tables Expertiza Documentation on Database Tables]&lt;br /&gt;
# [https://guides.rubyonrails.org/api_app.html Rails Guide Documentation]&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=127437</id>
		<title>CSC/ECE 517 Fall 2019 - E1953. Tagging report for student</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=127437"/>
		<updated>2019-11-06T22:18:25Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CSC/ECE 517 Fall 2019 - E1953. Tagging report for student&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
===About Expertiza ===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* If tagging is enabled, number of total tags per round is shown on student's score page&lt;br /&gt;
* Implemented feature which shows number of tags student have entered&lt;br /&gt;
* Implemented feature to show number of tags entered and total number of tags in Assignment page.&lt;br /&gt;
* Implemented feature to show tagging counts dynamically when student change tagging type in score page&lt;br /&gt;
* Added RSPEC testcases for testing changes done for tagging&lt;br /&gt;
&lt;br /&gt;
===About Tagging===&lt;br /&gt;
Expertiza has a feature of peer review where other teams can provide feedback on student's work. There is also another feature of &amp;quot;Tags&amp;quot;, where a student can answer if the feedback provided were helpful or not. Tags can vary from assignment to assignment but the main motive of it is to provide information on whether the feedback provides helpful information for student's assignment. The picture below shows an example of tags. &lt;br /&gt;
&lt;br /&gt;
[[File:Example-tags.png]]&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
For a particular assignment, there may be a lot of questions and hence multiple feedback. Students might miss a few tags and they might go unanswered. This feature will provide students to keep track of answered tags and show them how many tags have they answered out of total tags on the page.&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
For counting, we are primarily concerned with two numbers: the number of possible tags for an assignment and the number of completed tags for an assignment. The latter is easy to calculate as it's directly stored as AnswerTags. The former is more difficult: possible tags are stored as TagPromptDeployments which do not have a 1:1 correspondence to the number of prompts the user sees on their page.&lt;br /&gt;
&lt;br /&gt;
[[File:E1953_UML.png]]&lt;br /&gt;
&lt;br /&gt;
The green classes are used to count the number of tags done, the red classes are used to count the number of tags possible, and the yellow classes are used to calculate both counts. All classes help to narrow the scope to a specific user and assignment.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Task 1 : Count answered tags in an assignment on Assignment Homepage ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
On clicking of particular Assignment, student can see his/her teams, work, scores, etc. There is no feature which allows student to show how many of the review tags has he/she answered on this page. This task implements this feature where student can see answered tags with respect to total tags in Assignment page. &lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/controllers/student_task_controller.rb'''&lt;br /&gt;
- The following code counts the number of Tags present in an assignment and total number of answered tags in that particular assignment. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @completed_tags = 0&lt;br /&gt;
    @total_tags = 0&lt;br /&gt;
    vmlist.each do |vm|&lt;br /&gt;
      vm.list_of_rows.each do |r|&lt;br /&gt;
        r.score_row.each do |row|&lt;br /&gt;
          vm_prompts = row.vm_prompts.select {|prompt| prompt.tag_dep.tag_prompt.control_type.downcase != &amp;quot;checkbox&amp;quot;}&lt;br /&gt;
          @total_tags += vm_prompts.count&lt;br /&gt;
          vm_prompts.each do |vm_prompt|&lt;br /&gt;
            answer_tag = AnswerTag.where(tag_prompt_deployment_id: vm_prompt.tag_dep, user_id: @participant.user_id, answer: vm_prompt.answer).first&lt;br /&gt;
            if !answer_tag.nil? and answer_tag.value != &amp;quot;0&amp;quot;&lt;br /&gt;
              @completed_tags += 1&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Task 2 : Count answered tags in an assignment per rounds on Summary Report Page ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
On clicking of particular Assignment&amp;gt;Your Scores&amp;gt; student can see his/her score. Student can also see all the reviews per rounds in particular assignment. This new feature will allow student to see number of answered tags per round with respect to number of total tags present in particular round &lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/controllers/grades_controller.rb'''&lt;br /&gt;
- The following code counts the number of Tags present in a round and total number of answered tags in that particular round. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @vmlist.each do |vm|&lt;br /&gt;
        if vm.round == @round&lt;br /&gt;
          vm.list_of_rows.each do |r|&lt;br /&gt;
            r.score_row.each do |row|&lt;br /&gt;
              vm_prompts = row.vm_prompts.select {|prompt| prompt.tag_dep.tag_prompt.control_type.downcase != &amp;quot;checkbox&amp;quot;}&lt;br /&gt;
              if vm_prompts.count &amp;gt; 0&lt;br /&gt;
                @total_tags += vm_prompts.count&lt;br /&gt;
                vm_prompts.each do |vm_prompt|&lt;br /&gt;
                  answer_tag = AnswerTag.where(tag_prompt_deployment_id: vm_prompt.tag_dep, user_id: @participant.user_id, answer: vm_prompt.answer).first&lt;br /&gt;
                  if !answer_tag.nil? and answer_tag.value != &amp;quot;0&amp;quot;&lt;br /&gt;
                    @completed_tags += 1&lt;br /&gt;
                  end&lt;br /&gt;
                end&lt;br /&gt;
              end&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
      @total_tags_array.append(@total_tags)&lt;br /&gt;
      @completed_tags_array.append(@completed_tags)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Task 3 : Per round tag counts should be automatically updated as soon as tags are changed ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
If a user changes their tags, the page formerly needed to be refreshed in order to display the correct counts. This functionality ensures that the tag counts always accurately reflect the results on the page.&lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/assets/javascripts/answer_tags.js'''&lt;br /&gt;
- The following code correctly increments/decrements the tag count on the page based on the user's action.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
update_tag_count = function(tag_prompt, round_number) {&lt;br /&gt;
    //Get the previous value of this tag prompt from an HTML attribute&lt;br /&gt;
    var old_value =  tag_prompt.getAttribute('data-prev_value')&lt;br /&gt;
    //This is the new value of the tag prompt&lt;br /&gt;
    var new_value = tag_prompt.value&lt;br /&gt;
    //Store the new value back into the HTML attribute&lt;br /&gt;
    tag_prompt.setAttribute('data-prev_value', new_value)&lt;br /&gt;
    //This is the current tag count for the round this tag is in&lt;br /&gt;
    var current_count = parseInt(document.getElementById('tag_counts_' + (round_number)).innerHTML);&lt;br /&gt;
    if(old_value != &amp;quot;0&amp;quot; &amp;amp;&amp;amp; new_value == &amp;quot;0&amp;quot;) {&lt;br /&gt;
      //The user has reset the value of this tag. Decrement the tag count&lt;br /&gt;
      document.getElementById('tag_counts_' + round_number).innerHTML = current_count - 1;&lt;br /&gt;
    } else if(old_value == &amp;quot;0&amp;quot; &amp;amp;&amp;amp; new_value != &amp;quot;0&amp;quot;){&lt;br /&gt;
      //The user has set the value of this tag to something meaningful. Increment the count&lt;br /&gt;
      document.getElementById('tag_counts_' + round_number).innerHTML = current_count + 1;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
[[File:E1953_FlowChart2.png]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== Regression Tests ===&lt;br /&gt;
Since new changes were added to existing function, we ran the existing tests to ensure none of them were failing.&lt;br /&gt;
&lt;br /&gt;
=== Manual Tests ===&lt;br /&gt;
We needed to check if the feature implemented were resulting the expected behavior. To test this we followed following steps:-&lt;br /&gt;
&lt;br /&gt;
1. Login as a student&lt;br /&gt;
&lt;br /&gt;
2. Select Assignment for Assignment Home Page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 1'''&lt;br /&gt;
&lt;br /&gt;
This page should show number of tags completed and total tags present including all the rounds in that particular assignment. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 2'''&lt;br /&gt;
&lt;br /&gt;
On selecting Your Scores on Student Task page, Each round should show Review Tagged Column. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 3'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should consist of tags completed and total tags count for that particular round. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 4'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should not consist of tags completed in all rounds and total tags count. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 5'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should dynamically increase or decrease tag count when user change their tagging. ✓&lt;br /&gt;
&lt;br /&gt;
==Deployed Example==&lt;br /&gt;
Below are instructions for navigating through expertiza to see the review tags in action.&lt;br /&gt;
&lt;br /&gt;
'''1.''' Go to http://152.46.18.192:8080/ and log in as {username: student7552 password: password}. &lt;br /&gt;
&lt;br /&gt;
'''2.''' After you log in if you are not at the assignments landing page (152.46.18.192:8080//student_task/list) click on Assignments to navigate there. &lt;br /&gt;
&lt;br /&gt;
'''3.''' Click on &amp;quot;Final project (and design doc)&amp;quot; from the list of assignments in the table at the bottom of the page. &lt;br /&gt;
&lt;br /&gt;
'''4.''' Behold the tag counter next to the bullet labeled &amp;quot;Your scores&amp;quot;.  It reads (You have tagged the available tags completed / total available reviews). &lt;br /&gt;
&lt;br /&gt;
[[File:Assignment-page-tags.png]]&lt;br /&gt;
&lt;br /&gt;
'''5'''. Further, click on &amp;quot;Your scores&amp;quot;. On the next page that shows up, click on a row in the table to see the tags. Notice in the last column of the header of the table is a cell containing the available tags completed / total available tags. &lt;br /&gt;
&lt;br /&gt;
[[FIle:Per-round-tags.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
'''6.''' After clicking on a row to reveal tags drag the blue square towards 'No,' 'Yes,' or the middle. Observe that the tags left / total tags has updated.&lt;br /&gt;
&lt;br /&gt;
'''7.''' To observe the new per round tagging capabilities log out and then log in as {username: student8115 password: password}. &lt;br /&gt;
&lt;br /&gt;
'''8.''' Select the first Program 2 from the list of assignments. In the next page click on &amp;quot;Your scores&amp;quot; as in step 4 above. Scroll down and behold tagging statistics for each round in the last column of the table headers.&lt;br /&gt;
&lt;br /&gt;
[[FIle:Per-round-tagging2.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
Mentor -Akanksha Mohan&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Spencer Yoder (smyoder)&lt;br /&gt;
* Mark Trawick (mtrawic)&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Github Repository for Expertiza]&lt;br /&gt;
# [http://wiki.expertiza.ncsu.edu/index.php/Documentation_on_Database_Tables Expertiza Documentation on Database Tables]&lt;br /&gt;
# [https://guides.rubyonrails.org/api_app.html Rails Guide Documentation]&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=127399</id>
		<title>CSC/ECE 517 Fall 2019 - E1953. Tagging report for student</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=127399"/>
		<updated>2019-11-06T21:21:31Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Manual Tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CSC/ECE 517 Fall 2019 - E1953. Tagging report for student&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
===About Expertiza ===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* If tagging is enabled, number of total tags per round is shown on student's score page&lt;br /&gt;
* Implemented feature which shows number of tags student have entered&lt;br /&gt;
* Implemented feature to show number of tags entered and total number of tags in Assignment page.&lt;br /&gt;
* Implemented feature to show tagging counts dynamically when student change tagging type in score page&lt;br /&gt;
* Added RSPEC testcases for testing changes done for tagging&lt;br /&gt;
&lt;br /&gt;
===About Tagging===&lt;br /&gt;
Expertiza has a feature of peer review where other teams can provide feedback on student's work. There is also another feature of &amp;quot;Tags&amp;quot;, where a student can answer if the feedback provided were helpful or not. Tags can vary from assignment to assignment but the main motive of it is to provide information on whether the feedback provides helpful information for student's assignment. The picture below shows an example of tags. &lt;br /&gt;
&lt;br /&gt;
[[File:Example-tags.png]]&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
For a particular assignment, there may be a lot of questions and hence multiple feedback. Students might miss a few tags and they might go unanswered. This feature will provide students to keep track of answered tags and show them how many tags have they answered out of total tags on the page.&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
For counting, we are primarily concerned with two numbers: the number of possible tags for an assignment and the number of completed tags for an assignment. The latter is easy to calculate as it's directly stored as AnswerTags. The former is more difficult: possible tags are stored as TagPromptDeployments which do not have a 1:1 correspondence to the number of prompts the user sees on their page.&lt;br /&gt;
&lt;br /&gt;
[[File:E1953_UML.png]]&lt;br /&gt;
&lt;br /&gt;
The green classes are used to count the number of tags done, the red classes are used to count the number of tags possible, and the yellow classes are used to calculate both counts. All classes help to narrow the scope to a specific user and assignment.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Task 1 : Count answered tags in an assignment on Assignment Homepage ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
On clicking of particular Assignment, student can see his/her teams, work, scores, etc. There is no feature which allows student to show how many of the review tags has he/she answered on this page. This task implements this feature where student can see answered tags with respect to total tags in Assignment page. &lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/controllers/student_task_controller.rb'''&lt;br /&gt;
- The following code counts the number of Tags present in an assignment and total number of answered tags in that particular assignment. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @completed_tags = 0&lt;br /&gt;
    @total_tags = 0&lt;br /&gt;
    vmlist.each do |vm|&lt;br /&gt;
      vm.list_of_rows.each do |r|&lt;br /&gt;
        r.score_row.each do |row|&lt;br /&gt;
          vm_prompts = row.vm_prompts.select {|prompt| prompt.tag_dep.tag_prompt.control_type.downcase != &amp;quot;checkbox&amp;quot;}&lt;br /&gt;
          @total_tags += vm_prompts.count&lt;br /&gt;
          vm_prompts.each do |vm_prompt|&lt;br /&gt;
            answer_tag = AnswerTag.where(tag_prompt_deployment_id: vm_prompt.tag_dep, user_id: @participant.user_id, answer: vm_prompt.answer).first&lt;br /&gt;
            if !answer_tag.nil? and answer_tag.value != &amp;quot;0&amp;quot;&lt;br /&gt;
              @completed_tags += 1&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Task 2 : Count answered tags in an assignment per rounds on Summary Report Page ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
On clicking of particular Assignment&amp;gt;Your Scores&amp;gt; student can see his/her score. Student can also see all the reviews per rounds in particular assignment. This new feature will allow student to see number of answered tags per round with respect to number of total tags present in particular round &lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/controllers/grades_controller.rb'''&lt;br /&gt;
- The following code counts the number of Tags present in a round and total number of answered tags in that particular round. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @vmlist.each do |vm|&lt;br /&gt;
        if vm.round == @round&lt;br /&gt;
          vm.list_of_rows.each do |r|&lt;br /&gt;
            r.score_row.each do |row|&lt;br /&gt;
              vm_prompts = row.vm_prompts.select {|prompt| prompt.tag_dep.tag_prompt.control_type.downcase != &amp;quot;checkbox&amp;quot;}&lt;br /&gt;
              if vm_prompts.count &amp;gt; 0&lt;br /&gt;
                @total_tags += vm_prompts.count&lt;br /&gt;
                vm_prompts.each do |vm_prompt|&lt;br /&gt;
                  answer_tag = AnswerTag.where(tag_prompt_deployment_id: vm_prompt.tag_dep, user_id: @participant.user_id, answer: vm_prompt.answer).first&lt;br /&gt;
                  if !answer_tag.nil? and answer_tag.value != &amp;quot;0&amp;quot;&lt;br /&gt;
                    @completed_tags += 1&lt;br /&gt;
                  end&lt;br /&gt;
                end&lt;br /&gt;
              end&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
      @total_tags_array.append(@total_tags)&lt;br /&gt;
      @completed_tags_array.append(@completed_tags)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
[[File:E1953_FlowChart2.png]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== Unit Tests ===&lt;br /&gt;
Following shows the unit tests implemented for tagging feature&lt;br /&gt;
&lt;br /&gt;
=== Task 1 : Count answered tags in an assignment on Assignment Homepage ===&lt;br /&gt;
&lt;br /&gt;
==== Test Implemented ====&lt;br /&gt;
//Need to add code snapshot&lt;br /&gt;
&lt;br /&gt;
=== Task 2 : Count answered tags in an assignment per rounds on Summary Report Page ===&lt;br /&gt;
&lt;br /&gt;
==== Test Implemented ====&lt;br /&gt;
//Need to add code snapshot&lt;br /&gt;
&lt;br /&gt;
=== Regression Tests ===&lt;br /&gt;
Since new changes were added to existing function, we ran the existing tests to ensure none of them were failing.&lt;br /&gt;
&lt;br /&gt;
=== Manual Tests ===&lt;br /&gt;
We needed to check if the feature implemented were resulting the expected behavior. To test this we followed following steps:-&lt;br /&gt;
&lt;br /&gt;
1. Login as a student&lt;br /&gt;
&lt;br /&gt;
2. Select Assignment for Assignment Home Page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 1'''&lt;br /&gt;
&lt;br /&gt;
This page should show number of tags completed and total tags present including all the rounds in that particular assignment. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 2'''&lt;br /&gt;
&lt;br /&gt;
On selecting Your Scores on Student Task page, Each round should show Review Tagged Column. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 3'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should consist of tags completed and total tags count for that particular round. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 4'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should not consist of tags completed in all rounds and total tags count. ✓&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 5'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should dynamically increase or decrease tag count when user change their tagging. ✓&lt;br /&gt;
&lt;br /&gt;
==Deployed Example==&lt;br /&gt;
Below are instructions for navigating through expertiza to see the review tags in action.&lt;br /&gt;
&lt;br /&gt;
'''1.''' Go to http://152.46.18.192:8080/ and log in as {username: student7552 password: password}. &lt;br /&gt;
&lt;br /&gt;
'''2.''' After you log in if you are not at the assignments landing page (152.46.18.192:8080//student_task/list) click on Assignments to navigate there. &lt;br /&gt;
&lt;br /&gt;
'''3.''' Click on &amp;quot;Final project (and design doc)&amp;quot; from the list of assignments in the table at the bottom of the page. &lt;br /&gt;
&lt;br /&gt;
'''4.''' Behold the tag counter next to the bullet labeled &amp;quot;Your scores&amp;quot;.  It reads (You have tagged the available tags completed / total available reviews). &lt;br /&gt;
&lt;br /&gt;
[[File:Assignment-page-tags.png]]&lt;br /&gt;
&lt;br /&gt;
'''5'''. Further, click on &amp;quot;Your scores&amp;quot;. On the next page that shows up, click on a row in the table to see the tags. Notice in the last column of the header of the table is a cell containing the available tags completed / total available tags. &lt;br /&gt;
&lt;br /&gt;
[[FIle:Per-round-tags.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
'''6.''' After clicking on a row to reveal tags drag the blue square towards 'No' or 'Yes' and refresh the page. Observe that the tags left / total tags has updated.&lt;br /&gt;
&lt;br /&gt;
'''7.''' To observe the new per round tagging capabilities log out and then log in as {username: student8115 password: password}. &lt;br /&gt;
&lt;br /&gt;
'''8.''' Select the first Program 2 from the list of assignments. In the next page click on &amp;quot;Your scores&amp;quot; as in step 4 above. Scroll down and behold tagging statistics for each round in the last column of the table headers.&lt;br /&gt;
&lt;br /&gt;
[[FIle:Per-round-tagging2.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
Mentor -Akanksha Mohan&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Spencer Yoder (smyoder)&lt;br /&gt;
* Mark Trawick (mtrawic)&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Github Repository for Expertiza]&lt;br /&gt;
# [http://wiki.expertiza.ncsu.edu/index.php/Documentation_on_Database_Tables Expertiza Documentation on Database Tables]&lt;br /&gt;
# [https://guides.rubyonrails.org/api_app.html Rails Guide Documentation]&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=127397</id>
		<title>CSC/ECE 517 Fall 2019 - E1953. Tagging report for student</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=127397"/>
		<updated>2019-11-06T21:20:32Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CSC/ECE 517 Fall 2019 - E1953. Tagging report for student&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
===About Expertiza ===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* If tagging is enabled, number of total tags per round is shown on student's score page&lt;br /&gt;
* Implemented feature which shows number of tags student have entered&lt;br /&gt;
* Implemented feature to show number of tags entered and total number of tags in Assignment page.&lt;br /&gt;
* Implemented feature to show tagging counts dynamically when student change tagging type in score page&lt;br /&gt;
* Added RSPEC testcases for testing changes done for tagging&lt;br /&gt;
&lt;br /&gt;
===About Tagging===&lt;br /&gt;
Expertiza has a feature of peer review where other teams can provide feedback on student's work. There is also another feature of &amp;quot;Tags&amp;quot;, where a student can answer if the feedback provided were helpful or not. Tags can vary from assignment to assignment but the main motive of it is to provide information on whether the feedback provides helpful information for student's assignment. The picture below shows an example of tags. &lt;br /&gt;
&lt;br /&gt;
[[File:Example-tags.png]]&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
For a particular assignment, there may be a lot of questions and hence multiple feedback. Students might miss a few tags and they might go unanswered. This feature will provide students to keep track of answered tags and show them how many tags have they answered out of total tags on the page.&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
For counting, we are primarily concerned with two numbers: the number of possible tags for an assignment and the number of completed tags for an assignment. The latter is easy to calculate as it's directly stored as AnswerTags. The former is more difficult: possible tags are stored as TagPromptDeployments which do not have a 1:1 correspondence to the number of prompts the user sees on their page.&lt;br /&gt;
&lt;br /&gt;
[[File:E1953_UML.png]]&lt;br /&gt;
&lt;br /&gt;
The green classes are used to count the number of tags done, the red classes are used to count the number of tags possible, and the yellow classes are used to calculate both counts. All classes help to narrow the scope to a specific user and assignment.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Task 1 : Count answered tags in an assignment on Assignment Homepage ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
On clicking of particular Assignment, student can see his/her teams, work, scores, etc. There is no feature which allows student to show how many of the review tags has he/she answered on this page. This task implements this feature where student can see answered tags with respect to total tags in Assignment page. &lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/controllers/student_task_controller.rb'''&lt;br /&gt;
- The following code counts the number of Tags present in an assignment and total number of answered tags in that particular assignment. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @completed_tags = 0&lt;br /&gt;
    @total_tags = 0&lt;br /&gt;
    vmlist.each do |vm|&lt;br /&gt;
      vm.list_of_rows.each do |r|&lt;br /&gt;
        r.score_row.each do |row|&lt;br /&gt;
          vm_prompts = row.vm_prompts.select {|prompt| prompt.tag_dep.tag_prompt.control_type.downcase != &amp;quot;checkbox&amp;quot;}&lt;br /&gt;
          @total_tags += vm_prompts.count&lt;br /&gt;
          vm_prompts.each do |vm_prompt|&lt;br /&gt;
            answer_tag = AnswerTag.where(tag_prompt_deployment_id: vm_prompt.tag_dep, user_id: @participant.user_id, answer: vm_prompt.answer).first&lt;br /&gt;
            if !answer_tag.nil? and answer_tag.value != &amp;quot;0&amp;quot;&lt;br /&gt;
              @completed_tags += 1&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Task 2 : Count answered tags in an assignment per rounds on Summary Report Page ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
On clicking of particular Assignment&amp;gt;Your Scores&amp;gt; student can see his/her score. Student can also see all the reviews per rounds in particular assignment. This new feature will allow student to see number of answered tags per round with respect to number of total tags present in particular round &lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/controllers/grades_controller.rb'''&lt;br /&gt;
- The following code counts the number of Tags present in a round and total number of answered tags in that particular round. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @vmlist.each do |vm|&lt;br /&gt;
        if vm.round == @round&lt;br /&gt;
          vm.list_of_rows.each do |r|&lt;br /&gt;
            r.score_row.each do |row|&lt;br /&gt;
              vm_prompts = row.vm_prompts.select {|prompt| prompt.tag_dep.tag_prompt.control_type.downcase != &amp;quot;checkbox&amp;quot;}&lt;br /&gt;
              if vm_prompts.count &amp;gt; 0&lt;br /&gt;
                @total_tags += vm_prompts.count&lt;br /&gt;
                vm_prompts.each do |vm_prompt|&lt;br /&gt;
                  answer_tag = AnswerTag.where(tag_prompt_deployment_id: vm_prompt.tag_dep, user_id: @participant.user_id, answer: vm_prompt.answer).first&lt;br /&gt;
                  if !answer_tag.nil? and answer_tag.value != &amp;quot;0&amp;quot;&lt;br /&gt;
                    @completed_tags += 1&lt;br /&gt;
                  end&lt;br /&gt;
                end&lt;br /&gt;
              end&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
      @total_tags_array.append(@total_tags)&lt;br /&gt;
      @completed_tags_array.append(@completed_tags)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
[[File:E1953_FlowChart2.png]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== Unit Tests ===&lt;br /&gt;
Following shows the unit tests implemented for tagging feature&lt;br /&gt;
&lt;br /&gt;
=== Task 1 : Count answered tags in an assignment on Assignment Homepage ===&lt;br /&gt;
&lt;br /&gt;
==== Test Implemented ====&lt;br /&gt;
//Need to add code snapshot&lt;br /&gt;
&lt;br /&gt;
=== Task 2 : Count answered tags in an assignment per rounds on Summary Report Page ===&lt;br /&gt;
&lt;br /&gt;
==== Test Implemented ====&lt;br /&gt;
//Need to add code snapshot&lt;br /&gt;
&lt;br /&gt;
=== Regression Tests ===&lt;br /&gt;
Since new changes were added to existing function, we ran the existing tests to ensure none of them were failing.&lt;br /&gt;
&lt;br /&gt;
=== Manual Tests ===&lt;br /&gt;
We needed to check if the feature implemented were resulting the expected behavior. To test this we followed following steps:-&lt;br /&gt;
&lt;br /&gt;
1. Login as a student&lt;br /&gt;
&lt;br /&gt;
2. Select Assignment for Assignment Home Page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 1'''&lt;br /&gt;
&lt;br /&gt;
This page should show number of tags completed and total tags present including all the rounds in that particular assignment. ✓&lt;br /&gt;
&lt;br /&gt;
'''Test Case 2'''&lt;br /&gt;
&lt;br /&gt;
On selecting Your Scores on Student Task page, Each round should show Review Tagged Column. ✓&lt;br /&gt;
&lt;br /&gt;
'''Test Case 3'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should consist of tags completed and total tags count for that particular round. ✓&lt;br /&gt;
&lt;br /&gt;
'''Test Case 4'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should not consist of tags completed in all rounds and total tags count. ✓&lt;br /&gt;
&lt;br /&gt;
'''Test Case 5'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should dynamically increase or decrease tag count when user change their tagging. ✓&lt;br /&gt;
&lt;br /&gt;
==Deployed Example==&lt;br /&gt;
Below are instructions for navigating through expertiza to see the review tags in action.&lt;br /&gt;
&lt;br /&gt;
'''1.''' Go to http://152.46.18.192:8080/ and log in as {username: student7552 password: password}. &lt;br /&gt;
&lt;br /&gt;
'''2.''' After you log in if you are not at the assignments landing page (152.46.18.192:8080//student_task/list) click on Assignments to navigate there. &lt;br /&gt;
&lt;br /&gt;
'''3.''' Click on &amp;quot;Final project (and design doc)&amp;quot; from the list of assignments in the table at the bottom of the page. &lt;br /&gt;
&lt;br /&gt;
'''4.''' Behold the tag counter next to the bullet labeled &amp;quot;Your scores&amp;quot;.  It reads (You have tagged the available tags completed / total available reviews). &lt;br /&gt;
&lt;br /&gt;
[[File:Assignment-page-tags.png]]&lt;br /&gt;
&lt;br /&gt;
'''5'''. Further, click on &amp;quot;Your scores&amp;quot;. On the next page that shows up, click on a row in the table to see the tags. Notice in the last column of the header of the table is a cell containing the available tags completed / total available tags. &lt;br /&gt;
&lt;br /&gt;
[[FIle:Per-round-tags.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
'''6.''' After clicking on a row to reveal tags drag the blue square towards 'No' or 'Yes' and refresh the page. Observe that the tags left / total tags has updated.&lt;br /&gt;
&lt;br /&gt;
'''7.''' To observe the new per round tagging capabilities log out and then log in as {username: student8115 password: password}. &lt;br /&gt;
&lt;br /&gt;
'''8.''' Select the first Program 2 from the list of assignments. In the next page click on &amp;quot;Your scores&amp;quot; as in step 4 above. Scroll down and behold tagging statistics for each round in the last column of the table headers.&lt;br /&gt;
&lt;br /&gt;
[[FIle:Per-round-tagging2.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
Mentor -Akanksha Mohan&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Spencer Yoder (smyoder)&lt;br /&gt;
* Mark Trawick (mtrawic)&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Github Repository for Expertiza]&lt;br /&gt;
# [http://wiki.expertiza.ncsu.edu/index.php/Documentation_on_Database_Tables Expertiza Documentation on Database Tables]&lt;br /&gt;
# [https://guides.rubyonrails.org/api_app.html Rails Guide Documentation]&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Tick.png&amp;diff=127391</id>
		<title>File:Tick.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Tick.png&amp;diff=127391"/>
		<updated>2019-11-06T21:10:13Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=127388</id>
		<title>CSC/ECE 517 Fall 2019 - E1953. Tagging report for student</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=127388"/>
		<updated>2019-11-06T21:07:39Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CSC/ECE 517 Fall 2019 - E1953. Tagging report for student&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
===About Expertiza ===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* If tagging is enabled, number of total tags per round is shown on student's score page&lt;br /&gt;
* Implemented feature which shows number of tags student have entered&lt;br /&gt;
* Implemented feature to show number of tags entered and total number of tags in Assignment page.&lt;br /&gt;
* Implemented feature to show tagging counts dynamically when student change tagging type in score page&lt;br /&gt;
* Added RSPEC testcases for testing changes done for tagging&lt;br /&gt;
&lt;br /&gt;
===About Tagging===&lt;br /&gt;
Expertiza has a feature of peer review where other teams can provide feedback on student's work. There is also another feature of &amp;quot;Tags&amp;quot;, where a student can answer if the feedback provided were helpful or not. Tags can vary from assignment to assignment but the main motive of it is to provide information on whether the feedback provides helpful information for student's assignment. The picture below shows an example of tags. &lt;br /&gt;
&lt;br /&gt;
[[File:Example-tags.png]]&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
For a particular assignment, there may be a lot of questions and hence multiple feedback. Students might miss a few tags and they might go unanswered. This feature will provide students to keep track of answered tags and show them how many tags have they answered out of total tags on the page.&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
For counting, we are primarily concerned with two numbers: the number of possible tags for an assignment and the number of completed tags for an assignment. The latter is easy to calculate as it's directly stored as AnswerTags. The former is more difficult: possible tags are stored as TagPromptDeployments which do not have a 1:1 correspondence to the number of prompts the user sees on their page.&lt;br /&gt;
&lt;br /&gt;
[[File:E1953_UML.png]]&lt;br /&gt;
&lt;br /&gt;
The green classes are used to count the number of tags done, the red classes are used to count the number of tags possible, and the yellow classes are used to calculate both counts. All classes help to narrow the scope to a specific user and assignment.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Task 1 : Count answered tags in an assignment on Assignment Homepage ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
On clicking of particular Assignment, student can see his/her teams, work, scores, etc. There is no feature which allows student to show how many of the review tags has he/she answered on this page. This task implements this feature where student can see answered tags with respect to total tags in Assignment page. &lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/controllers/student_task_controller.rb'''&lt;br /&gt;
- The following code counts the number of Tags present in an assignment and total number of answered tags in that particular assignment. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @completed_tags = 0&lt;br /&gt;
    @total_tags = 0&lt;br /&gt;
    vmlist.each do |vm|&lt;br /&gt;
      vm.list_of_rows.each do |r|&lt;br /&gt;
        r.score_row.each do |row|&lt;br /&gt;
          vm_prompts = row.vm_prompts.select {|prompt| prompt.tag_dep.tag_prompt.control_type.downcase != &amp;quot;checkbox&amp;quot;}&lt;br /&gt;
          @total_tags += vm_prompts.count&lt;br /&gt;
          vm_prompts.each do |vm_prompt|&lt;br /&gt;
            answer_tag = AnswerTag.where(tag_prompt_deployment_id: vm_prompt.tag_dep, user_id: @participant.user_id, answer: vm_prompt.answer).first&lt;br /&gt;
            if !answer_tag.nil? and answer_tag.value != &amp;quot;0&amp;quot;&lt;br /&gt;
              @completed_tags += 1&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Task 2 : Count answered tags in an assignment per rounds on Summary Report Page ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
On clicking of particular Assignment&amp;gt;Your Scores&amp;gt; student can see his/her score. Student can also see all the reviews per rounds in particular assignment. This new feature will allow student to see number of answered tags per round with respect to number of total tags present in particular round &lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/controllers/grades_controller.rb'''&lt;br /&gt;
- The following code counts the number of Tags present in a round and total number of answered tags in that particular round. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @vmlist.each do |vm|&lt;br /&gt;
        if vm.round == @round&lt;br /&gt;
          vm.list_of_rows.each do |r|&lt;br /&gt;
            r.score_row.each do |row|&lt;br /&gt;
              vm_prompts = row.vm_prompts.select {|prompt| prompt.tag_dep.tag_prompt.control_type.downcase != &amp;quot;checkbox&amp;quot;}&lt;br /&gt;
              if vm_prompts.count &amp;gt; 0&lt;br /&gt;
                @total_tags += vm_prompts.count&lt;br /&gt;
                vm_prompts.each do |vm_prompt|&lt;br /&gt;
                  answer_tag = AnswerTag.where(tag_prompt_deployment_id: vm_prompt.tag_dep, user_id: @participant.user_id, answer: vm_prompt.answer).first&lt;br /&gt;
                  if !answer_tag.nil? and answer_tag.value != &amp;quot;0&amp;quot;&lt;br /&gt;
                    @completed_tags += 1&lt;br /&gt;
                  end&lt;br /&gt;
                end&lt;br /&gt;
              end&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
      @total_tags_array.append(@total_tags)&lt;br /&gt;
      @completed_tags_array.append(@completed_tags)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
[[File:E1953_FlowChart2.png]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== Unit Tests ===&lt;br /&gt;
Following shows the unit tests implemented for tagging feature&lt;br /&gt;
&lt;br /&gt;
=== Task 1 : Count answered tags in an assignment on Assignment Homepage ===&lt;br /&gt;
&lt;br /&gt;
==== Test Implemented ====&lt;br /&gt;
//Need to add code snapshot&lt;br /&gt;
&lt;br /&gt;
=== Task 2 : Count answered tags in an assignment per rounds on Summary Report Page ===&lt;br /&gt;
&lt;br /&gt;
==== Test Implemented ====&lt;br /&gt;
//Need to add code snapshot&lt;br /&gt;
&lt;br /&gt;
=== Regression Tests ===&lt;br /&gt;
Since new changes were added to existing function, we ran the existing tests to ensure none of them were failing.&lt;br /&gt;
&lt;br /&gt;
=== Manual Tests ===&lt;br /&gt;
We needed to check if the feature implemented were resulting the expected behavior. To test this we followed following steps:-&lt;br /&gt;
&lt;br /&gt;
1. Login as a student&lt;br /&gt;
&lt;br /&gt;
2. Select Assignment for Assignment Home Page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test Case 1'''&lt;br /&gt;
&lt;br /&gt;
This page should show number of tags completed and total tags present including all the rounds in that particular assignment. &lt;br /&gt;
&lt;br /&gt;
'''Test Case 2'''&lt;br /&gt;
&lt;br /&gt;
On selecting Your Scores on Student Task page, Each round should show Review Tagged Column&lt;br /&gt;
&lt;br /&gt;
'''Test Case 3'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should consist of tags completed and total tags count for that particular round&lt;br /&gt;
&lt;br /&gt;
'''Test Case 4'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should not consist of tags completed in all rounds and total tags count &lt;br /&gt;
&lt;br /&gt;
'''Test Case 5'''&lt;br /&gt;
&lt;br /&gt;
Review Tagged Column should dynamically increase or decrease tag count when user change their tagging.&lt;br /&gt;
&lt;br /&gt;
==Deployed Example==&lt;br /&gt;
Below are instructions for navigating through expertiza to see the review tags in action.&lt;br /&gt;
&lt;br /&gt;
'''1.''' Go to http://152.46.18.192:8080/ and log in as {username: student7552 password: password}. &lt;br /&gt;
&lt;br /&gt;
'''2.''' After you log in if you are not at the assignments landing page (152.46.18.192:8080//student_task/list) click on Assignments to navigate there. &lt;br /&gt;
&lt;br /&gt;
'''3.''' Click on &amp;quot;Final project (and design doc)&amp;quot; from the list of assignments in the table at the bottom of the page. &lt;br /&gt;
&lt;br /&gt;
'''4.''' Behold the tag counter next to the bullet labeled &amp;quot;Your scores&amp;quot;.  It reads (You have tagged the available tags completed / total available reviews). &lt;br /&gt;
&lt;br /&gt;
[[File:Assignment-page-tags.png]]&lt;br /&gt;
&lt;br /&gt;
'''5'''. Further, click on &amp;quot;Your scores&amp;quot;. On the next page that shows up, click on a row in the table to see the tags. Notice in the last column of the header of the table is a cell containing the available tags completed / total available tags. &lt;br /&gt;
&lt;br /&gt;
[[FIle:Per-round-tags.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
'''6.''' After clicking on a row to reveal tags drag the blue square towards 'No' or 'Yes' and refresh the page. Observe that the tags left / total tags has updated.&lt;br /&gt;
&lt;br /&gt;
'''7.''' To observe the new per round tagging capabilities log out and then log in as {username: student8115 password: password}. &lt;br /&gt;
&lt;br /&gt;
'''8.''' Select the first Program 2 from the list of assignments. In the next page click on &amp;quot;Your scores&amp;quot; as in step 4 above. Scroll down and behold tagging statistics for each round in the last column of the table headers.&lt;br /&gt;
&lt;br /&gt;
[[FIle:Per-round-tagging2.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
Mentor -Akanksha Mohan&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Spencer Yoder (smyoder)&lt;br /&gt;
* Mark Trawick (mtrawic)&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Github Repository for Expertiza]&lt;br /&gt;
# [http://wiki.expertiza.ncsu.edu/index.php/Documentation_on_Database_Tables Expertiza Documentation on Database Tables]&lt;br /&gt;
# [https://guides.rubyonrails.org/api_app.html Rails Guide Documentation]&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=127377</id>
		<title>CSC/ECE 517 Fall 2019 - E1953. Tagging report for student</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=127377"/>
		<updated>2019-11-06T20:48:30Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CSC/ECE 517 Fall 2019 - E1953. Tagging report for student&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
===About Expertiza ===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* If tagging is enabled, number of total tags per round is shown on student's score page&lt;br /&gt;
* Implemented feature which shows number of tags student have entered&lt;br /&gt;
* Implemented feature to show number of tags entered and total number of tags in Assignment page.&lt;br /&gt;
* Implemented feature to show tagging counts dynamically when student change tagging type in score page&lt;br /&gt;
* Added RSPEC testcases for testing changes done for tagging&lt;br /&gt;
&lt;br /&gt;
===About Tagging===&lt;br /&gt;
Expertiza has a feature of peer review where other teams can provide feedback on student's work. There is also another feature of &amp;quot;Tags&amp;quot;, where a student can answer if the feedback provided were helpful or not. Tags can vary from assignment to assignment but the main motive of it is to provide information on whether the feedback provides helpful information for student's assignment. The picture below shows an example of tags. &lt;br /&gt;
&lt;br /&gt;
[[File:Example-tags.png]]&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
For a particular assignment, there may be a lot of questions and hence multiple feedback. Students might miss a few tags and they might go unanswered. This feature will provide students to keep track of answered tags and show them how many tags have they answered out of total tags on the page.&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
For counting, we are primarily concerned with two numbers: the number of possible tags for an assignment and the number of completed tags for an assignment. The latter is easy to calculate as it's directly stored as AnswerTags. The former is more difficult: possible tags are stored as TagPromptDeployments which do not have a 1:1 correspondence to the number of prompts the user sees on their page.&lt;br /&gt;
&lt;br /&gt;
[[File:E1953_UML.png]]&lt;br /&gt;
&lt;br /&gt;
The green classes are used to count the number of tags done, the red classes are used to count the number of tags possible, and the yellow classes are used to calculate both counts. All classes help to narrow the scope to a specific user and assignment.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Task 1 : Count answered tags in an assignment on Assignment Homepage ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
On clicking of particular Assignment, student can see his/her teams, work, scores, etc. There is no feature which allows student to show how many of the review tags has he/she answered on this page. This task implements this feature where student can see answered tags with respect to total tags in Assignment page. &lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/controllers/student_task_controller.rb'''&lt;br /&gt;
- The following code counts the number of Tags present in an assignment and total number of answered tags in that particular assignment. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @completed_tags = 0&lt;br /&gt;
    @total_tags = 0&lt;br /&gt;
    vmlist.each do |vm|&lt;br /&gt;
      vm.list_of_rows.each do |r|&lt;br /&gt;
        r.score_row.each do |row|&lt;br /&gt;
          vm_prompts = row.vm_prompts.select {|prompt| prompt.tag_dep.tag_prompt.control_type.downcase != &amp;quot;checkbox&amp;quot;}&lt;br /&gt;
          @total_tags += vm_prompts.count&lt;br /&gt;
          vm_prompts.each do |vm_prompt|&lt;br /&gt;
            answer_tag = AnswerTag.where(tag_prompt_deployment_id: vm_prompt.tag_dep, user_id: @participant.user_id, answer: vm_prompt.answer).first&lt;br /&gt;
            if !answer_tag.nil? and answer_tag.value != &amp;quot;0&amp;quot;&lt;br /&gt;
              @completed_tags += 1&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Task 2 : Count answered tags in an assignment per rounds on Summary Report Page ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
On clicking of particular Assignment&amp;gt;Your Scores&amp;gt; student can see his/her score. Student can also see all the reviews per rounds in particular assignment. This new feature will allow student to see number of answered tags per round with respect to number of total tags present in particular round &lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/controllers/grades_controller.rb'''&lt;br /&gt;
- The following code counts the number of Tags present in a round and total number of answered tags in that particular round. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @vmlist.each do |vm|&lt;br /&gt;
        if vm.round == @round&lt;br /&gt;
          vm.list_of_rows.each do |r|&lt;br /&gt;
            r.score_row.each do |row|&lt;br /&gt;
              vm_prompts = row.vm_prompts.select {|prompt| prompt.tag_dep.tag_prompt.control_type.downcase != &amp;quot;checkbox&amp;quot;}&lt;br /&gt;
              if vm_prompts.count &amp;gt; 0&lt;br /&gt;
                @total_tags += vm_prompts.count&lt;br /&gt;
                vm_prompts.each do |vm_prompt|&lt;br /&gt;
                  answer_tag = AnswerTag.where(tag_prompt_deployment_id: vm_prompt.tag_dep, user_id: @participant.user_id, answer: vm_prompt.answer).first&lt;br /&gt;
                  if !answer_tag.nil? and answer_tag.value != &amp;quot;0&amp;quot;&lt;br /&gt;
                    @completed_tags += 1&lt;br /&gt;
                  end&lt;br /&gt;
                end&lt;br /&gt;
              end&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
      @total_tags_array.append(@total_tags)&lt;br /&gt;
      @completed_tags_array.append(@completed_tags)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
[[File:E1953_FlowChart2.png]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
==Deployed Example==&lt;br /&gt;
Below are instructions for navigating through expertiza to see the review tags in action.&lt;br /&gt;
&lt;br /&gt;
'''1.''' Go to http://152.46.18.192:8080/ and log in as {username: student7552 password: password}. &lt;br /&gt;
&lt;br /&gt;
'''2.''' After you log in if you are not at the assignments landing page (152.46.18.192:8080//student_task/list) click on Assignments to navigate there. &lt;br /&gt;
&lt;br /&gt;
'''3.''' Click on &amp;quot;Final project (and design doc)&amp;quot; from the list of assignments in the table at the bottom of the page. &lt;br /&gt;
&lt;br /&gt;
'''4.''' Behold the tag counter next to the bullet labeled &amp;quot;Your scores&amp;quot;.  It reads (You have tagged the available tags completed / total available reviews). &lt;br /&gt;
&lt;br /&gt;
[[File:Assignment-page-tags.png]]&lt;br /&gt;
&lt;br /&gt;
'''5'''. Further, click on &amp;quot;Your scores&amp;quot;. On the next page that shows up, click on a row in the table to see the tags. Notice in the last column of the header of the table is a cell containing the available tags completed / total available tags. &lt;br /&gt;
&lt;br /&gt;
[[FIle:Per-round-tags.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
'''6.''' After clicking on a row to reveal tags drag the blue square towards 'No' or 'Yes' and refresh the page. Observe that the tags left / total tags has updated.&lt;br /&gt;
&lt;br /&gt;
'''7.''' To observe the new per round tagging capabilities log out and then log in as {username: student8115 password: password}. &lt;br /&gt;
&lt;br /&gt;
'''8.''' Select the first Program 2 from the list of assignments. In the next page click on &amp;quot;Your scores&amp;quot; as in step 4 above. Scroll down and behold tagging statistics for each round in the last column of the table headers.&lt;br /&gt;
&lt;br /&gt;
[[FIle:Per-round-tagging2.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
Mentor -Akanksha Mohan&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Spencer Yoder (smyoder)&lt;br /&gt;
* Mark Trawick (mtrawic)&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Github Repository for Expertiza]&lt;br /&gt;
# [http://wiki.expertiza.ncsu.edu/index.php/Documentation_on_Database_Tables Expertiza Documentation on Database Tables]&lt;br /&gt;
# [https://guides.rubyonrails.org/api_app.html Rails Guide Documentation]&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=126286</id>
		<title>CSC/ECE 517 Fall 2019 - E1953. Tagging report for student</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=126286"/>
		<updated>2019-10-29T01:22:32Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Task 2 : Count answered tags in an assignment per rounds on Scores Homepage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CSC/ECE 517 Fall 2019 - E1953. Tagging report for student&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
===About Expertiza ===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* If tagging is enabled, number of total tags per round is shown on student's score page&lt;br /&gt;
* Implemented feature which shows number of tags student have entered&lt;br /&gt;
* Implemented feature to show number of tags entered and total number of tags in Assignment page.&lt;br /&gt;
* Implemented feature to show tagging counts dynamically when student change tagging type in score page&lt;br /&gt;
* Added RSPEC testcases for testing changes done for tagging&lt;br /&gt;
&lt;br /&gt;
===About Tagging===&lt;br /&gt;
Expertiza has a feature of peer review where other teams can provide feedback on student's work. There is also another feature of &amp;quot;Tags&amp;quot;, where a student can answer if the feedback provided were helpful or not. Tags can vary from assignment to assignment but the main motive of it is to provide information on whether the feedback provides helpful information for student's assignment&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
For a particular assignment, there may be a lot of questions and hence multiple feedback. Students might miss a few tags and they might go unanswered. This feature will provide students to keep track of answered tags and show them how many tags have they answered out of total tags on the page.&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
//yet to do&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Task 1 : Count answered tags in an assignment on Assignment Homepage ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
On clicking of particular Assignment, student can see his/her teams, work, scores, etc. There is no feature which allows student to show how many of the review tags has he/she answered on this page. This task implements this feature where student can see answered tags with respect to total tags in Assignment page. &lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/controllers/student_task_controller.rb'''&lt;br /&gt;
- The following code counts the number of Tags present in an assignment and total number of answered tags in that particular assignment. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @completed_tags = 0&lt;br /&gt;
    @total_tags = 0&lt;br /&gt;
    vmlist.each do |vm|&lt;br /&gt;
      vm.list_of_rows.each do |r|&lt;br /&gt;
        r.score_row.each do |row|&lt;br /&gt;
          vm_prompts = row.vm_prompts.select {|prompt| prompt.tag_dep.tag_prompt.control_type.downcase != &amp;quot;checkbox&amp;quot;}&lt;br /&gt;
          @total_tags += vm_prompts.count&lt;br /&gt;
          vm_prompts.each do |vm_prompt|&lt;br /&gt;
            answer_tag = AnswerTag.where(tag_prompt_deployment_id: vm_prompt.tag_dep, user_id: @participant.user_id, answer: vm_prompt.answer).first&lt;br /&gt;
            if !answer_tag.nil? and answer_tag.value != &amp;quot;0&amp;quot;&lt;br /&gt;
              @completed_tags += 1&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Task 2 : Count answered tags in an assignment per rounds on Summary Report Page ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
On clicking of particular Assignment&amp;gt;Your Scores&amp;gt; student can see his/her score. Student can also see all the reviews per rounds in particular assignment. This new feature will allow student to see number of answered tags per round with respect to number of total tags present in particular round &lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/controllers/grades_controller.rb'''&lt;br /&gt;
- The following code counts the number of Tags present in a round and total number of answered tags in that particular round. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @vmlist.each do |vm|&lt;br /&gt;
        if vm.round == @round&lt;br /&gt;
          vm.list_of_rows.each do |r|&lt;br /&gt;
            r.score_row.each do |row|&lt;br /&gt;
              vm_prompts = row.vm_prompts.select {|prompt| prompt.tag_dep.tag_prompt.control_type.downcase != &amp;quot;checkbox&amp;quot;}&lt;br /&gt;
              if vm_prompts.count &amp;gt; 0&lt;br /&gt;
                @total_tags += vm_prompts.count&lt;br /&gt;
                vm_prompts.each do |vm_prompt|&lt;br /&gt;
                  answer_tag = AnswerTag.where(tag_prompt_deployment_id: vm_prompt.tag_dep, user_id: @participant.user_id, answer: vm_prompt.answer).first&lt;br /&gt;
                  if !answer_tag.nil? and answer_tag.value != &amp;quot;0&amp;quot;&lt;br /&gt;
                    @completed_tags += 1&lt;br /&gt;
                  end&lt;br /&gt;
                end&lt;br /&gt;
              end&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
      @total_tags_array.append(@total_tags)&lt;br /&gt;
      @completed_tags_array.append(@completed_tags)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
[[File:E1953_FlowChart2.png]]&lt;br /&gt;
&lt;br /&gt;
==Deployed Example==&lt;br /&gt;
Below is instructions for navigating through expertiza to see the review tags in action.&lt;br /&gt;
&lt;br /&gt;
'''1.''' Go to http://152.46.19.137:8080 and log in as {username: student7552 password: password}. &lt;br /&gt;
&lt;br /&gt;
'''2.''' After you log in if you are not at the assignments landing page (152.46.19.137:8080/student_task/list) click on Assignments to navigate there. &lt;br /&gt;
&lt;br /&gt;
'''3.''' Click on &amp;quot;Final project (and design doc)&amp;quot; from the list of assignments in the table at the bottom of the page. &lt;br /&gt;
&lt;br /&gt;
'''4.''' Behold the tag counter next to the bullet labeled &amp;quot;Your scores&amp;quot;.  It reads (You have tagged the available tags completed / total available reviews). &lt;br /&gt;
&lt;br /&gt;
[[File:Assignment-page-tags.png]]&lt;br /&gt;
&lt;br /&gt;
'''5'''. Further, click on &amp;quot;Your scores&amp;quot;. On the next page that shows up, click on a row in the table to see the tags. Notice in the last column of the header of the table is a cell containing the available tags completed / total available tags. &lt;br /&gt;
&lt;br /&gt;
[[FIle:Per-round-tags.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
'''6.''' After clicking on a row to reveal tags drag the blue square towards 'No' or 'Yes' and refresh the page. Observe that the tags left / total tags has updated.&lt;br /&gt;
&lt;br /&gt;
'''7.''' To observe the new per round tagging capabilities log out and then log in as {username: student8115 password: password}. &lt;br /&gt;
&lt;br /&gt;
'''8.''' Select the first Program 2 from the list of assignments. In the next page click on &amp;quot;Your scores&amp;quot; as in step 4 above. Scroll down and behold tagging statistics for each round in the last column of the table headers.&lt;br /&gt;
&lt;br /&gt;
[[FIle:Per-round-tagging2.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
Mentor -Akanksha Mohan&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Spencer Yoder (smyoder)&lt;br /&gt;
* Mark Trawick (mtrawic)&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Github Repository for Expertiza]&lt;br /&gt;
# [http://wiki.expertiza.ncsu.edu/index.php/Documentation_on_Database_Tables Expertiza Documentation on Database Tables]&lt;br /&gt;
# [https://guides.rubyonrails.org/api_app.html Rails Guide Documentation]&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=126285</id>
		<title>CSC/ECE 517 Fall 2019 - E1953. Tagging report for student</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=126285"/>
		<updated>2019-10-29T01:21:46Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CSC/ECE 517 Fall 2019 - E1953. Tagging report for student&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
===About Expertiza ===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* If tagging is enabled, number of total tags per round is shown on student's score page&lt;br /&gt;
* Implemented feature which shows number of tags student have entered&lt;br /&gt;
* Implemented feature to show number of tags entered and total number of tags in Assignment page.&lt;br /&gt;
* Implemented feature to show tagging counts dynamically when student change tagging type in score page&lt;br /&gt;
* Added RSPEC testcases for testing changes done for tagging&lt;br /&gt;
&lt;br /&gt;
===About Tagging===&lt;br /&gt;
Expertiza has a feature of peer review where other teams can provide feedback on student's work. There is also another feature of &amp;quot;Tags&amp;quot;, where a student can answer if the feedback provided were helpful or not. Tags can vary from assignment to assignment but the main motive of it is to provide information on whether the feedback provides helpful information for student's assignment&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
For a particular assignment, there may be a lot of questions and hence multiple feedback. Students might miss a few tags and they might go unanswered. This feature will provide students to keep track of answered tags and show them how many tags have they answered out of total tags on the page.&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
//yet to do&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
=== Task 1 : Count answered tags in an assignment on Assignment Homepage ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
On clicking of particular Assignment, student can see his/her teams, work, scores, etc. There is no feature which allows student to show how many of the review tags has he/she answered on this page. This task implements this feature where student can see answered tags with respect to total tags in Assignment page. &lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/controllers/student_task_controller.rb'''&lt;br /&gt;
- The following code counts the number of Tags present in an assignment and total number of answered tags in that particular assignment. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @completed_tags = 0&lt;br /&gt;
    @total_tags = 0&lt;br /&gt;
    vmlist.each do |vm|&lt;br /&gt;
      vm.list_of_rows.each do |r|&lt;br /&gt;
        r.score_row.each do |row|&lt;br /&gt;
          vm_prompts = row.vm_prompts.select {|prompt| prompt.tag_dep.tag_prompt.control_type.downcase != &amp;quot;checkbox&amp;quot;}&lt;br /&gt;
          @total_tags += vm_prompts.count&lt;br /&gt;
          vm_prompts.each do |vm_prompt|&lt;br /&gt;
            answer_tag = AnswerTag.where(tag_prompt_deployment_id: vm_prompt.tag_dep, user_id: @participant.user_id, answer: vm_prompt.answer).first&lt;br /&gt;
            if !answer_tag.nil? and answer_tag.value != &amp;quot;0&amp;quot;&lt;br /&gt;
              @completed_tags += 1&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Task 2 : Count answered tags in an assignment per rounds on Scores Homepage ===&lt;br /&gt;
&lt;br /&gt;
==== Description ==== &lt;br /&gt;
On clicking of particular Assignment&amp;gt;Your Scores&amp;gt; student can see his/her score. Student can also see all the reviews per rounds in particular assignment. This new feature will allow student to see number of answered tags per round with respect to number of total tags present in particular round &lt;br /&gt;
&lt;br /&gt;
==== Code Implemented ==== &lt;br /&gt;
'''app/controllers/grades_controller.rb'''&lt;br /&gt;
- The following code counts the number of Tags present in a round and total number of answered tags in that particular round. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @vmlist.each do |vm|&lt;br /&gt;
        if vm.round == @round&lt;br /&gt;
          vm.list_of_rows.each do |r|&lt;br /&gt;
            r.score_row.each do |row|&lt;br /&gt;
              vm_prompts = row.vm_prompts.select {|prompt| prompt.tag_dep.tag_prompt.control_type.downcase != &amp;quot;checkbox&amp;quot;}&lt;br /&gt;
              if vm_prompts.count &amp;gt; 0&lt;br /&gt;
                @total_tags += vm_prompts.count&lt;br /&gt;
                vm_prompts.each do |vm_prompt|&lt;br /&gt;
                  answer_tag = AnswerTag.where(tag_prompt_deployment_id: vm_prompt.tag_dep, user_id: @participant.user_id, answer: vm_prompt.answer).first&lt;br /&gt;
                  if !answer_tag.nil? and answer_tag.value != &amp;quot;0&amp;quot;&lt;br /&gt;
                    @completed_tags += 1&lt;br /&gt;
                  end&lt;br /&gt;
                end&lt;br /&gt;
              end&lt;br /&gt;
            end&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
      @total_tags_array.append(@total_tags)&lt;br /&gt;
      @completed_tags_array.append(@completed_tags)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
[[File:E1953_FlowChart2.png]]&lt;br /&gt;
&lt;br /&gt;
==Deployed Example==&lt;br /&gt;
Below is instructions for navigating through expertiza to see the review tags in action.&lt;br /&gt;
&lt;br /&gt;
'''1.''' Go to http://152.46.19.137:8080 and log in as {username: student7552 password: password}. &lt;br /&gt;
&lt;br /&gt;
'''2.''' After you log in if you are not at the assignments landing page (152.46.19.137:8080/student_task/list) click on Assignments to navigate there. &lt;br /&gt;
&lt;br /&gt;
'''3.''' Click on &amp;quot;Final project (and design doc)&amp;quot; from the list of assignments in the table at the bottom of the page. &lt;br /&gt;
&lt;br /&gt;
'''4.''' Behold the tag counter next to the bullet labeled &amp;quot;Your scores&amp;quot;.  It reads (You have tagged the available tags completed / total available reviews). &lt;br /&gt;
&lt;br /&gt;
[[File:Assignment-page-tags.png]]&lt;br /&gt;
&lt;br /&gt;
'''5'''. Further, click on &amp;quot;Your scores&amp;quot;. On the next page that shows up, click on a row in the table to see the tags. Notice in the last column of the header of the table is a cell containing the available tags completed / total available tags. &lt;br /&gt;
&lt;br /&gt;
[[FIle:Per-round-tags.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
'''6.''' After clicking on a row to reveal tags drag the blue square towards 'No' or 'Yes' and refresh the page. Observe that the tags left / total tags has updated.&lt;br /&gt;
&lt;br /&gt;
'''7.''' To observe the new per round tagging capabilities log out and then log in as {username: student8115 password: password}. &lt;br /&gt;
&lt;br /&gt;
'''8.''' Select the first Program 2 from the list of assignments. In the next page click on &amp;quot;Your scores&amp;quot; as in step 4 above. Scroll down and behold tagging statistics for each round in the last column of the table headers.&lt;br /&gt;
&lt;br /&gt;
[[FIle:Per-round-tagging2.png‎ ]]&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
Mentor -Akanksha Mohan&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Spencer Yoder (smyoder)&lt;br /&gt;
* Mark Trawick (mtrawic)&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Github Repository for Expertiza]&lt;br /&gt;
# [http://wiki.expertiza.ncsu.edu/index.php/Documentation_on_Database_Tables Expertiza Documentation on Database Tables]&lt;br /&gt;
# [https://guides.rubyonrails.org/api_app.html Rails Guide Documentation]&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=125954</id>
		<title>CSC/ECE 517 Fall 2019 - E1953. Tagging report for student</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=125954"/>
		<updated>2019-10-28T20:07:50Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: /* FlowChart */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CSC/ECE 517 Fall 2019 - E1953. Tagging report for student&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
===About Expertiza ===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* If tagging is enabled, number of total tags per round is shown on student's score page&lt;br /&gt;
* Implemented feature which shows number of tags student have entered&lt;br /&gt;
* Implemented feature to show number of tags entered and total number of tags in Assignment page.&lt;br /&gt;
* Implemented feature to show tagging counts dynamically when student change tagging type in score page&lt;br /&gt;
* Added RSPEC testcases for testing changes done for tagging&lt;br /&gt;
&lt;br /&gt;
===About Tagging===&lt;br /&gt;
Expertiza has a feature of peer review where other teams can provide feedback on student's work. There is also another feature of &amp;quot;Tags&amp;quot;, where a student can answer if the feedback provided were helpful or not. Tags can vary from assignment to assignment but the main motive of it is to provide information on whether the feedback provides helpful information for student's assignment&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
For a particular assignment, there may be a lot of questions and hence multiple feedback. Students might miss a few tags and they might go unanswered. This feature will provide students to keep track of answered tags and show them how many tags have they answered out of total tags on the page.&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
//yet to do&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
//yet to do&lt;br /&gt;
&lt;br /&gt;
==Process==&lt;br /&gt;
[[File:E1953_FlowChart2.png]]&lt;br /&gt;
&lt;br /&gt;
==Testing with UI==&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
Mentor -Akanksha Mohan&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Spencer Yoder (smyoder)&lt;br /&gt;
* Mark Trawick (mtrawic)&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Github Repository for Expertiza]&lt;br /&gt;
# [http://wiki.expertiza.ncsu.edu/index.php/Documentation_on_Database_Tables Expertiza Documentation on Database Tables]&lt;br /&gt;
# [https://guides.rubyonrails.org/api_app.html Rails Guide Documentation]&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=125898</id>
		<title>CSC/ECE 517 Fall 2019 - E1953. Tagging report for student</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2019_-_E1953._Tagging_report_for_student&amp;diff=125898"/>
		<updated>2019-10-28T18:02:24Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CSC/ECE 517 Fall 2019 - E1953. Tagging report for student&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
===About Expertiza ===&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* If tagging is enabled, number of total tags per round is shown on student's score page&lt;br /&gt;
* Implemented feature which shows number of tags student have entered&lt;br /&gt;
* Implemented feature to show number of tags entered and total number of tags in Assignment page.&lt;br /&gt;
* Implemented feature to show tagging counts dynamically when student change tagging type in score page&lt;br /&gt;
* Added RSPEC testcases for testing changes done for tagging&lt;br /&gt;
&lt;br /&gt;
===About Tagging===&lt;br /&gt;
Expertiza has a feature of peer review where other teams can provide feedback on student's work. There is also another feature of &amp;quot;Tags&amp;quot;, where a student can answer if the feedback provided were helpful or not. Tags can vary from assignment to assignment but the main motive of it is to provide information on whether the feedback provides helpful information for student's assignment&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
For a particular assignment, there may be a lot of questions and hence multiple feedback. Students might miss a few tags and they might go unanswered. This feature will provide students to keep track of answered tags and show them how many tags have they answered out of total tags on the page.&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
//yet to do&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
//yet to do&lt;br /&gt;
&lt;br /&gt;
==FlowChart==&lt;br /&gt;
[[File:E1953_FlowChart2.png]]&lt;br /&gt;
&lt;br /&gt;
==Teammates==&lt;br /&gt;
Mentor -Akanksha Mohan&lt;br /&gt;
&lt;br /&gt;
* Sameer Adhikari (sadhika2)&lt;br /&gt;
* Spencer Yoder (smyoder)&lt;br /&gt;
* Mark Trawick (mtrawic)&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Github Repository for Expertiza]&lt;br /&gt;
# [http://wiki.expertiza.ncsu.edu/index.php/Documentation_on_Database_Tables Expertiza Documentation on Database Tables]&lt;br /&gt;
# [https://guides.rubyonrails.org/api_app.html Rails Guide Documentation]&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:E1953_FlowChart2.png&amp;diff=125897</id>
		<title>File:E1953 FlowChart2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:E1953_FlowChart2.png&amp;diff=125897"/>
		<updated>2019-10-28T18:02:05Z</updated>

		<summary type="html">&lt;p&gt;Sadhika2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sadhika2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:E1953_FlowChart1.png&amp;diff=125894</id>
		<title>File:E1953 FlowChart1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:E1953_FlowChart1.png&amp;diff=125894"/>
		<updated>2019-10-28T17:59:17Z</updated>

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