<?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=Jasanch3</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=Jasanch3"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Jasanch3"/>
	<updated>2026-05-23T14:24:36Z</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_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=137796</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=137796"/>
		<updated>2020-11-24T17:16:12Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* Possible Future Enhancements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   Background   ===&lt;br /&gt;
Currently, Expertiza has no way to associate mentors with teams. For assignments with topics, like the OSS project, mentors are associated with topics, and then whichever team is assigned to the topic inherits the mentor for that topic, However, for assignments without topics (like Program 2), there is no good way to “automatically” assign mentors to projects. Keeping this in mind our code is set to work under the following conditions: &lt;br /&gt;
&lt;br /&gt;
*'''Assignment teams created for an assignment without topics'''&lt;br /&gt;
*'''Mentors (''Instructors and TAs'') are only assigned to assignment teams if they have been added to an assignment as participants'''&lt;br /&gt;
&lt;br /&gt;
We've created the following [https://youtu.be/RQJinX6gcrA video] to demonstrate the added functionality. As well as the following [https://youtu.be/nAS0WxzFAsA video] which demonstrates what happens when teams are created when no mentors have been added as participants to an assignment.&lt;br /&gt;
&lt;br /&gt;
===   Objectives   ===&lt;br /&gt;
1. Assign a TA or instructor as a mentor for a team created for an assignment without topics&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===   Previous Work   ===&lt;br /&gt;
We learned from previous implementations and looked to avoid the following pitfalls when implementing our solution:&lt;br /&gt;
&lt;br /&gt;
*Code was merged from the previous team, but not refactored, so a lot of unused code remained.&lt;br /&gt;
*Should have followed a better naming convention for methods&lt;br /&gt;
*Some redundant codes in the views could be DRYed out.&lt;br /&gt;
*Commented code should be removed.&lt;br /&gt;
*Some complex logic is added but not explained in the comments.&lt;br /&gt;
*Code should be placed in most relevant classes. (E.g. Do not put email code in the Team class).&lt;br /&gt;
*Documentation doesn't accurately represent implementation.&lt;br /&gt;
*Lacked sufficient detail for Test section.&lt;br /&gt;
&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
===   Program Design   ===&lt;br /&gt;
Our implementation begins when an assignment team is created. If the assignment is associated with a topic, the created team will not be assigned a mentor. If the assignment does not have a topic, a hash of potential mentors is retrieved. This hash is created from the TAs and instructors added to the assignment as participants. The keys of the hash correspond to the mentor's participant id while their values are the number of times the mentor has been assigned to mentor teams. The mentor with the lowest number of assigned teams will be the next mentor assigned to a newly created team. Once the team is assigned a mentor, an email is sent out to the mentor and students in the team to notify them of their mentor assignment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''First Design: '''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Program_Design.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ultimately we were able to implement the following design:&amp;lt;br&amp;gt;&lt;br /&gt;
'''Final Design: '''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Final_Program_Design_2.png]] &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We created the following assignment_teams_mentors table with the following connections to existing tables. The new table created is responsible for storing all the mentors assigned to the various teams created. In order to do so, the assignment_team_mentors table will reference the participants and teams tables. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Schema_Modifications_UML_2.png|500px]]&lt;br /&gt;
&lt;br /&gt;
We will also modify the participants table to add an additional Boolean column, '''can_mentor'''. This column will help determine what TAs and instructors can mentor for a specified assignment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently instructors see the corresponding view when looking at teams associated with an assignment:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Our team proposed adding an additional &amp;quot;Mentors&amp;quot; column in the instructor view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Currently students see the corresponding view when looking at their team for an assignment:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our team originally proposed to add an additional &amp;quot;Mentors&amp;quot; section in the student view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
===   Files Modified/Created   ===&lt;br /&gt;
These are the files we have modified/created throughout our project and a brief excerpt about what was done:&lt;br /&gt;
&lt;br /&gt;
'''Database'''&lt;br /&gt;
*'''Schema.rb'''&lt;br /&gt;
**Created assignment_team_mentors table which references the participants table and teams tables thru foreign keys created with the assignment_team_mentors_id column and assignment_team_id column. The assignment_team_mentors table is responsible for storing all the mentors assigned to the various assignment teams created.&lt;br /&gt;
**Created a can_mentor column for the participants table in order to be able to know who was a mentor and who was a student.&lt;br /&gt;
[[File:Db_migrations.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
'''Models'''&lt;br /&gt;
*'''assignment_team_mentor.rb'''&lt;br /&gt;
**Responsible for ensuring mentor with the least number of teams mentored, gets assigned to the next team created.&lt;br /&gt;
**Started to add mailer functionality for notifying the mentor assigned.&lt;br /&gt;
[[File:Assignment_team_mentor.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*'''assignment_team.rb'''&lt;br /&gt;
**Established a has_one: active record relation with AssignmentTeamMentor model. This ensures a team only has one team mentor.&lt;br /&gt;
[[File:Assignment_team_to_assignment_team_mentor_relation.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*'''participant.rb'''&lt;br /&gt;
**Established a has_many: active record relation with AssignmentTeamMentor model. This provides the flexibility of a potential mentor added as a participant to an assignment, to mentor multiple teams created for an assignment.&lt;br /&gt;
[[File:Participant_to_assignment_mentor_relation.png|1000px]]&lt;br /&gt;
**Added a function to set the new can_mentor column for a participant.&lt;br /&gt;
**Added a function to get a list of all participants who can be mentors for a specified assignment based on the can_mentor column.&lt;br /&gt;
[[File:Participant_model_added_methods_2.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
'''Controllers'''&lt;br /&gt;
*'''teams_controller.rb'''&lt;br /&gt;
**The following code was added within the create method.&lt;br /&gt;
**Calls on AssignmentTeamMentor to assign mentor for instructor created teams. Will generate notice if unable to assign mentor to recently created team.&lt;br /&gt;
[[File:Teams_controller.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
**The following code was added within the list method.&lt;br /&gt;
**A hash is generated with the assigned mentor of each team.&lt;br /&gt;
[[File:Teams_controller_list.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*'''student_teams_controllers.rb'''&lt;br /&gt;
**The following code was added within the create method.&lt;br /&gt;
**Calls on AssignmentTeamMentor to assign mentor for student created teams. Will generate notice if unable to assign mentor to recently created team.&lt;br /&gt;
[[File:Student_teams_controller_create.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
**The following code was added within the view method.&lt;br /&gt;
[[File:Student_teams_controller_view.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*'''teams_user_controller.rb'''&lt;br /&gt;
**added code to send the email when a user is added to a team to the mentor.&lt;br /&gt;
*'''participants_controller.rb'''&lt;br /&gt;
**updates the can_mentor column of a participant when they are added to an assignment&lt;br /&gt;
&lt;br /&gt;
'''Views'''&lt;br /&gt;
*'''views/tree_display/_page_footer.html.erb'''&lt;br /&gt;
**displays mentor column header.&lt;br /&gt;
[[File:Row_header.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*'''views/tree_display/_row_header.html.erb'''&lt;br /&gt;
**displays either mentor assigned or &amp;quot;No mentor assigned&amp;quot; for team level. For team participant level, blank cell is displayed.&lt;br /&gt;
[[File:Table_row.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*'''views/student_teams/view.html.erb'''&lt;br /&gt;
**responsible for displaying to a student the mentor assigned to their team for an assignment.&lt;br /&gt;
[[File:Student_view_code.png]]&lt;br /&gt;
&lt;br /&gt;
*'''views/mailer/notify_member.html.erb'''&lt;br /&gt;
**responsible for managing the template of the mail sent to the mentor&lt;br /&gt;
'''Mailers'''&lt;br /&gt;
*'''app/mailers/mailer.rb'''&lt;br /&gt;
**responsible for managing the mailer functionally for notifying the member&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Rspec'''&lt;br /&gt;
*'''assignment_team_mentor_spec.rb'''&lt;br /&gt;
[[File:AssignmentTeamMentorSpec_Latest.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
*'''participant_spec.rb'''&lt;br /&gt;
**The following tests were added to validate our changes made to the Participant model.&lt;br /&gt;
[[File:Participant_spec_modifications.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
=== Testing Plan ===&lt;br /&gt;
&lt;br /&gt;
==== ''Edge Cases'' ====&lt;br /&gt;
The following are scenarios our team has thought about:&lt;br /&gt;
&lt;br /&gt;
Edge Case 1: How will we handle the &amp;quot;Has topic?&amp;quot; check box being changed when editing the assignment in the instructor view. This button is how we decide if we need to assign mentors to a team.&lt;br /&gt;
   Option A: Always run our algorithm for each assignment made and only show which mentors are assigned if the &amp;quot;Has topic?&amp;quot; is not checked&lt;br /&gt;
   Option B: Add the functionality to add and remove mentors for all assignments, not just assignments without topics then add and remove mentors when an assignment is edited.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_hasTopics_checkbox.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Edge Case 2: No mentors exist&lt;br /&gt;
   Option A: Don't assign mentors&lt;br /&gt;
   Option B: Prevent creation of teams&lt;br /&gt;
&lt;br /&gt;
==== ''RSpec Test'' ====&lt;br /&gt;
RSpec test to check:&lt;br /&gt;
* Validation of the model created (AssignmentTeamMentor) and the model modified (Participant).&lt;br /&gt;
&lt;br /&gt;
==== ''UI Test'' ====&lt;br /&gt;
As an instructor we were able to confirm the following UI changes after mentors were assigned to teams:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view.png|1000px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
As a student we were able to confirm the following UI changes when a mentor has been assigned to their team:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
'''The following [https://youtu.be/RQJinX6gcrA video] further expands on this UI testing.'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As an instructor we were able to confirm the following UI changes after teams were created when no mentors had been added participants:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:No_mentor_participants_instructors_view.png|1000px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a student we were able to confirm the following UI changes when a team was created without mentor participants for the assignment:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:No_mentor_participants_students_view.png|1000px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''The following [https://youtu.be/nAS0WxzFAsA video] further expands on this UI testing.'''&lt;br /&gt;
&lt;br /&gt;
=== Possible Future Enhancements ===&lt;br /&gt;
&lt;br /&gt;
*Providing ability to manually select the mentor for a team created. Such as providing a drop down list of available mentors to choose from in the following view.&lt;br /&gt;
[[File:Instructor_view.png|1000px]]&lt;br /&gt;
*Refactor email functionality code and continue to develop to allow for the assignment team members to be notified of new assigned mentor or any other added members.&lt;br /&gt;
[[File:Final_Program_Design_Enhancement.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[https://github.com/GitHubSanti/expertiza/tree/beta_project4 Github Repository] &amp;lt;br&amp;gt;&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1826 Pull Request]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://youtu.be/RQJinX6gcrA assigning of team mentor to newly created team video]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://youtu.be/nAS0WxzFAsA team creation without mentor participants video]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=137407</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=137407"/>
		<updated>2020-11-17T22:28:03Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* Files Modified/Created */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   Background   ===&lt;br /&gt;
Currently, Expertiza has no way to associate mentors with teams. For assignments with topics, like the OSS project, mentors are associated with topics, and then whichever team is assigned to the topic inherits the mentor for that topic, However, for assignments without topics (like Program 2), there is no good way to “automatically” assign mentors to projects. Keeping this in mind our code is set to work under the following conditions: &lt;br /&gt;
&lt;br /&gt;
*'''Assignment teams created for an assignment without topics'''&lt;br /&gt;
*'''Mentors (''Instructors and TAs'') are only assigned to assignment teams if they have been added to an assignment as participants'''&lt;br /&gt;
&lt;br /&gt;
We've created the following [https://youtu.be/RQJinX6gcrA video] to demonstrate the added functionality. As well as the following [https://youtu.be/nAS0WxzFAsA video] which demonstrates what happens when teams are created when no mentors have been added as participants to an assignment.&lt;br /&gt;
&lt;br /&gt;
===   Objectives   ===&lt;br /&gt;
1. Assign a TA or instructor as a mentor for a team created for an assignment without topics&amp;lt;br&amp;gt;&lt;br /&gt;
2. Notify mentor and individuals of a team via Email when a mentor has been assigned&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===   Previous Work   ===&lt;br /&gt;
We learned from previous implementations and looked to avoid the following pitfalls when implementing our solution:&lt;br /&gt;
&lt;br /&gt;
*Code was merged from the previous team, but not refactored, so a lot of unused code remained.&lt;br /&gt;
*Should have followed a better naming convention for methods&lt;br /&gt;
*Some redundant codes in the views could be DRYed out.&lt;br /&gt;
*Commented code should be removed.&lt;br /&gt;
*Some complex logic is added but not explained in the comments.&lt;br /&gt;
*Code should be placed in most relevant classes. (E.g. Do not put email code in the Team class).&lt;br /&gt;
*Documentation doesn't accurately represent implementation.&lt;br /&gt;
*Lacked sufficient detail for Test section.&lt;br /&gt;
&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
===   Program Design   ===&lt;br /&gt;
Our implementation begins when an assignment team is created. If the assignment is associated with a topic, the created team will not be assigned a mentor. If the assignment does not have a topic, a hash of potential mentors is retrieved. This hash is created from the TAs and instructors added to the assignment as participants. The keys of the hash correspond to the mentor's participant id while their values are the number of times the mentor has been assigned to mentor teams. The mentor with the lowest number of assigned teams will be the next mentor assigned to a newly created team. Once the team is assigned a mentor, an email is sent out to the mentor and students in the team to notify them of their mentor assignment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Program_Design.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We created the following assignment_teams_mentors table with the following connections to existing tables. The new table created is responsible for storing all the mentors assigned to the various teams created. In order to do so, the assignment_team_mentors table will reference the participants and teams tables. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Schema_Modifications_UML_2.png|500px]]&lt;br /&gt;
&lt;br /&gt;
We will also modify the participants table to add an additional Boolean column, '''can_mentor'''. This column will help determine what TAs and instructors can mentor for a specified assignment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently instructors see the corresponding view when looking at teams associated with an assignment:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; column in the instructor view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Currently students see the corresponding view when looking at their team for an assignment:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; section in the student view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
===   Files Modified/Created   ===&lt;br /&gt;
These are the files we have modified/created throughout our project and a brief excerpt about what was done:&lt;br /&gt;
&lt;br /&gt;
'''Database'''&lt;br /&gt;
*Schema.rb&lt;br /&gt;
**Created assignment_team_mentors table which references the participants table and teams tables thru foreign keys created with the assignment_team_mentors_id column and assignment_team_id column. The assignment_team_mentors table is responsible for storing all the mentors assigned to the various assignment teams created&lt;br /&gt;
**Created a can_mentor column for the participants table in order to be able to know who was a mentor and who was a student&lt;br /&gt;
&lt;br /&gt;
'''Models'''&lt;br /&gt;
*assignment_team_mentor.rb&lt;br /&gt;
**responsible for ensuring mentor with the least number of teams mentored, gets assigned to the next team created.&lt;br /&gt;
**added mailer functionality for notifying the mentor&lt;br /&gt;
*assignment_team.rb&lt;br /&gt;
**established a has_one: active record relation with AssignmentTeamMentor model. This ensures a team only has one team mentor.&lt;br /&gt;
*participant.rb&lt;br /&gt;
**established a has_many: active record relation with AssignmentTeamMentor model. This provides the flexibility of a potential mentor added as a participant to an assignment, to mentor multiple teams created for an assignment.&lt;br /&gt;
*participant.rb&lt;br /&gt;
**&lt;br /&gt;
&lt;br /&gt;
'''Controllers'''&lt;br /&gt;
*teams_controller.rb&lt;br /&gt;
**Calls on AssignmentTeamMentor to assign mentor for instructor created teams.&lt;br /&gt;
**added functionality to send email to mentor when assigned to a team.&lt;br /&gt;
*student_teams_controllers.rb&lt;br /&gt;
**Calls on AssignmentTeamMentor to assign mentor for student created teams.&lt;br /&gt;
*teams_user_controller.rb&lt;br /&gt;
**added code to send the email when a user is added to a team to the mentor.&lt;br /&gt;
&lt;br /&gt;
'''Views'''&lt;br /&gt;
*views/tree_display/_page_footer.html.erb&lt;br /&gt;
**displays mentor column header.&lt;br /&gt;
*views/tree_display/_row_header.html.erb&lt;br /&gt;
**displays either mentor assigned or &amp;quot;No mentor assigned&amp;quot; for team level. For team participant level, blank cell is displayed.&lt;br /&gt;
&lt;br /&gt;
*views/student_teams/view.html.erb&lt;br /&gt;
**responsible for displaying to a student the mentor assigned to their team for an assignment.&lt;br /&gt;
&lt;br /&gt;
*views/mailer/notify_member.html.erb&lt;br /&gt;
**responsible for managing the template of the mail sent to the mentor&lt;br /&gt;
'''Mailers'''&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
**responsible for managing the mailer functionally for notifying the member&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''RSPEC'''&lt;br /&gt;
&lt;br /&gt;
=== Testing Plan ===&lt;br /&gt;
&lt;br /&gt;
==== ''Edge Cases'' ====&lt;br /&gt;
The following are scenarios our team has thought about:&lt;br /&gt;
&lt;br /&gt;
Edge Case 1: How will we handle the &amp;quot;Has topic?&amp;quot; check box being changed when editing the assignment in the instructor view. This button is how we decide if we need to assign mentors to a team.&lt;br /&gt;
   Option A: Always run our algorithm for each assignment made and only show which mentors are assigned if the &amp;quot;Has topic?&amp;quot; is not checked&lt;br /&gt;
   Option B: Add the functionality to add and remove mentors for all assignments, not just assignments without topics then add and remove mentors when an assignment is edited.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_hasTopics_checkbox.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Edge Case 2: No mentors exist&lt;br /&gt;
   Option A: Don't assign mentors&lt;br /&gt;
   Option B: Prevent creation of teams&lt;br /&gt;
&lt;br /&gt;
==== ''RSpec Test'' ====&lt;br /&gt;
RSpec test to check:&lt;br /&gt;
* Validation of the models&lt;br /&gt;
* Functionality of controllers&lt;br /&gt;
&lt;br /&gt;
==== ''UI Test'' ====&lt;br /&gt;
In the UI test we are going to verify that:&lt;br /&gt;
As an instructor should be able to see, the following:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A student should be able to see the following after viewing their team for an assignment:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
This is what the mentor should see:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Email to mentor.png]]&lt;br /&gt;
&lt;br /&gt;
=== Potential Future Enhancements ===&lt;br /&gt;
&lt;br /&gt;
1. Implementing manual mentor assignment capability for instructors assign mentors to a team.&lt;br /&gt;
2. Refactor email functionality code&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1826 Github Repository] &amp;lt;br&amp;gt;&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1826 Pull Request]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://youtu.be/RQJinX6gcrA mentor assignment video]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://youtu.be/nAS0WxzFAsA team creation without mentor participants video]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=137403</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=137403"/>
		<updated>2020-11-17T22:22:52Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* Potential Future Enhancements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   Background   ===&lt;br /&gt;
Currently, Expertiza has no way to associate mentors with teams. For assignments with topics, like the OSS project, mentors are associated with topics, and then whichever team is assigned to the topic inherits the mentor for that topic, However, for assignments without topics (like Program 2), there is no good way to “automatically” assign mentors to projects. Keeping this in mind our code is set to work under the following conditions: &lt;br /&gt;
&lt;br /&gt;
*'''Assignment teams created for an assignment without topics'''&lt;br /&gt;
*'''Mentors (''Instructors and TAs'') are only assigned to assignment teams if they have been added to an assignment as participants'''&lt;br /&gt;
&lt;br /&gt;
We've created the following [https://youtu.be/RQJinX6gcrA video] to demonstrate the added functionality. As well as the following [https://youtu.be/nAS0WxzFAsA video] which demonstrates what happens when teams are created when no mentors have been added as participants to an assignment.&lt;br /&gt;
&lt;br /&gt;
===   Objectives   ===&lt;br /&gt;
1. Assign a TA or instructor as a mentor for a team created for an assignment without topics&amp;lt;br&amp;gt;&lt;br /&gt;
2. Notify mentor and individuals of a team via Email when a mentor has been assigned&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===   Previous Work   ===&lt;br /&gt;
We learned from previous implementations and looked to avoid the following pitfalls when implementing our solution:&lt;br /&gt;
&lt;br /&gt;
*Code was merged from the previous team, but not refactored, so a lot of unused code remained.&lt;br /&gt;
*Should have followed a better naming convention for methods&lt;br /&gt;
*Some redundant codes in the views could be DRYed out.&lt;br /&gt;
*Commented code should be removed.&lt;br /&gt;
*Some complex logic is added but not explained in the comments.&lt;br /&gt;
*Code should be placed in most relevant classes. (E.g. Do not put email code in the Team class).&lt;br /&gt;
*Documentation doesn't accurately represent implementation.&lt;br /&gt;
*Lacked sufficient detail for Test section.&lt;br /&gt;
&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
===   Program Design   ===&lt;br /&gt;
Our implementation begins when an assignment team is created. If the assignment is associated with a topic, the created team will not be assigned a mentor. If the assignment does not have a topic, a hash of potential mentors is retrieved. This hash is created from the TAs and instructors added to the assignment as participants. The keys of the hash correspond to the mentor's participant id while their values are the number of times the mentor has been assigned to mentor teams. The mentor with the lowest number of assigned teams will be the next mentor assigned to a newly created team. Once the team is assigned a mentor, an email is sent out to the mentor and students in the team to notify them of their mentor assignment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Program_Design.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We created the following assignment_teams_mentors table with the following connections to existing tables. The new table created is responsible for storing all the mentors assigned to the various teams created. In order to do so, the assignment_team_mentors table will reference the participants and teams tables. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Schema_Modifications_UML_2.png|500px]]&lt;br /&gt;
&lt;br /&gt;
We will also modify the participants table to add an additional Boolean column, '''can_mentor'''. This column will help determine what TAs and instructors can mentor for a specified assignment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently instructors see the corresponding view when looking at teams associated with an assignment:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; column in the instructor view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Currently students see the corresponding view when looking at their team for an assignment:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; section in the student view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
===   Files Modified/Created   ===&lt;br /&gt;
These are the files we have modified/created throughout our project and a brief excerpt about what was done:&lt;br /&gt;
&lt;br /&gt;
'''Database'''&lt;br /&gt;
*Schema.rb&lt;br /&gt;
**Created assignment_team_mentors table which references the participants table and teams tables thru foreign keys created with the assignment_team_mentors_id column and assignment_team_id column. The assignment_team_mentors table is responsible for storing all the mentors assigned to the various assignment teams created.&lt;br /&gt;
&lt;br /&gt;
'''Models'''&lt;br /&gt;
*assignment_team_mentor.rb&lt;br /&gt;
**responsible for ensuring mentor with the least number of teams mentored, gets assigned to the next team created.&lt;br /&gt;
**added mailer functionality for notifying the mentor&lt;br /&gt;
*assignment_team.rb&lt;br /&gt;
**established a has_one: active record relation with AssignmentTeamMentor model. This ensures a team only has one team mentor.&lt;br /&gt;
*participant.rb&lt;br /&gt;
**established a has_many: active record relation with AssignmentTeamMentor model. This provides the flexibility of a potential mentor added as a participant to an assignment, to mentor multiple teams created for an assignment.&lt;br /&gt;
*participant.rb&lt;br /&gt;
**&lt;br /&gt;
&lt;br /&gt;
'''Controllers'''&lt;br /&gt;
*teams_controller.rb&lt;br /&gt;
**Calls on AssignmentTeamMentor to assign mentor for instructor created teams.&lt;br /&gt;
**added functionality to send email to mentor when assigned to a team.&lt;br /&gt;
*student_teams_controllers.rb&lt;br /&gt;
**Calls on AssignmentTeamMentor to assign mentor for student created teams.&lt;br /&gt;
*teams_user_controller.rb&lt;br /&gt;
**added code to send the email when a user is added to a team to the mentor.&lt;br /&gt;
&lt;br /&gt;
'''Views'''&lt;br /&gt;
*views/tree_display/_page_footer.html.erb&lt;br /&gt;
**displays mentor column header.&lt;br /&gt;
*views/tree_display/_row_header.html.erb&lt;br /&gt;
**displays either mentor assigned or &amp;quot;No mentor assigned&amp;quot; for team level. For team participant level, blank cell is displayed.&lt;br /&gt;
&lt;br /&gt;
*views/student_teams/view.html.erb&lt;br /&gt;
**responsible for displaying to a student the mentor assigned to their team for an assignment.&lt;br /&gt;
&lt;br /&gt;
*views/mailer/notify_member.html.erb&lt;br /&gt;
**responsible for managing the template of the mail sent to the mentor&lt;br /&gt;
'''Mailers'''&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
**responsible for managing the mailer functionally for notifying the member&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''RSPEC'''&lt;br /&gt;
&lt;br /&gt;
=== Testing Plan ===&lt;br /&gt;
&lt;br /&gt;
==== ''Edge Cases'' ====&lt;br /&gt;
The following are scenarios our team has thought about:&lt;br /&gt;
&lt;br /&gt;
Edge Case 1: How will we handle the &amp;quot;Has topic?&amp;quot; check box being changed when editing the assignment in the instructor view. This button is how we decide if we need to assign mentors to a team.&lt;br /&gt;
   Option A: Always run our algorithm for each assignment made and only show which mentors are assigned if the &amp;quot;Has topic?&amp;quot; is not checked&lt;br /&gt;
   Option B: Add the functionality to add and remove mentors for all assignments, not just assignments without topics then add and remove mentors when an assignment is edited.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_hasTopics_checkbox.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Edge Case 2: No mentors exist&lt;br /&gt;
   Option A: Don't assign mentors&lt;br /&gt;
   Option B: Prevent creation of teams&lt;br /&gt;
&lt;br /&gt;
==== ''RSpec Test'' ====&lt;br /&gt;
RSpec test to check:&lt;br /&gt;
* Validation of the models&lt;br /&gt;
* Functionality of controllers&lt;br /&gt;
&lt;br /&gt;
==== ''UI Test'' ====&lt;br /&gt;
In the UI test we are going to verify that:&lt;br /&gt;
As an instructor should be able to see, the following:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A student should be able to see the following after viewing their team for an assignment:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
This is what the mentor should see:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Email to mentor.png]]&lt;br /&gt;
&lt;br /&gt;
=== Potential Future Enhancements ===&lt;br /&gt;
&lt;br /&gt;
1. Implementing manual mentor assignment capability for instructors assign mentors to a team.&lt;br /&gt;
2. Refactor email functionality code&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1826 Github Repository] &amp;lt;br&amp;gt;&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1826 Pull Request]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://youtu.be/RQJinX6gcrA mentor assignment video]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://youtu.be/nAS0WxzFAsA team creation without mentor participants video]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=137402</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=137402"/>
		<updated>2020-11-17T22:21:51Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* UI Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   Background   ===&lt;br /&gt;
Currently, Expertiza has no way to associate mentors with teams. For assignments with topics, like the OSS project, mentors are associated with topics, and then whichever team is assigned to the topic inherits the mentor for that topic, However, for assignments without topics (like Program 2), there is no good way to “automatically” assign mentors to projects. Keeping this in mind our code is set to work under the following conditions: &lt;br /&gt;
&lt;br /&gt;
*'''Assignment teams created for an assignment without topics'''&lt;br /&gt;
*'''Mentors (''Instructors and TAs'') are only assigned to assignment teams if they have been added to an assignment as participants'''&lt;br /&gt;
&lt;br /&gt;
We've created the following [https://youtu.be/RQJinX6gcrA video] to demonstrate the added functionality. As well as the following [https://youtu.be/nAS0WxzFAsA video] which demonstrates what happens when teams are created when no mentors have been added as participants to an assignment.&lt;br /&gt;
&lt;br /&gt;
===   Objectives   ===&lt;br /&gt;
1. Assign a TA or instructor as a mentor for a team created for an assignment without topics&amp;lt;br&amp;gt;&lt;br /&gt;
2. Notify mentor and individuals of a team via Email when a mentor has been assigned&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===   Previous Work   ===&lt;br /&gt;
We learned from previous implementations and looked to avoid the following pitfalls when implementing our solution:&lt;br /&gt;
&lt;br /&gt;
*Code was merged from the previous team, but not refactored, so a lot of unused code remained.&lt;br /&gt;
*Should have followed a better naming convention for methods&lt;br /&gt;
*Some redundant codes in the views could be DRYed out.&lt;br /&gt;
*Commented code should be removed.&lt;br /&gt;
*Some complex logic is added but not explained in the comments.&lt;br /&gt;
*Code should be placed in most relevant classes. (E.g. Do not put email code in the Team class).&lt;br /&gt;
*Documentation doesn't accurately represent implementation.&lt;br /&gt;
*Lacked sufficient detail for Test section.&lt;br /&gt;
&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
===   Program Design   ===&lt;br /&gt;
Our implementation begins when an assignment team is created. If the assignment is associated with a topic, the created team will not be assigned a mentor. If the assignment does not have a topic, a hash of potential mentors is retrieved. This hash is created from the TAs and instructors added to the assignment as participants. The keys of the hash correspond to the mentor's participant id while their values are the number of times the mentor has been assigned to mentor teams. The mentor with the lowest number of assigned teams will be the next mentor assigned to a newly created team. Once the team is assigned a mentor, an email is sent out to the mentor and students in the team to notify them of their mentor assignment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Program_Design.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We created the following assignment_teams_mentors table with the following connections to existing tables. The new table created is responsible for storing all the mentors assigned to the various teams created. In order to do so, the assignment_team_mentors table will reference the participants and teams tables. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Schema_Modifications_UML_2.png|500px]]&lt;br /&gt;
&lt;br /&gt;
We will also modify the participants table to add an additional Boolean column, '''can_mentor'''. This column will help determine what TAs and instructors can mentor for a specified assignment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently instructors see the corresponding view when looking at teams associated with an assignment:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; column in the instructor view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Currently students see the corresponding view when looking at their team for an assignment:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; section in the student view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
===   Files Modified/Created   ===&lt;br /&gt;
These are the files we have modified/created throughout our project and a brief excerpt about what was done:&lt;br /&gt;
&lt;br /&gt;
'''Database'''&lt;br /&gt;
*Schema.rb&lt;br /&gt;
**Created assignment_team_mentors table which references the participants table and teams tables thru foreign keys created with the assignment_team_mentors_id column and assignment_team_id column. The assignment_team_mentors table is responsible for storing all the mentors assigned to the various assignment teams created.&lt;br /&gt;
&lt;br /&gt;
'''Models'''&lt;br /&gt;
*assignment_team_mentor.rb&lt;br /&gt;
**responsible for ensuring mentor with the least number of teams mentored, gets assigned to the next team created.&lt;br /&gt;
**added mailer functionality for notifying the mentor&lt;br /&gt;
*assignment_team.rb&lt;br /&gt;
**established a has_one: active record relation with AssignmentTeamMentor model. This ensures a team only has one team mentor.&lt;br /&gt;
*participant.rb&lt;br /&gt;
**established a has_many: active record relation with AssignmentTeamMentor model. This provides the flexibility of a potential mentor added as a participant to an assignment, to mentor multiple teams created for an assignment.&lt;br /&gt;
*participant.rb&lt;br /&gt;
**&lt;br /&gt;
&lt;br /&gt;
'''Controllers'''&lt;br /&gt;
*teams_controller.rb&lt;br /&gt;
**Calls on AssignmentTeamMentor to assign mentor for instructor created teams.&lt;br /&gt;
**added functionality to send email to mentor when assigned to a team.&lt;br /&gt;
*student_teams_controllers.rb&lt;br /&gt;
**Calls on AssignmentTeamMentor to assign mentor for student created teams.&lt;br /&gt;
*teams_user_controller.rb&lt;br /&gt;
**added code to send the email when a user is added to a team to the mentor.&lt;br /&gt;
&lt;br /&gt;
'''Views'''&lt;br /&gt;
*views/tree_display/_page_footer.html.erb&lt;br /&gt;
**displays mentor column header.&lt;br /&gt;
*views/tree_display/_row_header.html.erb&lt;br /&gt;
**displays either mentor assigned or &amp;quot;No mentor assigned&amp;quot; for team level. For team participant level, blank cell is displayed.&lt;br /&gt;
&lt;br /&gt;
*views/student_teams/view.html.erb&lt;br /&gt;
**responsible for displaying to a student the mentor assigned to their team for an assignment.&lt;br /&gt;
&lt;br /&gt;
*views/mailer/notify_member.html.erb&lt;br /&gt;
**responsible for managing the template of the mail sent to the mentor&lt;br /&gt;
'''Mailers'''&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
**responsible for managing the mailer functionally for notifying the member&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''RSPEC'''&lt;br /&gt;
&lt;br /&gt;
=== Testing Plan ===&lt;br /&gt;
&lt;br /&gt;
==== ''Edge Cases'' ====&lt;br /&gt;
The following are scenarios our team has thought about:&lt;br /&gt;
&lt;br /&gt;
Edge Case 1: How will we handle the &amp;quot;Has topic?&amp;quot; check box being changed when editing the assignment in the instructor view. This button is how we decide if we need to assign mentors to a team.&lt;br /&gt;
   Option A: Always run our algorithm for each assignment made and only show which mentors are assigned if the &amp;quot;Has topic?&amp;quot; is not checked&lt;br /&gt;
   Option B: Add the functionality to add and remove mentors for all assignments, not just assignments without topics then add and remove mentors when an assignment is edited.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_hasTopics_checkbox.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Edge Case 2: No mentors exist&lt;br /&gt;
   Option A: Don't assign mentors&lt;br /&gt;
   Option B: Prevent creation of teams&lt;br /&gt;
&lt;br /&gt;
==== ''RSpec Test'' ====&lt;br /&gt;
RSpec test to check:&lt;br /&gt;
* Validation of the models&lt;br /&gt;
* Functionality of controllers&lt;br /&gt;
&lt;br /&gt;
==== ''UI Test'' ====&lt;br /&gt;
In the UI test we are going to verify that:&lt;br /&gt;
As an instructor should be able to see, the following:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A student should be able to see the following after viewing their team for an assignment:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
This is what the mentor should see:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Email to mentor.png]]&lt;br /&gt;
&lt;br /&gt;
=== Potential Future Enhancements ===&lt;br /&gt;
&lt;br /&gt;
1. Implementing manual mentor assignment capability for instructors assign mentors to a team.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1826 Github Repository] &amp;lt;br&amp;gt;&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1826 Pull Request]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://youtu.be/RQJinX6gcrA mentor assignment video]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://youtu.be/nAS0WxzFAsA team creation without mentor participants video]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Email_to_mentor.png&amp;diff=137398</id>
		<title>File:Email to mentor.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Email_to_mentor.png&amp;diff=137398"/>
		<updated>2020-11-17T22:20:11Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=137397</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=137397"/>
		<updated>2020-11-17T22:18:30Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* Files Modified/Created */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   Background   ===&lt;br /&gt;
Currently, Expertiza has no way to associate mentors with teams. For assignments with topics, like the OSS project, mentors are associated with topics, and then whichever team is assigned to the topic inherits the mentor for that topic, However, for assignments without topics (like Program 2), there is no good way to “automatically” assign mentors to projects. Keeping this in mind our code is set to work under the following conditions: &lt;br /&gt;
&lt;br /&gt;
*'''Assignment teams created for an assignment without topics'''&lt;br /&gt;
*'''Mentors (''Instructors and TAs'') are only assigned to assignment teams if they have been added to an assignment as participants'''&lt;br /&gt;
&lt;br /&gt;
We've created the following [https://youtu.be/RQJinX6gcrA video] to demonstrate the added functionality. As well as the following [https://youtu.be/nAS0WxzFAsA video] which demonstrates what happens when teams are created when no mentors have been added as participants to an assignment.&lt;br /&gt;
&lt;br /&gt;
===   Objectives   ===&lt;br /&gt;
1. Assign a TA or instructor as a mentor for a team created for an assignment without topics&amp;lt;br&amp;gt;&lt;br /&gt;
2. Notify mentor and individuals of a team via Email when a mentor has been assigned&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===   Previous Work   ===&lt;br /&gt;
We learned from previous implementations and looked to avoid the following pitfalls when implementing our solution:&lt;br /&gt;
&lt;br /&gt;
*Code was merged from the previous team, but not refactored, so a lot of unused code remained.&lt;br /&gt;
*Should have followed a better naming convention for methods&lt;br /&gt;
*Some redundant codes in the views could be DRYed out.&lt;br /&gt;
*Commented code should be removed.&lt;br /&gt;
*Some complex logic is added but not explained in the comments.&lt;br /&gt;
*Code should be placed in most relevant classes. (E.g. Do not put email code in the Team class).&lt;br /&gt;
*Documentation doesn't accurately represent implementation.&lt;br /&gt;
*Lacked sufficient detail for Test section.&lt;br /&gt;
&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
===   Program Design   ===&lt;br /&gt;
Our implementation begins when an assignment team is created. If the assignment is associated with a topic, the created team will not be assigned a mentor. If the assignment does not have a topic, a hash of potential mentors is retrieved. This hash is created from the TAs and instructors added to the assignment as participants. The keys of the hash correspond to the mentor's participant id while their values are the number of times the mentor has been assigned to mentor teams. The mentor with the lowest number of assigned teams will be the next mentor assigned to a newly created team. Once the team is assigned a mentor, an email is sent out to the mentor and students in the team to notify them of their mentor assignment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Program_Design.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We created the following assignment_teams_mentors table with the following connections to existing tables. The new table created is responsible for storing all the mentors assigned to the various teams created. In order to do so, the assignment_team_mentors table will reference the participants and teams tables. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Schema_Modifications_UML_2.png|500px]]&lt;br /&gt;
&lt;br /&gt;
We will also modify the participants table to add an additional Boolean column, '''can_mentor'''. This column will help determine what TAs and instructors can mentor for a specified assignment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently instructors see the corresponding view when looking at teams associated with an assignment:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; column in the instructor view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Currently students see the corresponding view when looking at their team for an assignment:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; section in the student view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
===   Files Modified/Created   ===&lt;br /&gt;
These are the files we have modified/created throughout our project and a brief excerpt about what was done:&lt;br /&gt;
&lt;br /&gt;
'''Database'''&lt;br /&gt;
*Schema.rb&lt;br /&gt;
**Created assignment_team_mentors table which references the participants table and teams tables thru foreign keys created with the assignment_team_mentors_id column and assignment_team_id column. The assignment_team_mentors table is responsible for storing all the mentors assigned to the various assignment teams created.&lt;br /&gt;
&lt;br /&gt;
'''Models'''&lt;br /&gt;
*assignment_team_mentor.rb&lt;br /&gt;
**responsible for ensuring mentor with the least number of teams mentored, gets assigned to the next team created.&lt;br /&gt;
**added mailer functionality for notifying the mentor&lt;br /&gt;
*assignment_team.rb&lt;br /&gt;
**established a has_one: active record relation with AssignmentTeamMentor model. This ensures a team only has one team mentor.&lt;br /&gt;
*participant.rb&lt;br /&gt;
**established a has_many: active record relation with AssignmentTeamMentor model. This provides the flexibility of a potential mentor added as a participant to an assignment, to mentor multiple teams created for an assignment.&lt;br /&gt;
*participant.rb&lt;br /&gt;
**&lt;br /&gt;
&lt;br /&gt;
'''Controllers'''&lt;br /&gt;
*teams_controller.rb&lt;br /&gt;
**Calls on AssignmentTeamMentor to assign mentor for instructor created teams.&lt;br /&gt;
**added functionality to send email to mentor when assigned to a team.&lt;br /&gt;
*student_teams_controllers.rb&lt;br /&gt;
**Calls on AssignmentTeamMentor to assign mentor for student created teams.&lt;br /&gt;
*teams_user_controller.rb&lt;br /&gt;
**added code to send the email when a user is added to a team to the mentor.&lt;br /&gt;
&lt;br /&gt;
'''Views'''&lt;br /&gt;
*views/tree_display/_page_footer.html.erb&lt;br /&gt;
**displays mentor column header.&lt;br /&gt;
*views/tree_display/_row_header.html.erb&lt;br /&gt;
**displays either mentor assigned or &amp;quot;No mentor assigned&amp;quot; for team level. For team participant level, blank cell is displayed.&lt;br /&gt;
&lt;br /&gt;
*views/student_teams/view.html.erb&lt;br /&gt;
**responsible for displaying to a student the mentor assigned to their team for an assignment.&lt;br /&gt;
&lt;br /&gt;
*views/mailer/notify_member.html.erb&lt;br /&gt;
**responsible for managing the template of the mail sent to the mentor&lt;br /&gt;
'''Mailers'''&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
**responsible for managing the mailer functionally for notifying the member&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''RSPEC'''&lt;br /&gt;
&lt;br /&gt;
=== Testing Plan ===&lt;br /&gt;
&lt;br /&gt;
==== ''Edge Cases'' ====&lt;br /&gt;
The following are scenarios our team has thought about:&lt;br /&gt;
&lt;br /&gt;
Edge Case 1: How will we handle the &amp;quot;Has topic?&amp;quot; check box being changed when editing the assignment in the instructor view. This button is how we decide if we need to assign mentors to a team.&lt;br /&gt;
   Option A: Always run our algorithm for each assignment made and only show which mentors are assigned if the &amp;quot;Has topic?&amp;quot; is not checked&lt;br /&gt;
   Option B: Add the functionality to add and remove mentors for all assignments, not just assignments without topics then add and remove mentors when an assignment is edited.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_hasTopics_checkbox.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Edge Case 2: No mentors exist&lt;br /&gt;
   Option A: Don't assign mentors&lt;br /&gt;
   Option B: Prevent creation of teams&lt;br /&gt;
&lt;br /&gt;
==== ''RSpec Test'' ====&lt;br /&gt;
RSpec test to check:&lt;br /&gt;
* Validation of the models&lt;br /&gt;
* Functionality of controllers&lt;br /&gt;
&lt;br /&gt;
==== ''UI Test'' ====&lt;br /&gt;
In the UI test we are going to verify that:&lt;br /&gt;
As an instructor should be able to see, the following:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A student should be able to see the following after viewing their team for an assignment:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
This is what the mentor should see:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:WImage103.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Potential Future Enhancements ===&lt;br /&gt;
&lt;br /&gt;
1. Implementing manual mentor assignment capability for instructors assign mentors to a team.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1826 Github Repository] &amp;lt;br&amp;gt;&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1826 Pull Request]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://youtu.be/RQJinX6gcrA mentor assignment video]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://youtu.be/nAS0WxzFAsA team creation without mentor participants video]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=137392</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=137392"/>
		<updated>2020-11-17T22:08:13Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* Files Modified/Created */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   Background   ===&lt;br /&gt;
Currently, Expertiza has no way to associate mentors with teams. For assignments with topics, like the OSS project, mentors are associated with topics, and then whichever team is assigned to the topic inherits the mentor for that topic, However, for assignments without topics (like Program 2), there is no good way to “automatically” assign mentors to projects. Keeping this in mind our code is set to work under the following conditions: &lt;br /&gt;
&lt;br /&gt;
*'''Assignment teams created for an assignment without topics'''&lt;br /&gt;
*'''Mentors (''Instructors and TAs'') are only assigned to assignment teams if they have been added to an assignment as participants'''&lt;br /&gt;
&lt;br /&gt;
We've created the following [https://youtu.be/RQJinX6gcrA video] to demonstrate the added functionality. As well as the following [https://youtu.be/nAS0WxzFAsA video] which demonstrates what happens when teams are created when no mentors have been added as participants to an assignment.&lt;br /&gt;
&lt;br /&gt;
===   Objectives   ===&lt;br /&gt;
1. Assign a TA or instructor as a mentor for a team created for an assignment without topics&amp;lt;br&amp;gt;&lt;br /&gt;
2. Notify mentor and individuals of a team via Email when a mentor has been assigned&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===   Previous Work   ===&lt;br /&gt;
We learned from previous implementations and looked to avoid the following pitfalls when implementing our solution:&lt;br /&gt;
&lt;br /&gt;
*Code was merged from the previous team, but not refactored, so a lot of unused code remained.&lt;br /&gt;
*Should have followed a better naming convention for methods&lt;br /&gt;
*Some redundant codes in the views could be DRYed out.&lt;br /&gt;
*Commented code should be removed.&lt;br /&gt;
*Some complex logic is added but not explained in the comments.&lt;br /&gt;
*Code should be placed in most relevant classes. (E.g. Do not put email code in the Team class).&lt;br /&gt;
*Documentation doesn't accurately represent implementation.&lt;br /&gt;
*Lacked sufficient detail for Test section.&lt;br /&gt;
&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
===   Program Design   ===&lt;br /&gt;
Our implementation begins when an assignment team is created. If the assignment is associated with a topic, the created team will not be assigned a mentor. If the assignment does not have a topic, a hash of potential mentors is retrieved. This hash is created from the TAs and instructors added to the assignment as participants. The keys of the hash correspond to the mentor's participant id while their values are the number of times the mentor has been assigned to mentor teams. The mentor with the lowest number of assigned teams will be the next mentor assigned to a newly created team. Once the team is assigned a mentor, an email is sent out to the mentor and students in the team to notify them of their mentor assignment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Program_Design.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We created the following assignment_teams_mentors table with the following connections to existing tables. The new table created is responsible for storing all the mentors assigned to the various teams created. In order to do so, the assignment_team_mentors table will reference the participants and teams tables. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Schema_Modifications_UML_2.png|500px]]&lt;br /&gt;
&lt;br /&gt;
We will also modify the participants table to add an additional Boolean column, '''can_mentor'''. This column will help determine what TAs and instructors can mentor for a specified assignment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently instructors see the corresponding view when looking at teams associated with an assignment:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; column in the instructor view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Currently students see the corresponding view when looking at their team for an assignment:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; section in the student view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
===   Files Modified/Created   ===&lt;br /&gt;
These are the files we have modified/created throughout our project and a brief excerpt about what was done:&lt;br /&gt;
&lt;br /&gt;
'''Database'''&lt;br /&gt;
*Schema.rb&lt;br /&gt;
**Created assignment_team_mentors table which references the participants table and teams tables thru foreign keys created with the assignment_team_mentors_id column and assignment_team_id column. The assignment_team_mentors table is responsible for storing all the mentors assigned to the various assignment teams created.&lt;br /&gt;
&lt;br /&gt;
'''Models'''&lt;br /&gt;
*assignment_team_mentor.rb&lt;br /&gt;
**responsible for ensuring mentor with the least number of teams mentored, gets assigned to the next team created, notifies the mentor of the team he/she is mentoring.&lt;br /&gt;
*assignment_team.rb&lt;br /&gt;
**established a has_one: active record relation with AssignmentTeamMentor model. This ensures a team only has one team mentor.&lt;br /&gt;
*participant.rb&lt;br /&gt;
**established a has_many: active record relation with AssignmentTeamMentor model. This provides the flexibility of a potential mentor added as a participant to an assignment, to mentor multiple teams created for an assignment.&lt;br /&gt;
*participant.rb&lt;br /&gt;
**&lt;br /&gt;
&lt;br /&gt;
'''Controllers'''&lt;br /&gt;
*teams_controller.rb&lt;br /&gt;
**Calls on AssignmentTeamMentor to assign mentor for instructor created teams.&lt;br /&gt;
*student_teams_controllers.rb&lt;br /&gt;
**Calls on AssignmentTeamMentor to assign mentor for student created teams.&lt;br /&gt;
&lt;br /&gt;
'''Views'''&lt;br /&gt;
*views/tree_display/_page_footer.html.erb&lt;br /&gt;
**displays mentor column header.&lt;br /&gt;
*views/tree_display/_row_header.html.erb&lt;br /&gt;
**displays either mentor assigned or &amp;quot;No mentor assigned&amp;quot; for team level. For team participant level, blank cell is displayed.&lt;br /&gt;
&lt;br /&gt;
*views/student_teams/view.html.erb&lt;br /&gt;
**responsible for displaying to a student the mentor assigned to their team for an assignment.&lt;br /&gt;
&lt;br /&gt;
*views/mailer/notify_member.html.erb&lt;br /&gt;
**responsible for managing the template of the mail sent to the mentor&lt;br /&gt;
'''Mailers'''&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
**responsible for managing the mailer functionally for notifying the member&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''RSPEC'''&lt;br /&gt;
&lt;br /&gt;
=== Testing Plan ===&lt;br /&gt;
&lt;br /&gt;
==== ''Edge Cases'' ====&lt;br /&gt;
The following are scenarios our team has thought about:&lt;br /&gt;
&lt;br /&gt;
Edge Case 1: How will we handle the &amp;quot;Has topic?&amp;quot; check box being changed when editing the assignment in the instructor view. This button is how we decide if we need to assign mentors to a team.&lt;br /&gt;
   Option A: Always run our algorithm for each assignment made and only show which mentors are assigned if the &amp;quot;Has topic?&amp;quot; is not checked&lt;br /&gt;
   Option B: Add the functionality to add and remove mentors for all assignments, not just assignments without topics then add and remove mentors when an assignment is edited.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_hasTopics_checkbox.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Edge Case 2: No mentors exist&lt;br /&gt;
   Option A: Don't assign mentors&lt;br /&gt;
   Option B: Prevent creation of teams&lt;br /&gt;
&lt;br /&gt;
==== ''RSpec Test'' ====&lt;br /&gt;
RSpec test to check:&lt;br /&gt;
* Validation of the models&lt;br /&gt;
* Functionality of controllers&lt;br /&gt;
&lt;br /&gt;
==== ''UI Test'' ====&lt;br /&gt;
In the UI test we are going to verify that:&lt;br /&gt;
As an instructor should be able to see, the following:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A student should be able to see the following after viewing their team for an assignment:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
This is what the mentor should see:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:WImage103.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Potential Future Enhancements ===&lt;br /&gt;
&lt;br /&gt;
1. Implementing manual mentor assignment capability for instructors assign mentors to a team.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1826 Github Repository] &amp;lt;br&amp;gt;&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1826 Pull Request]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://youtu.be/RQJinX6gcrA mentor assignment video]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://youtu.be/nAS0WxzFAsA team creation without mentor participants video]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=137387</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=137387"/>
		<updated>2020-11-17T22:05:16Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* Files Modified/Created */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   Background   ===&lt;br /&gt;
Currently, Expertiza has no way to associate mentors with teams. For assignments with topics, like the OSS project, mentors are associated with topics, and then whichever team is assigned to the topic inherits the mentor for that topic, However, for assignments without topics (like Program 2), there is no good way to “automatically” assign mentors to projects. Keeping this in mind our code is set to work under the following conditions: &lt;br /&gt;
&lt;br /&gt;
*'''Assignment teams created for an assignment without topics'''&lt;br /&gt;
*'''Mentors (''Instructors and TAs'') are only assigned to assignment teams if they have been added to an assignment as participants'''&lt;br /&gt;
&lt;br /&gt;
We've created the following [https://youtu.be/RQJinX6gcrA video] to demonstrate the added functionality. As well as the following [https://youtu.be/nAS0WxzFAsA video] which demonstrates what happens when teams are created when no mentors have been added as participants to an assignment.&lt;br /&gt;
&lt;br /&gt;
===   Objectives   ===&lt;br /&gt;
1. Assign a TA or instructor as a mentor for a team created for an assignment without topics&amp;lt;br&amp;gt;&lt;br /&gt;
2. Notify mentor and individuals of a team via Email when a mentor has been assigned&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===   Previous Work   ===&lt;br /&gt;
We learned from previous implementations and looked to avoid the following pitfalls when implementing our solution:&lt;br /&gt;
&lt;br /&gt;
*Code was merged from the previous team, but not refactored, so a lot of unused code remained.&lt;br /&gt;
*Should have followed a better naming convention for methods&lt;br /&gt;
*Some redundant codes in the views could be DRYed out.&lt;br /&gt;
*Commented code should be removed.&lt;br /&gt;
*Some complex logic is added but not explained in the comments.&lt;br /&gt;
*Code should be placed in most relevant classes. (E.g. Do not put email code in the Team class).&lt;br /&gt;
*Documentation doesn't accurately represent implementation.&lt;br /&gt;
*Lacked sufficient detail for Test section.&lt;br /&gt;
&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
===   Program Design   ===&lt;br /&gt;
Our implementation begins when an assignment team is created. If the assignment is associated with a topic, the created team will not be assigned a mentor. If the assignment does not have a topic, a hash of potential mentors is retrieved. This hash is created from the TAs and instructors added to the assignment as participants. The keys of the hash correspond to the mentor's participant id while their values are the number of times the mentor has been assigned to mentor teams. The mentor with the lowest number of assigned teams will be the next mentor assigned to a newly created team. Once the team is assigned a mentor, an email is sent out to the mentor and students in the team to notify them of their mentor assignment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Program_Design.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We created the following assignment_teams_mentors table with the following connections to existing tables. The new table created is responsible for storing all the mentors assigned to the various teams created. In order to do so, the assignment_team_mentors table will reference the participants and teams tables. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Schema_Modifications_UML_2.png|500px]]&lt;br /&gt;
&lt;br /&gt;
We will also modify the participants table to add an additional Boolean column, '''can_mentor'''. This column will help determine what TAs and instructors can mentor for a specified assignment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently instructors see the corresponding view when looking at teams associated with an assignment:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; column in the instructor view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Currently students see the corresponding view when looking at their team for an assignment:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; section in the student view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
===   Files Modified/Created   ===&lt;br /&gt;
These are the files we have modified/created throughout our project and a brief excerpt about what was done:&lt;br /&gt;
&lt;br /&gt;
'''Database'''&lt;br /&gt;
*Schema.rb&lt;br /&gt;
**Created assignment_team_mentors table which references the participants table and teams tables thru foreign keys created with the assignment_team_mentors_id column and assignment_team_id column. The assignment_team_mentors table is responsible for storing all the mentors assigned to the various assignment teams created.&lt;br /&gt;
&lt;br /&gt;
'''Models'''&lt;br /&gt;
*assignment_team_mentor.rb&lt;br /&gt;
**responsible for ensuring mentor with the least number of teams mentored, gets assigned to the next team created.&lt;br /&gt;
*assignment_team.rb&lt;br /&gt;
**established a has_one: active record relation with AssignmentTeamMentor model. This ensures a team only has one team mentor.&lt;br /&gt;
*participant.rb&lt;br /&gt;
**established a has_many: active record relation with AssignmentTeamMentor model. This provides the flexibility of a potential mentor added as a participant to an assignment, to mentor multiple teams created for an assignment.&lt;br /&gt;
*participant.rb&lt;br /&gt;
**&lt;br /&gt;
&lt;br /&gt;
'''Controllers'''&lt;br /&gt;
*teams_controller.rb&lt;br /&gt;
**Calls on AssignmentTeamMentor to assign mentor for instructor created teams.&lt;br /&gt;
*student_teams_controllers.rb&lt;br /&gt;
**Calls on AssignmentTeamMentor to assign mentor for student created teams.&lt;br /&gt;
*mailer.rb&lt;br /&gt;
**responsible for managing the mailer functionally for notifying the member&lt;br /&gt;
&lt;br /&gt;
'''Views'''&lt;br /&gt;
*views/tree_display/_page_footer.html.erb&lt;br /&gt;
**displays mentor column header.&lt;br /&gt;
*views/tree_display/_row_header.html.erb&lt;br /&gt;
**displays either mentor assigned or &amp;quot;No mentor assigned&amp;quot; for team level. For team participant level, blank cell is displayed.&lt;br /&gt;
&lt;br /&gt;
*views/student_teams/view.html.erb&lt;br /&gt;
**responsible for displaying to a student the mentor assigned to their team for an assignment.&lt;br /&gt;
&lt;br /&gt;
'''Mailers'''&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
&lt;br /&gt;
'''RSPEC'''&lt;br /&gt;
&lt;br /&gt;
=== Testing Plan ===&lt;br /&gt;
&lt;br /&gt;
==== ''Edge Cases'' ====&lt;br /&gt;
The following are scenarios our team has thought about:&lt;br /&gt;
&lt;br /&gt;
Edge Case 1: How will we handle the &amp;quot;Has topic?&amp;quot; check box being changed when editing the assignment in the instructor view. This button is how we decide if we need to assign mentors to a team.&lt;br /&gt;
   Option A: Always run our algorithm for each assignment made and only show which mentors are assigned if the &amp;quot;Has topic?&amp;quot; is not checked&lt;br /&gt;
   Option B: Add the functionality to add and remove mentors for all assignments, not just assignments without topics then add and remove mentors when an assignment is edited.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_hasTopics_checkbox.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Edge Case 2: No mentors exist&lt;br /&gt;
   Option A: Don't assign mentors&lt;br /&gt;
   Option B: Prevent creation of teams&lt;br /&gt;
&lt;br /&gt;
==== ''RSpec Test'' ====&lt;br /&gt;
RSpec test to check:&lt;br /&gt;
* Validation of the models&lt;br /&gt;
* Functionality of controllers&lt;br /&gt;
&lt;br /&gt;
==== ''UI Test'' ====&lt;br /&gt;
In the UI test we are going to verify that:&lt;br /&gt;
As an instructor should be able to see, the following:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A student should be able to see the following after viewing their team for an assignment:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
This is what the mentor should see:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:WImage103.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Potential Future Enhancements ===&lt;br /&gt;
&lt;br /&gt;
1. Implementing manual mentor assignment capability for instructors assign mentors to a team.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1826 Github Repository] &amp;lt;br&amp;gt;&lt;br /&gt;
[https://github.com/expertiza/expertiza/pull/1826 Pull Request]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://youtu.be/RQJinX6gcrA mentor assignment video]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://youtu.be/nAS0WxzFAsA team creation without mentor participants video]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=136545</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=136545"/>
		<updated>2020-10-29T01:39:56Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* UI Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   ''Background''   ===&lt;br /&gt;
Currently, Expertiza has no way to associate mentors with teams. For assignments with topics, like the OSS project, mentors are associated with topics, and then whichever team is assigned to the topic inherits the mentor for that topic, However, for assignments without topics (like Program 2), there is no good way to “automatically” assign mentors to projects.&lt;br /&gt;
&lt;br /&gt;
===   ''Objectives''   ===&lt;br /&gt;
1. Assign a TA or instructor as a mentor for a team created for an assignment without topics&amp;lt;br&amp;gt;&lt;br /&gt;
2. Notify mentor and individuals of a team via Email when a mentor has been assigned&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===   ''Previous Work''   ===&lt;br /&gt;
We learned from previous implementations and looked to avoid the following pitfalls when implementing our solution:&lt;br /&gt;
&lt;br /&gt;
*Code was merged from the previous team, but not refactored, so a lot of unused code remained.&lt;br /&gt;
*Should have followed a better naming convention for methods&lt;br /&gt;
*Some redundant codes in the views could be DRYed out.&lt;br /&gt;
*Commented code should be removed.&lt;br /&gt;
*Some complex logic is added but not explained in the comments.&lt;br /&gt;
*Code should be placed in most relevant classes. (E.g. Do not put email code in the Team class).&lt;br /&gt;
*Documentation doesn't accurately represent implementation.&lt;br /&gt;
*Lacked sufficient detail for Test section.&lt;br /&gt;
&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
===   ''Program Design''   ===&lt;br /&gt;
We are proposing the following design with our implementation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Program_Design.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our implementation begins when the team is created. Once a team is created, it prompts a question asking if the assignment that the team is being created before has a topic. If the assignment is associated with a topic, teams are not given a mentor. If the assignment does not have a topic, a list of mentors is queried. The list contains mentors and details the amount of teams each of the mentors is assigned to. A mentor is then selected for the least amount of teams assigned. Once the team is assigned a mentor, an email is sent out to the mentor and students in the team to notify them of their mentor assignment&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently instructors see the corresponding view when looking at teams associated with an assignment:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; column in the instructor view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Currently students see the corresponding view when looking at their team for an assignment:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; section in the student view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
===   ''Files Modified/Created''   ===&lt;br /&gt;
These are the files we plan to modify/create throughout our project. More to come to this section as we continue with development... &lt;br /&gt;
&lt;br /&gt;
'''Database'''&lt;br /&gt;
*Schema.rb&lt;br /&gt;
**create teams_mentors table and have references to users, assignments, and teams tables. &lt;br /&gt;
**Keeps track of all mentors assigned to all teams.&lt;br /&gt;
&lt;br /&gt;
'''Models'''&lt;br /&gt;
*team_mentor.rb&lt;br /&gt;
**responsible for ensuring mentor with the least number of teams mentored, gets assigned to the next team created.&lt;br /&gt;
&lt;br /&gt;
'''Controllers'''&lt;br /&gt;
*teams_controller.rb&lt;br /&gt;
**responsible for interacting with team_mentor.rb model and ensuring the correct data is fed to model as a new team is created.&lt;br /&gt;
&lt;br /&gt;
'''Views'''&lt;br /&gt;
*views/teams&lt;br /&gt;
**responsible for displaying mentors assigned to teams for an instructor creating teams.&lt;br /&gt;
*views/student_teams/view.html.erb&lt;br /&gt;
**responsible for displaying to a student the mentor assigned to their team for an assignment.&lt;br /&gt;
&lt;br /&gt;
'''Mailers'''&lt;br /&gt;
*app/mailers/mailer.rb&lt;br /&gt;
&lt;br /&gt;
=== ''Testing Plan'' ===&lt;br /&gt;
&lt;br /&gt;
==== ''Edge Cases'' ====&lt;br /&gt;
The following are scenarios our team has thought about:&lt;br /&gt;
&lt;br /&gt;
Edge Case 1: How will we handle the &amp;quot;Has topic?&amp;quot; check box being changed when editing the assignment in the instructor view. This button is how we decide if we need to assign mentors to a team.&lt;br /&gt;
   Option A: Always run our algorithm for each assignment made and only show which mentors are assigned if the &amp;quot;Has topic?&amp;quot; is not checked&lt;br /&gt;
   Option B: Add the functionality to add and remove mentors for all assignments, not just assignments without topics then add and remove mentors when an assignment is edited.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_hasTopics_checkbox.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Edge Case 2: No mentors exist&lt;br /&gt;
   Option A: Don't assign mentors&lt;br /&gt;
   Option B: Prevent creation of teams&lt;br /&gt;
&lt;br /&gt;
==== ''RSpec Test'' ====&lt;br /&gt;
RSpec test to check:&lt;br /&gt;
* Validation of the models&lt;br /&gt;
* Functionality of controllers&lt;br /&gt;
&lt;br /&gt;
==== ''UI Test'' ====&lt;br /&gt;
In the UI test we are going to verify that:&lt;br /&gt;
As an instructor should be able to see, the following:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A student should be able to see the following after viewing their team for an assignment:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
This is what the mentor should see:&lt;br /&gt;
[[File:WImage103.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Future Implementation ===&lt;br /&gt;
&lt;br /&gt;
1. Implementing manual mentor assignment capability for instructors assign mentors to a team.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
Github Repository:  &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request:  &amp;lt;br&amp;gt;&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=136507</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=136507"/>
		<updated>2020-10-29T00:11:15Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* UI Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   ''Background''   ===&lt;br /&gt;
Currently, Expertiza has no way to associate mentors with teams. For assignments with topics, like the OSS project, mentors are associated with topics, and then whichever team is assigned to the topic inherits the mentor for that topic, However, for assignments without topics (like Program 2), there is no good way to “automatically” assign mentors to projects.&lt;br /&gt;
&lt;br /&gt;
===   ''Objectives''   ===&lt;br /&gt;
Implement code that will allow a mentor to be directly associated with a team. Notify mentor when they have been assigned to a team via email.&lt;br /&gt;
&lt;br /&gt;
===   ''Previous Work''   ===&lt;br /&gt;
We learned from previous implementations and looked to avoid the following pitfalls when implementing our solution:&lt;br /&gt;
&lt;br /&gt;
*Code was merged from the previous team, but not refactored, so a lot of unused code remained.&lt;br /&gt;
*Should have followed a better naming convention for methods&lt;br /&gt;
*Some redundant codes in the views could be DRYed out.&lt;br /&gt;
*Commented code should be removed.&lt;br /&gt;
*Some complex logic is added but not explained in the comments.&lt;br /&gt;
*Code should be placed in most relevant classes. (E.g. Do not put email code in the Team class).&lt;br /&gt;
*Documentation doesn't accurately represent implementation.&lt;br /&gt;
*Lacked sufficient detail for Test section.&lt;br /&gt;
&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
===   ''Program Design''   ===&lt;br /&gt;
We are proposing the following design with our implementation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Program_Design.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our implementation begins when the team is created. Once a team is created, it prompts a question asking if the assignment that the team is being created before has a topic. If the assignment is associated with a topic, teams are not given a mentor. If the assignment does not have a topic, a list of mentors is queried. The list contains mentors and details the amount of teams each of the mentors is assigned to. A mentor is then selected for the least amount of teams assigned.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently instructors see the corresponding view when looking at teams associated with an assignment:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; column in the instructor view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Currently students see the corresponding view when looking at their team for an assignment:&lt;br /&gt;
[[File:Student_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; section in the student view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
===   ''Files Modified''   ===&lt;br /&gt;
List all the files we changed when implementing our project&lt;br /&gt;
&lt;br /&gt;
'''Models'''&lt;br /&gt;
*assignment.rb&lt;br /&gt;
*assignment_team.rb&lt;br /&gt;
*assignment_form.rb&lt;br /&gt;
*User.rb&lt;br /&gt;
&lt;br /&gt;
'''Controllers'''&lt;br /&gt;
*assignments_controller.rb&lt;br /&gt;
*teams_controller.rb&lt;br /&gt;
&lt;br /&gt;
'''Views'''&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== ''Testing Plan'' ===&lt;br /&gt;
&lt;br /&gt;
==== ''Edge Cases'' ====&lt;br /&gt;
The following are scenarios our team has thought about:&lt;br /&gt;
&lt;br /&gt;
Edge Case 1: How will we handle the &amp;quot;Has topic?&amp;quot; check box being changed when editing the assignment in the instructor view. This button is how we decide if we need to assign mentors to a team.&lt;br /&gt;
   Option A: Always run our algorithm for each assignment made and only show which mentors are assigned if the &amp;quot;Has topic?&amp;quot; is not checked&lt;br /&gt;
   Option B: Add the functionality to add and remove mentors for all assignments, not just assignments without topics then add and remove mentors when an assignment is edited.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_hasTopics_checkbox.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Edge Case 2: No mentors exist&lt;br /&gt;
   Option A: Don't assign mentors&lt;br /&gt;
   Option B: Prevent creation of teams&lt;br /&gt;
&lt;br /&gt;
==== ''RSpec Test'' ====&lt;br /&gt;
RSpec test to check:&lt;br /&gt;
* Validation of the models&lt;br /&gt;
* Functionality of controllers&lt;br /&gt;
&lt;br /&gt;
==== ''UI Test'' ====&lt;br /&gt;
In the UI test we are going to verify that:&lt;br /&gt;
As an instructor should be able to see, the following:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A student should be able to see:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
=== Future Implementation ===&lt;br /&gt;
&lt;br /&gt;
1. Implementing manual mentor assignment capability for instructors assign mentors to a team.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
Github Repository:  &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request:  &amp;lt;br&amp;gt;&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=136506</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=136506"/>
		<updated>2020-10-29T00:11:03Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* UI Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   ''Background''   ===&lt;br /&gt;
Currently, Expertiza has no way to associate mentors with teams. For assignments with topics, like the OSS project, mentors are associated with topics, and then whichever team is assigned to the topic inherits the mentor for that topic, However, for assignments without topics (like Program 2), there is no good way to “automatically” assign mentors to projects.&lt;br /&gt;
&lt;br /&gt;
===   ''Objectives''   ===&lt;br /&gt;
Implement code that will allow a mentor to be directly associated with a team. Notify mentor when they have been assigned to a team via email.&lt;br /&gt;
&lt;br /&gt;
===   ''Previous Work''   ===&lt;br /&gt;
We learned from previous implementations and looked to avoid the following pitfalls when implementing our solution:&lt;br /&gt;
&lt;br /&gt;
*Code was merged from the previous team, but not refactored, so a lot of unused code remained.&lt;br /&gt;
*Should have followed a better naming convention for methods&lt;br /&gt;
*Some redundant codes in the views could be DRYed out.&lt;br /&gt;
*Commented code should be removed.&lt;br /&gt;
*Some complex logic is added but not explained in the comments.&lt;br /&gt;
*Code should be placed in most relevant classes. (E.g. Do not put email code in the Team class).&lt;br /&gt;
*Documentation doesn't accurately represent implementation.&lt;br /&gt;
*Lacked sufficient detail for Test section.&lt;br /&gt;
&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
===   ''Program Design''   ===&lt;br /&gt;
We are proposing the following design with our implementation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Program_Design.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our implementation begins when the team is created. Once a team is created, it prompts a question asking if the assignment that the team is being created before has a topic. If the assignment is associated with a topic, teams are not given a mentor. If the assignment does not have a topic, a list of mentors is queried. The list contains mentors and details the amount of teams each of the mentors is assigned to. A mentor is then selected for the least amount of teams assigned.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently instructors see the corresponding view when looking at teams associated with an assignment:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; column in the instructor view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Currently students see the corresponding view when looking at their team for an assignment:&lt;br /&gt;
[[File:Student_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; section in the student view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
===   ''Files Modified''   ===&lt;br /&gt;
List all the files we changed when implementing our project&lt;br /&gt;
&lt;br /&gt;
'''Models'''&lt;br /&gt;
*assignment.rb&lt;br /&gt;
*assignment_team.rb&lt;br /&gt;
*assignment_form.rb&lt;br /&gt;
*User.rb&lt;br /&gt;
&lt;br /&gt;
'''Controllers'''&lt;br /&gt;
*assignments_controller.rb&lt;br /&gt;
*teams_controller.rb&lt;br /&gt;
&lt;br /&gt;
'''Views'''&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== ''Testing Plan'' ===&lt;br /&gt;
&lt;br /&gt;
==== ''Edge Cases'' ====&lt;br /&gt;
The following are scenarios our team has thought about:&lt;br /&gt;
&lt;br /&gt;
Edge Case 1: How will we handle the &amp;quot;Has topic?&amp;quot; check box being changed when editing the assignment in the instructor view. This button is how we decide if we need to assign mentors to a team.&lt;br /&gt;
   Option A: Always run our algorithm for each assignment made and only show which mentors are assigned if the &amp;quot;Has topic?&amp;quot; is not checked&lt;br /&gt;
   Option B: Add the functionality to add and remove mentors for all assignments, not just assignments without topics then add and remove mentors when an assignment is edited.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_hasTopics_checkbox.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Edge Case 2: No mentors exist&lt;br /&gt;
   Option A: Don't assign mentors&lt;br /&gt;
   Option B: Prevent creation of teams&lt;br /&gt;
&lt;br /&gt;
==== ''RSpec Test'' ====&lt;br /&gt;
RSpec test to check:&lt;br /&gt;
* Validation of the models&lt;br /&gt;
* Functionality of controllers&lt;br /&gt;
&lt;br /&gt;
==== ''UI Test'' ====&lt;br /&gt;
In the UI test we are going to verify that:&lt;br /&gt;
As an instructor should be able to see, the following:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A student should be able to see:&lt;br /&gt;
[[File:Student_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
=== Future Implementation ===&lt;br /&gt;
&lt;br /&gt;
1. Implementing manual mentor assignment capability for instructors assign mentors to a team.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
Github Repository:  &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request:  &amp;lt;br&amp;gt;&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=136505</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=136505"/>
		<updated>2020-10-29T00:10:03Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* UI Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   ''Background''   ===&lt;br /&gt;
Currently, Expertiza has no way to associate mentors with teams. For assignments with topics, like the OSS project, mentors are associated with topics, and then whichever team is assigned to the topic inherits the mentor for that topic, However, for assignments without topics (like Program 2), there is no good way to “automatically” assign mentors to projects.&lt;br /&gt;
&lt;br /&gt;
===   ''Objectives''   ===&lt;br /&gt;
Implement code that will allow a mentor to be directly associated with a team. Notify mentor when they have been assigned to a team via email.&lt;br /&gt;
&lt;br /&gt;
===   ''Previous Work''   ===&lt;br /&gt;
We learned from previous implementations and looked to avoid the following pitfalls when implementing our solution:&lt;br /&gt;
&lt;br /&gt;
*Code was merged from the previous team, but not refactored, so a lot of unused code remained.&lt;br /&gt;
*Should have followed a better naming convention for methods&lt;br /&gt;
*Some redundant codes in the views could be DRYed out.&lt;br /&gt;
*Commented code should be removed.&lt;br /&gt;
*Some complex logic is added but not explained in the comments.&lt;br /&gt;
*Code should be placed in most relevant classes. (E.g. Do not put email code in the Team class).&lt;br /&gt;
*Documentation doesn't accurately represent implementation.&lt;br /&gt;
*Lacked sufficient detail for Test section.&lt;br /&gt;
&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
===   ''Program Design''   ===&lt;br /&gt;
We are proposing the following design with our implementation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Program_Design.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our implementation begins when the team is created. Once a team is created, it prompts a question asking if the assignment that the team is being created before has a topic. If the assignment is associated with a topic, teams are not given a mentor. If the assignment does not have a topic, a list of mentors is queried. The list contains mentors and details the amount of teams each of the mentors is assigned to. A mentor is then selected for the least amount of teams assigned.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently instructors see the corresponding view when looking at teams associated with an assignment:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; column in the instructor view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Currently students see the corresponding view when looking at their team for an assignment:&lt;br /&gt;
[[File:Student_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; section in the student view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
===   ''Files Modified''   ===&lt;br /&gt;
List all the files we changed when implementing our project&lt;br /&gt;
&lt;br /&gt;
'''Models'''&lt;br /&gt;
*assignment.rb&lt;br /&gt;
*assignment_team.rb&lt;br /&gt;
*assignment_form.rb&lt;br /&gt;
*User.rb&lt;br /&gt;
&lt;br /&gt;
'''Controllers'''&lt;br /&gt;
*assignments_controller.rb&lt;br /&gt;
*teams_controller.rb&lt;br /&gt;
&lt;br /&gt;
'''Views'''&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== ''Testing Plan'' ===&lt;br /&gt;
&lt;br /&gt;
==== ''Edge Cases'' ====&lt;br /&gt;
The following are scenarios our team has thought about:&lt;br /&gt;
&lt;br /&gt;
Edge Case 1: How will we handle the &amp;quot;Has topic?&amp;quot; check box being changed when editing the assignment in the instructor view. This button is how we decide if we need to assign mentors to a team.&lt;br /&gt;
   Option A: Always run our algorithm for each assignment made and only show which mentors are assigned if the &amp;quot;Has topic?&amp;quot; is not checked&lt;br /&gt;
   Option B: Add the functionality to add and remove mentors for all assignments, not just assignments without topics then add and remove mentors when an assignment is edited.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_hasTopics_checkbox.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Edge Case 2: No mentors exist&lt;br /&gt;
   Option A: Don't assign mentors&lt;br /&gt;
   Option B: Prevent creation of teams&lt;br /&gt;
&lt;br /&gt;
==== ''RSpec Test'' ====&lt;br /&gt;
RSpec test to check:&lt;br /&gt;
* Validation of the models&lt;br /&gt;
* Functionality of controllers&lt;br /&gt;
&lt;br /&gt;
==== ''UI Test'' ====&lt;br /&gt;
In the UI test we are going to verify that:&lt;br /&gt;
As an instructor should be able to see, the following:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
=== Future Implementation ===&lt;br /&gt;
&lt;br /&gt;
1. Implementing manual mentor assignment capability for instructors assign mentors to a team.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
Github Repository:  &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request:  &amp;lt;br&amp;gt;&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=136504</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=136504"/>
		<updated>2020-10-29T00:09:09Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* UI Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   ''Background''   ===&lt;br /&gt;
Currently, Expertiza has no way to associate mentors with teams. For assignments with topics, like the OSS project, mentors are associated with topics, and then whichever team is assigned to the topic inherits the mentor for that topic, However, for assignments without topics (like Program 2), there is no good way to “automatically” assign mentors to projects.&lt;br /&gt;
&lt;br /&gt;
===   ''Objectives''   ===&lt;br /&gt;
Implement code that will allow a mentor to be directly associated with a team. Notify mentor when they have been assigned to a team via email.&lt;br /&gt;
&lt;br /&gt;
===   ''Previous Work''   ===&lt;br /&gt;
We learned from previous implementations and looked to avoid the following pitfalls when implementing our solution:&lt;br /&gt;
&lt;br /&gt;
*Code was merged from the previous team, but not refactored, so a lot of unused code remained.&lt;br /&gt;
*Should have followed a better naming convention for methods&lt;br /&gt;
*Some redundant codes in the views could be DRYed out.&lt;br /&gt;
*Commented code should be removed.&lt;br /&gt;
*Some complex logic is added but not explained in the comments.&lt;br /&gt;
*Code should be placed in most relevant classes. (E.g. Do not put email code in the Team class).&lt;br /&gt;
*Documentation doesn't accurately represent implementation.&lt;br /&gt;
*Lacked sufficient detail for Test section.&lt;br /&gt;
&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
===   ''Program Design''   ===&lt;br /&gt;
We are proposing the following design with our implementation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Program_Design.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our implementation begins when the team is created. Once a team is created, it prompts a question asking if the assignment that the team is being created before has a topic. If the assignment is associated with a topic, teams are not given a mentor. If the assignment does not have a topic, a list of mentors is queried. The list contains mentors and details the amount of teams each of the mentors is assigned to. A mentor is then selected for the least amount of teams assigned.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently instructors see the corresponding view when looking at teams associated with an assignment:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; column in the instructor view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Currently students see the corresponding view when looking at their team for an assignment:&lt;br /&gt;
[[File:Student_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; section in the student view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
===   ''Files Modified''   ===&lt;br /&gt;
List all the files we changed when implementing our project&lt;br /&gt;
&lt;br /&gt;
'''Models'''&lt;br /&gt;
*assignment.rb&lt;br /&gt;
*assignment_team.rb&lt;br /&gt;
*assignment_form.rb&lt;br /&gt;
*User.rb&lt;br /&gt;
&lt;br /&gt;
'''Controllers'''&lt;br /&gt;
*assignments_controller.rb&lt;br /&gt;
*teams_controller.rb&lt;br /&gt;
&lt;br /&gt;
'''Views'''&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== ''Testing Plan'' ===&lt;br /&gt;
&lt;br /&gt;
==== ''Edge Cases'' ====&lt;br /&gt;
The following are scenarios our team has thought about:&lt;br /&gt;
&lt;br /&gt;
Edge Case 1: How will we handle the &amp;quot;Has topic?&amp;quot; check box being changed when editing the assignment in the instructor view. This button is how we decide if we need to assign mentors to a team.&lt;br /&gt;
   Option A: Always run our algorithm for each assignment made and only show which mentors are assigned if the &amp;quot;Has topic?&amp;quot; is not checked&lt;br /&gt;
   Option B: Add the functionality to add and remove mentors for all assignments, not just assignments without topics then add and remove mentors when an assignment is edited.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_hasTopics_checkbox.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Edge Case 2: No mentors exist&lt;br /&gt;
   Option A: Don't assign mentors&lt;br /&gt;
   Option B: Prevent creation of teams&lt;br /&gt;
&lt;br /&gt;
==== ''RSpec Test'' ====&lt;br /&gt;
RSpec test to check:&lt;br /&gt;
* Validation of the models&lt;br /&gt;
* Functionality of controllers&lt;br /&gt;
&lt;br /&gt;
==== ''UI Test'' ====&lt;br /&gt;
In the UI test we are going to verify that:&lt;br /&gt;
As an instructor should be able to see, the following:&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
=== Future Implementation ===&lt;br /&gt;
&lt;br /&gt;
1. Implementing manual mentor assignment capability for instructors assign mentors to a team.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
Github Repository:  &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request:  &amp;lt;br&amp;gt;&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=136499</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=136499"/>
		<updated>2020-10-29T00:06:25Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* RSpec Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   ''Background''   ===&lt;br /&gt;
Currently, Expertiza has no way to associate mentors with teams. For assignments with topics, like the OSS project, mentors are associated with topics, and then whichever team is assigned to the topic inherits the mentor for that topic, However, for assignments without topics (like Program 2), there is no good way to “automatically” assign mentors to projects.&lt;br /&gt;
&lt;br /&gt;
===   ''Objectives''   ===&lt;br /&gt;
Implement code that will allow a mentor to be directly associated with a team. Notify mentor when they have been assigned to a team via email.&lt;br /&gt;
&lt;br /&gt;
===   ''Previous Work''   ===&lt;br /&gt;
We learned from previous implementations and looked to avoid the following pitfalls when implementing our solution:&lt;br /&gt;
&lt;br /&gt;
*Code was merged from the previous team, but not refactored, so a lot of unused code remained.&lt;br /&gt;
*Should have followed a better naming convention for methods&lt;br /&gt;
*Some redundant codes in the views could be DRYed out.&lt;br /&gt;
*Commented code should be removed.&lt;br /&gt;
*Some complex logic is added but not explained in the comments.&lt;br /&gt;
*Code should be placed in most relevant classes. (E.g. Do not put email code in the Team class).&lt;br /&gt;
*Documentation doesn't accurately represent implementation.&lt;br /&gt;
*Lacked sufficient detail for Test section.&lt;br /&gt;
&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
===   ''Program Design''   ===&lt;br /&gt;
We are proposing the following design with our implementation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Program_Design.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our implementation begins when the team is created. Once a team is created, it prompts a question asking if the assignment that the team is being created before has a topic. If the assignment is associated with a topic, teams are not given a mentor. If the assignment does not have a topic, a list of mentors is queried. The list contains mentors and details the amount of teams each of the mentors is assigned to. A mentor is then selected for the least amount of teams assigned.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently instructors would see the corresponding view when looking at teams associated with an assignment:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; column in the instructor view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; section in the student view:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
===   ''Files Modified''   ===&lt;br /&gt;
List all the files we changed when implementing our project&lt;br /&gt;
&lt;br /&gt;
'''Models'''&lt;br /&gt;
*assignment.rb&lt;br /&gt;
*assignment_team.rb&lt;br /&gt;
*assignment_form.rb&lt;br /&gt;
*User.rb&lt;br /&gt;
&lt;br /&gt;
'''Controllers'''&lt;br /&gt;
*assignments_controller.rb&lt;br /&gt;
*teams_controller.rb&lt;br /&gt;
&lt;br /&gt;
'''Views'''&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== ''Testing Plan'' ===&lt;br /&gt;
&lt;br /&gt;
==== ''Edge Cases'' ====&lt;br /&gt;
The following are scenarios our team has thought about:&lt;br /&gt;
&lt;br /&gt;
Edge Case 1: How will we handle the &amp;quot;Has topic?&amp;quot; check box being changed when editing the assignment in the instructor view. This button is how we decide if we need to assign mentors to a team.&lt;br /&gt;
   Option A: Always run our algorithm for each assignment made and only show which mentors are assigned if the &amp;quot;Has topic?&amp;quot; is not checked&lt;br /&gt;
   Option B: Add the functionality to add and remove mentors for all assignments, not just assignments without topics then add and remove mentors when an assignment is edited.&lt;br /&gt;
&lt;br /&gt;
[[File:Instructor_hasTopics_checkbox.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Edge Case 2: No mentors exist&lt;br /&gt;
   Option A: Don't assign mentors&lt;br /&gt;
   Option B: Prevent creation of teams&lt;br /&gt;
&lt;br /&gt;
==== ''RSpec Test'' ====&lt;br /&gt;
RSpec test to check:&lt;br /&gt;
* Validation of the models&lt;br /&gt;
* Functionality of controllers&lt;br /&gt;
&lt;br /&gt;
==== ''UI Test'' ====&lt;br /&gt;
In the UI test we are going to verify that:&lt;br /&gt;
&lt;br /&gt;
1. Instructor/Admin verifies the selection of has topics button&amp;lt;br&amp;gt;&lt;br /&gt;
2. Student create team and invite others&amp;lt;br&amp;gt;&lt;br /&gt;
3. Assign mentor and send emails, when the team is created&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Future Implementation ===&lt;br /&gt;
&lt;br /&gt;
1. Implementing manual mentor assignment capability for instructors assign mentors to a team.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
Github Repository:  &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request:  &amp;lt;br&amp;gt;&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=136466</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=136466"/>
		<updated>2020-10-28T23:47:05Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* UI Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   ''Background''   ===&lt;br /&gt;
Currently, Expertiza has no way to associate mentors with teams. For assignments with topics, like the OSS project, mentors are associated with topics, and then whichever team is assigned to the topic inherits the mentor for that topic, However, for assignments without topics (like Program 2), there is no good way to “automatically” assign mentors to projects.&lt;br /&gt;
&lt;br /&gt;
===   ''Objectives''   ===&lt;br /&gt;
Implement code that will allow a mentor to be directly associated with a team. Notify mentor when they have been assigned to a team via email.&lt;br /&gt;
&lt;br /&gt;
===   ''Previous Work''   ===&lt;br /&gt;
We learned from previous implementations and looked to avoid the following pitfalls when implementing our solution:&lt;br /&gt;
&lt;br /&gt;
*Code was merged from the previous team, but not refactored, so a lot of unused code remained.&lt;br /&gt;
*Should have followed a better naming convention for methods&lt;br /&gt;
*Some redundant codes in the views could be DRYed out.&lt;br /&gt;
*Commented code should be removed.&lt;br /&gt;
*Some complex logic is added but not explained in the comments.&lt;br /&gt;
*Code should be placed in most relevant classes. (E.g. Do not put email code in the Team class).&lt;br /&gt;
*Documentation doesn't accurately represent implementation.&lt;br /&gt;
*Lacked sufficient detail for Test section.&lt;br /&gt;
&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
===   ''Program Design''   ===&lt;br /&gt;
We are proposing the following design with our implementation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Program_Design.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our implementation begins when the team is created. Once a team is created, it prompts a question asking if the assignment that the team is being created before has a topic. If the assignment is associated with a topic, teams are not given a mentor. If the assignment does not have a topic, a list of mentors is queried. The list contains mentors and details the amount of teams each of the mentors is assigned to. A mentor is then selected for the least amount of teams assigned.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently instructors would see the corresponding view when looking at teams associated with an assignment:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; column:&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; section:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Student_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
===   ''Files Modified''   ===&lt;br /&gt;
List all the files we changed when implementing our project&lt;br /&gt;
&lt;br /&gt;
'''Models'''&lt;br /&gt;
*assignment.rb&lt;br /&gt;
*assignment_team.rb&lt;br /&gt;
*assignment_form.rb&lt;br /&gt;
*User.rb&lt;br /&gt;
&lt;br /&gt;
'''Controllers'''&lt;br /&gt;
*assignments_controller.rb&lt;br /&gt;
*teams_controller.rb&lt;br /&gt;
&lt;br /&gt;
'''Views'''&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== ''Testing Plan'' ===&lt;br /&gt;
&lt;br /&gt;
==== ''Edge Cases'' ====&lt;br /&gt;
The following are scenarios our team has thought about:&lt;br /&gt;
&lt;br /&gt;
==== ''RSpec Test'' ====&lt;br /&gt;
The Rspec test are to be added...&lt;br /&gt;
&lt;br /&gt;
==== ''UI Test'' ====&lt;br /&gt;
In the UI test we are going to verify that:&lt;br /&gt;
&lt;br /&gt;
1. Instructor/Admin verifies the selection of has topics button&amp;lt;br&amp;gt;&lt;br /&gt;
2. Student create team and invite others&amp;lt;br&amp;gt;&lt;br /&gt;
3. Assign mentor and send emails, when the team is created&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
Github Repository:  &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request:  &amp;lt;br&amp;gt;&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=136460</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=136460"/>
		<updated>2020-10-28T23:38:35Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* RSpec Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   ''Background''   ===&lt;br /&gt;
Currently, Expertiza has no way to associate mentors with teams. For assignments with topics, like the OSS project, mentors are associated with topics, and then whichever team is assigned to the topic inherits the mentor for that topic, However, for assignments without topics (like Program 2), there is no good way to “automatically” assign mentors to projects.&lt;br /&gt;
&lt;br /&gt;
===   ''Objectives''   ===&lt;br /&gt;
Implement code that will allow a mentor to be directly associated with a team. Notify mentor when they have been assigned to a team via email.&lt;br /&gt;
&lt;br /&gt;
===   ''Previous Work''   ===&lt;br /&gt;
We learned from previous implementations and looked to avoid the following pitfalls when implementing our solution:&lt;br /&gt;
&lt;br /&gt;
*Code was merged from the previous team, but not refactored, so a lot of unused code remained.&lt;br /&gt;
*Should have followed a better naming convention for methods&lt;br /&gt;
*Some redundant codes in the views could be DRYed out.&lt;br /&gt;
*Commented code should be removed.&lt;br /&gt;
*Some complex logic is added but not explained in the comments.&lt;br /&gt;
*Code should be placed in most relevant classes. (E.g. Do not put email code in the Team class).&lt;br /&gt;
*Documentation doesn't accurately represent implementation.&lt;br /&gt;
*Lacked sufficient detail for Test section.&lt;br /&gt;
&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
===   ''Program Design''   ===&lt;br /&gt;
We are proposing the following design with our implementation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Program_Design.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently instructors would see the corresponding view when looking at teams associated with an assignment:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; column:&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
===   ''Files Modified''   ===&lt;br /&gt;
List all the files we changed when implementing our project&lt;br /&gt;
&lt;br /&gt;
'''Models'''&lt;br /&gt;
*assignment.rb&lt;br /&gt;
*assignment_team.rb&lt;br /&gt;
*assignment_form.rb&lt;br /&gt;
*User.rb&lt;br /&gt;
&lt;br /&gt;
'''Controllers'''&lt;br /&gt;
*assignments_controller.rb&lt;br /&gt;
*teams_controller.rb&lt;br /&gt;
&lt;br /&gt;
'''Views'''&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== ''Testing Plan'' ===&lt;br /&gt;
&lt;br /&gt;
==== ''Edge Cases'' ====&lt;br /&gt;
The following are scenarios our team has thought about:&lt;br /&gt;
&lt;br /&gt;
==== ''RSpec Test'' ====&lt;br /&gt;
The Rspec test are to be added...&lt;br /&gt;
&lt;br /&gt;
==== ''UI Test'' ====&lt;br /&gt;
In the UI test we are going to verify that:&lt;br /&gt;
&lt;br /&gt;
1. Instructor/Admin verifies the selection of has topics button&amp;lt;br&amp;gt;&lt;br /&gt;
2. Student create team and invite others&amp;lt;br&amp;gt;&lt;br /&gt;
3. When team size greater than half of max size, assign mentor and send emails&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
Github Repository:  &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request:  &amp;lt;br&amp;gt;&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=136459</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=136459"/>
		<updated>2020-10-28T23:37:28Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* UI Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   ''Background''   ===&lt;br /&gt;
Currently, Expertiza has no way to associate mentors with teams. For assignments with topics, like the OSS project, mentors are associated with topics, and then whichever team is assigned to the topic inherits the mentor for that topic, However, for assignments without topics (like Program 2), there is no good way to “automatically” assign mentors to projects.&lt;br /&gt;
&lt;br /&gt;
===   ''Objectives''   ===&lt;br /&gt;
Implement code that will allow a mentor to be directly associated with a team. Notify mentor when they have been assigned to a team via email.&lt;br /&gt;
&lt;br /&gt;
===   ''Previous Work''   ===&lt;br /&gt;
We learned from previous implementations and looked to avoid the following pitfalls when implementing our solution:&lt;br /&gt;
&lt;br /&gt;
*Code was merged from the previous team, but not refactored, so a lot of unused code remained.&lt;br /&gt;
*Should have followed a better naming convention for methods&lt;br /&gt;
*Some redundant codes in the views could be DRYed out.&lt;br /&gt;
*Commented code should be removed.&lt;br /&gt;
*Some complex logic is added but not explained in the comments.&lt;br /&gt;
*Code should be placed in most relevant classes. (E.g. Do not put email code in the Team class).&lt;br /&gt;
*Documentation doesn't accurately represent implementation.&lt;br /&gt;
*Lacked sufficient detail for Test section.&lt;br /&gt;
&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
===   ''Program Design''   ===&lt;br /&gt;
We are proposing the following design with our implementation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Program_Design.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently instructors would see the corresponding view when looking at teams associated with an assignment:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; column:&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
===   ''Files Modified''   ===&lt;br /&gt;
List all the files we changed when implementing our project&lt;br /&gt;
&lt;br /&gt;
'''Models'''&lt;br /&gt;
*assignment.rb&lt;br /&gt;
*assignment_team.rb&lt;br /&gt;
*assignment_form.rb&lt;br /&gt;
*User.rb&lt;br /&gt;
&lt;br /&gt;
'''Controllers'''&lt;br /&gt;
*assignments_controller.rb&lt;br /&gt;
*teams_controller.rb&lt;br /&gt;
&lt;br /&gt;
'''Views'''&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== ''Testing Plan'' ===&lt;br /&gt;
&lt;br /&gt;
==== ''Edge Cases'' ====&lt;br /&gt;
The following are scenarios our team has thought about:&lt;br /&gt;
&lt;br /&gt;
==== ''RSpec Test'' ====&lt;br /&gt;
==== ''UI Test'' ====&lt;br /&gt;
In the UI test we are going to verify that:&lt;br /&gt;
&lt;br /&gt;
1. Instructor/Admin verifies the selection of has topics button&amp;lt;br&amp;gt;&lt;br /&gt;
2. Student create team and invite others&amp;lt;br&amp;gt;&lt;br /&gt;
3. When team size greater than half of max size, assign mentor and send emails&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
Github Repository:  &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request:  &amp;lt;br&amp;gt;&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=136458</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=136458"/>
		<updated>2020-10-28T23:36:39Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* UI Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   ''Background''   ===&lt;br /&gt;
Currently, Expertiza has no way to associate mentors with teams. For assignments with topics, like the OSS project, mentors are associated with topics, and then whichever team is assigned to the topic inherits the mentor for that topic, However, for assignments without topics (like Program 2), there is no good way to “automatically” assign mentors to projects.&lt;br /&gt;
&lt;br /&gt;
===   ''Objectives''   ===&lt;br /&gt;
Implement code that will allow a mentor to be directly associated with a team. Notify mentor when they have been assigned to a team via email.&lt;br /&gt;
&lt;br /&gt;
===   ''Previous Work''   ===&lt;br /&gt;
We learned from previous implementations and looked to avoid the following pitfalls when implementing our solution:&lt;br /&gt;
&lt;br /&gt;
*Code was merged from the previous team, but not refactored, so a lot of unused code remained.&lt;br /&gt;
*Should have followed a better naming convention for methods&lt;br /&gt;
*Some redundant codes in the views could be DRYed out.&lt;br /&gt;
*Commented code should be removed.&lt;br /&gt;
*Some complex logic is added but not explained in the comments.&lt;br /&gt;
*Code should be placed in most relevant classes. (E.g. Do not put email code in the Team class).&lt;br /&gt;
*Documentation doesn't accurately represent implementation.&lt;br /&gt;
*Lacked sufficient detail for Test section.&lt;br /&gt;
&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
===   ''Program Design''   ===&lt;br /&gt;
We are proposing the following design with our implementation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Program_Design.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently instructors would see the corresponding view when looking at teams associated with an assignment:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; column:&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
===   ''Files Modified''   ===&lt;br /&gt;
List all the files we changed when implementing our project&lt;br /&gt;
&lt;br /&gt;
'''Models'''&lt;br /&gt;
*assignment.rb&lt;br /&gt;
*assignment_team.rb&lt;br /&gt;
*assignment_form.rb&lt;br /&gt;
*User.rb&lt;br /&gt;
&lt;br /&gt;
'''Controllers'''&lt;br /&gt;
*assignments_controller.rb&lt;br /&gt;
*teams_controller.rb&lt;br /&gt;
&lt;br /&gt;
'''Views'''&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== ''Testing Plan'' ===&lt;br /&gt;
&lt;br /&gt;
==== ''Edge Cases'' ====&lt;br /&gt;
The following are scenarios our team has thought about:&lt;br /&gt;
&lt;br /&gt;
==== ''RSpec Test'' ====&lt;br /&gt;
==== ''UI Test'' ====&lt;br /&gt;
In the UI test we are going to &lt;br /&gt;
&lt;br /&gt;
1. Instructor/Admin verifies the selection of has topics button&amp;lt;br&amp;gt;&lt;br /&gt;
2. Student create team and invite others&amp;lt;br&amp;gt;&lt;br /&gt;
3. When team size greater than half of max size, assign mentor and send emails&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
Github Repository:  &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request:  &amp;lt;br&amp;gt;&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=136457</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=136457"/>
		<updated>2020-10-28T23:36:14Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* UI Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   ''Background''   ===&lt;br /&gt;
Currently, Expertiza has no way to associate mentors with teams. For assignments with topics, like the OSS project, mentors are associated with topics, and then whichever team is assigned to the topic inherits the mentor for that topic, However, for assignments without topics (like Program 2), there is no good way to “automatically” assign mentors to projects.&lt;br /&gt;
&lt;br /&gt;
===   ''Objectives''   ===&lt;br /&gt;
Implement code that will allow a mentor to be directly associated with a team. Notify mentor when they have been assigned to a team via email.&lt;br /&gt;
&lt;br /&gt;
===   ''Previous Work''   ===&lt;br /&gt;
We learned from previous implementations and looked to avoid the following pitfalls when implementing our solution:&lt;br /&gt;
&lt;br /&gt;
*Code was merged from the previous team, but not refactored, so a lot of unused code remained.&lt;br /&gt;
*Should have followed a better naming convention for methods&lt;br /&gt;
*Some redundant codes in the views could be DRYed out.&lt;br /&gt;
*Commented code should be removed.&lt;br /&gt;
*Some complex logic is added but not explained in the comments.&lt;br /&gt;
*Code should be placed in most relevant classes. (E.g. Do not put email code in the Team class).&lt;br /&gt;
*Documentation doesn't accurately represent implementation.&lt;br /&gt;
*Lacked sufficient detail for Test section.&lt;br /&gt;
&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
===   ''Program Design''   ===&lt;br /&gt;
We are proposing the following design with our implementation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Program_Design.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently instructors would see the corresponding view when looking at teams associated with an assignment:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Instructor_view_before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Our team is proposing to add an additional &amp;quot;Mentors&amp;quot; column:&lt;br /&gt;
[[File:Instructor_view_after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
===   ''Files Modified''   ===&lt;br /&gt;
List all the files we changed when implementing our project&lt;br /&gt;
&lt;br /&gt;
'''Models'''&lt;br /&gt;
*assignment.rb&lt;br /&gt;
*assignment_team.rb&lt;br /&gt;
*assignment_form.rb&lt;br /&gt;
*User.rb&lt;br /&gt;
&lt;br /&gt;
'''Controllers'''&lt;br /&gt;
*assignments_controller.rb&lt;br /&gt;
*teams_controller.rb&lt;br /&gt;
&lt;br /&gt;
'''Views'''&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== ''Testing Plan'' ===&lt;br /&gt;
&lt;br /&gt;
==== ''Edge Cases'' ====&lt;br /&gt;
The following are scenarios our team has thought about:&lt;br /&gt;
&lt;br /&gt;
==== ''RSpec Test'' ====&lt;br /&gt;
==== ''UI Test'' ====&lt;br /&gt;
In the UI test we are going to &lt;br /&gt;
&lt;br /&gt;
1. Instructor/Admin verifies the selection of has topics button&lt;br /&gt;
2. Student create team and invite others&lt;br /&gt;
3. When team size greater than half of max size, assign mentor and send emails&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
Github Repository:  &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request:  &amp;lt;br&amp;gt;&lt;br /&gt;
[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_E2024_Mentor_management_for_assignments_without_topics Previous Implementation's Wiki]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=135856</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=135856"/>
		<updated>2020-10-20T22:49:00Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* Project Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   ''Background''   ===&lt;br /&gt;
Present a background information about the problem&lt;br /&gt;
&lt;br /&gt;
===   ''Objectives''   ===&lt;br /&gt;
The tasks that are going to be completed&lt;br /&gt;
&lt;br /&gt;
===   ''Previous Work''   ===&lt;br /&gt;
Show the previous implementations for this project&lt;br /&gt;
&lt;br /&gt;
===   ''Possible Solutions''   ===&lt;br /&gt;
Show the steps we are going to take in order to fix the problems&lt;br /&gt;
&lt;br /&gt;
===   ''Files Modified''   ===&lt;br /&gt;
List all the files we changed when implementing our project&lt;br /&gt;
&lt;br /&gt;
===   ''Relevant Links''   ===&lt;br /&gt;
''Github Repository'':  &amp;lt;br&amp;gt;&lt;br /&gt;
''Pull Request'':  &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=135855</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=135855"/>
		<updated>2020-10-20T22:48:52Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* Project Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   ''Background''   ===&lt;br /&gt;
Present a background information about the problem&lt;br /&gt;
&lt;br /&gt;
===   ''Objectives''   ===&lt;br /&gt;
The tasks that are going to be completed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===   ''Previous Work''   ===&lt;br /&gt;
Show the previous implementations for this project&lt;br /&gt;
&lt;br /&gt;
===   ''Possible Solutions''   ===&lt;br /&gt;
Show the steps we are going to take in order to fix the problems&lt;br /&gt;
&lt;br /&gt;
===   ''Files Modified''   ===&lt;br /&gt;
List all the files we changed when implementing our project&lt;br /&gt;
&lt;br /&gt;
===   ''Relevant Links''   ===&lt;br /&gt;
''Github Repository'':  &amp;lt;br&amp;gt;&lt;br /&gt;
''Pull Request'':  &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=135854</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=135854"/>
		<updated>2020-10-20T22:48:36Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* Possible Solution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   ''Background''   ===&lt;br /&gt;
Present a background information about the problem&lt;br /&gt;
&lt;br /&gt;
===   ''Objectives''   ===&lt;br /&gt;
The tasks that are going to be completed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===   ''Previous Work''   ===&lt;br /&gt;
Show the previous implementations for this project&lt;br /&gt;
&lt;br /&gt;
===   ''Possible Solutions''   ===&lt;br /&gt;
Show the steps we are going to take in order to fix the problems&lt;br /&gt;
&lt;br /&gt;
===   ''Relevant Links''   ===&lt;br /&gt;
''Github Repository'':  &amp;lt;br&amp;gt;&lt;br /&gt;
''Pull Request'':  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===   ''Files Modified''   ===&lt;br /&gt;
List all the files we changed when implementing our project&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=135853</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=135853"/>
		<updated>2020-10-20T22:48:29Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* Project Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   ''Background''   ===&lt;br /&gt;
Present a background information about the problem&lt;br /&gt;
&lt;br /&gt;
===   ''Objectives''   ===&lt;br /&gt;
The tasks that are going to be completed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===   ''Previous Work''   ===&lt;br /&gt;
Show the previous implementations for this project&lt;br /&gt;
&lt;br /&gt;
===   ''Possible Solution''   ===&lt;br /&gt;
Show the steps we are going to take in order to fix the problems&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===   ''Relevant Links''   ===&lt;br /&gt;
''Github Repository'':  &amp;lt;br&amp;gt;&lt;br /&gt;
''Pull Request'':  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===   ''Files Modified''   ===&lt;br /&gt;
List all the files we changed when implementing our project&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=135852</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=135852"/>
		<updated>2020-10-20T22:47:50Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* Project Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   ''Background''   ===&lt;br /&gt;
Present a background information about the problem&lt;br /&gt;
&lt;br /&gt;
===   ''Objectives''   ===&lt;br /&gt;
The tasks that are going to be completed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===   ''Previous Work''   ===&lt;br /&gt;
Show the previous implementations for this project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===   ''Relevant Links''   ===&lt;br /&gt;
''Github Repository'':  &amp;lt;br&amp;gt;&lt;br /&gt;
''Pull Request'':  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===   ''Files Modified''   ===&lt;br /&gt;
List all the files we changed when implementing our project&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=135851</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=135851"/>
		<updated>2020-10-20T22:45:39Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* Project Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   ''Background''   ===&lt;br /&gt;
Present a background information about the problem&lt;br /&gt;
&lt;br /&gt;
===   ''Objectives''   ===&lt;br /&gt;
The tasks that are going to be completed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===   ''Previous Work''   ===&lt;br /&gt;
Show the previous implementations for this project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===   ''Relevant Links''   ===&lt;br /&gt;
''Github Repository'':  &amp;lt;br&amp;gt;&lt;br /&gt;
''Pull Request'':  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===   ''Files Modified''   ===&lt;br /&gt;
List all the files we changed when implementing our project&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===   ''Team Members''   ===&lt;br /&gt;
==Team==&lt;br /&gt;
Santiago Sepulveda &amp;lt;br&amp;gt;&lt;br /&gt;
Skieler Capezza &amp;lt;br&amp;gt;&lt;br /&gt;
Liam Donovan  &amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez  &amp;lt;br&amp;gt;&lt;br /&gt;
'''Mentor:''' Yulin Zhang &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=135850</id>
		<title>CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2077._Mentor_management_for_assignments_without_topics_E2024&amp;diff=135850"/>
		<updated>2020-10-20T22:44:04Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: Created page with &amp;quot;==Project Overview== ===   ''Background''   === Present a background information about the problem  ===   ''Objectives''   === The tasks that are going to be completed   ===...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
===   ''Background''   ===&lt;br /&gt;
Present a background information about the problem&lt;br /&gt;
&lt;br /&gt;
===   ''Objectives''   ===&lt;br /&gt;
The tasks that are going to be completed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===   ''Previous Work''   ===&lt;br /&gt;
Show the previous implementations for this project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===   ''Relevant Links''   ===&lt;br /&gt;
''Github Repository'':  &amp;lt;br&amp;gt;&lt;br /&gt;
''Pull Request'':  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===   ''Files Modified''   ===&lt;br /&gt;
List all the files we changed when implementing our project&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135657</id>
		<title>CSC/ECE 517 Fall 2020 - E2071. Improve assessment360 controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135657"/>
		<updated>2020-10-20T01:36:16Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* Result */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of E2071. Improve assessment360 controller.&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The Expertiza project is software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
As an instructor, you are able to view tables with information on student performance across the various courses they are taking and their assignments. Currently, these tables always show the same information and you are not able to specify if you only want to see certain data. Furthermore, the source code has some variables names that are not clear to what their purpose is in the code.&lt;br /&gt;
===To fix the problem:===&lt;br /&gt;
1.There should be a dialog that appears before navigating to the pages where the table views are that contain a list of checkboxes to allow the user to choose which columns they would like to see.&lt;br /&gt;
====Course Grade Summary====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Instructor Assigned Scores&lt;br /&gt;
*Peer Grades&lt;br /&gt;
*Topics&lt;br /&gt;
====View Aggregated Teammates and Meta Reviews====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Teammate Review Scores&lt;br /&gt;
*Meta Review Scores&lt;br /&gt;
*Number Of Teammates&lt;br /&gt;
&lt;br /&gt;
=='''Solution'''==&lt;br /&gt;
&lt;br /&gt;
===1.Modify View===&lt;br /&gt;
File: app/views/tree_display/_dialog.html.erb&lt;br /&gt;
&lt;br /&gt;
This file is a ruby view partial that contains the html for the checkbox dialogs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog_course_summary&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/course_student_grade_summary', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('InstructorAssignedScores', &amp;quot;Instuctor Assigned Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'InstructorAssignedScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('PeerGrades', &amp;quot;Peer Grades&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'PeerGrades'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('Topics', &amp;quot;Topics&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'Topics'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag('course_id', '', :id =&amp;gt; 'course_summary_course_id')%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeCourseSummaryDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/all_students_all_reviews', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('TeammateReviewScores', &amp;quot;Teammate Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'TeammateReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('MetaReviewScores', &amp;quot;Meta-Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'MetaReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('NumberOfTeammates', &amp;quot;Number Of Teammates&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'NumberOfTeammates'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag 'course_id'%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/assets/javascripts/tree_display.jsx&lt;br /&gt;
&lt;br /&gt;
Added functions to toggle dialog.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  if (document.getElementById('closeDialog')) {&lt;br /&gt;
    document.getElementById('closeDialog').onclick = () =&amp;gt; {jQuery('#dialog').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
  if (document.getElementById('closeCourseSummaryDialog')) {&lt;br /&gt;
    document.getElementById('closeCourseSummaryDialog').onclick = () =&amp;gt; {jQuery('#dialog_course_summary').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   toggleModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
   toggleCourseSummaryModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog_course_summary&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_summary_course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Added buttons to replace links that trigged dialog popups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View grade summary by student&amp;quot; onClick={this.toggleCourseSummaryModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;img src=&amp;quot;/assets/tree_view/360-dashboard-24.png&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View aggregated teammate &amp;amp; meta reviews&amp;quot; onClick={this.toggleModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;span style={{&amp;quot;fontSize&amp;quot;: &amp;quot;22px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} className=&amp;quot;glyphicon glyphicon-list-alt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/views/assessment360/all_students_all_reviews.html.erb, app/views/assessment360/course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
Added conditionals to show selected columns for the html tables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;% total_meta_review_count = @overall_meta_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_meta_review_grade / total_meta_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_grade = @overall_teammate_review_grades.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_count = @overall_teammate_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_teammate_review_grade / total_teammate_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.Modify Controller===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added Variables to check if corresponding columns should be shown.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    fields = params[:fields]&lt;br /&gt;
    @show_meta_reviews = fields.include? 'MetaReviewScores'&lt;br /&gt;
    @show_teammate_reviews = fields.include? 'TeammateReviewScores'&lt;br /&gt;
    @show_teammate_count = fields.include? 'NumberOfTeammates'&lt;br /&gt;
    @colspan_count = 2&lt;br /&gt;
    if !@show_teammate_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
    if !@show_meta_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.'Updated Variable Names===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Renamed @teamed_count to @total_unique_teammates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  @total_unique_teammates = {}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Modify course_student_grade_summary ====&lt;br /&gt;
&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added ability to calculate average peer review score for each student in a course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   @average_peer_review_score = {}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
        next if peer_review_score.nil? &lt;br /&gt;
        next if peer_review_score[:total_score].nil?&lt;br /&gt;
        @average_peer_review_score[cp.id] += peer_review_score[:total_score].round(2)&lt;br /&gt;
      end&lt;br /&gt;
      if @assignments.count &amp;gt; 0&lt;br /&gt;
        @average_peer_review_score[cp.id] = (@average_peer_review_score[cp.id] / @assignments.count()).round(2)&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Result'''==&lt;br /&gt;
&lt;br /&gt;
Before navigating to aggregated teammate and meta reviews, a dialog shows to allow the user select which columns they would like to see.&lt;br /&gt;
&lt;br /&gt;
[[File:Aggregated_teammate_meta_reviews.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Similarly, before navigating to course grade summary, another dialog shows to allow the user select their columns.&lt;br /&gt;
&lt;br /&gt;
[[File:Course_grade_summary.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Two_columns_UI.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dialog_joined_options.png |1000px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
There was an existing test case for the assesment360 controller. We have added the test scenarios for our implementation of the average_peer_review_grades and all_students_all_reviews_all_grades. We tested url parameters as well as the average score pertaining the peer review of a student. &lt;br /&gt;
&lt;br /&gt;
=== How to run the test ===&lt;br /&gt;
&lt;br /&gt;
Following steps needs to be performed to test this code:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. cd expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
2. rspec spec/controllers/assessment360_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Project Mentor:'''&lt;br /&gt;
&amp;lt;br&amp;gt;Dr. Gehringer&lt;br /&gt;
&lt;br /&gt;
'''Project Members:'''&amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez&amp;lt;br&amp;gt;&lt;br /&gt;
Jack Macdonald&amp;lt;br&amp;gt;&lt;br /&gt;
Andrew Hirasawa&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repository ==&lt;br /&gt;
[https://github.com/salmonandrew/expertiza GitHub Repo]&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135656</id>
		<title>CSC/ECE 517 Fall 2020 - E2071. Improve assessment360 controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135656"/>
		<updated>2020-10-20T01:35:43Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* Result */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of E2071. Improve assessment360 controller.&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The Expertiza project is software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
As an instructor, you are able to view tables with information on student performance across the various courses they are taking and their assignments. Currently, these tables always show the same information and you are not able to specify if you only want to see certain data. Furthermore, the source code has some variables names that are not clear to what their purpose is in the code.&lt;br /&gt;
===To fix the problem:===&lt;br /&gt;
1.There should be a dialog that appears before navigating to the pages where the table views are that contain a list of checkboxes to allow the user to choose which columns they would like to see.&lt;br /&gt;
====Course Grade Summary====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Instructor Assigned Scores&lt;br /&gt;
*Peer Grades&lt;br /&gt;
*Topics&lt;br /&gt;
====View Aggregated Teammates and Meta Reviews====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Teammate Review Scores&lt;br /&gt;
*Meta Review Scores&lt;br /&gt;
*Number Of Teammates&lt;br /&gt;
&lt;br /&gt;
=='''Solution'''==&lt;br /&gt;
&lt;br /&gt;
===1.Modify View===&lt;br /&gt;
File: app/views/tree_display/_dialog.html.erb&lt;br /&gt;
&lt;br /&gt;
This file is a ruby view partial that contains the html for the checkbox dialogs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog_course_summary&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/course_student_grade_summary', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('InstructorAssignedScores', &amp;quot;Instuctor Assigned Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'InstructorAssignedScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('PeerGrades', &amp;quot;Peer Grades&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'PeerGrades'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('Topics', &amp;quot;Topics&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'Topics'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag('course_id', '', :id =&amp;gt; 'course_summary_course_id')%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeCourseSummaryDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/all_students_all_reviews', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('TeammateReviewScores', &amp;quot;Teammate Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'TeammateReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('MetaReviewScores', &amp;quot;Meta-Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'MetaReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('NumberOfTeammates', &amp;quot;Number Of Teammates&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'NumberOfTeammates'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag 'course_id'%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/assets/javascripts/tree_display.jsx&lt;br /&gt;
&lt;br /&gt;
Added functions to toggle dialog.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  if (document.getElementById('closeDialog')) {&lt;br /&gt;
    document.getElementById('closeDialog').onclick = () =&amp;gt; {jQuery('#dialog').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
  if (document.getElementById('closeCourseSummaryDialog')) {&lt;br /&gt;
    document.getElementById('closeCourseSummaryDialog').onclick = () =&amp;gt; {jQuery('#dialog_course_summary').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   toggleModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
   toggleCourseSummaryModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog_course_summary&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_summary_course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Added buttons to replace links that trigged dialog popups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View grade summary by student&amp;quot; onClick={this.toggleCourseSummaryModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;img src=&amp;quot;/assets/tree_view/360-dashboard-24.png&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View aggregated teammate &amp;amp; meta reviews&amp;quot; onClick={this.toggleModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;span style={{&amp;quot;fontSize&amp;quot;: &amp;quot;22px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} className=&amp;quot;glyphicon glyphicon-list-alt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/views/assessment360/all_students_all_reviews.html.erb, app/views/assessment360/course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
Added conditionals to show selected columns for the html tables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;% total_meta_review_count = @overall_meta_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_meta_review_grade / total_meta_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_grade = @overall_teammate_review_grades.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_count = @overall_teammate_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_teammate_review_grade / total_teammate_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.Modify Controller===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added Variables to check if corresponding columns should be shown.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    fields = params[:fields]&lt;br /&gt;
    @show_meta_reviews = fields.include? 'MetaReviewScores'&lt;br /&gt;
    @show_teammate_reviews = fields.include? 'TeammateReviewScores'&lt;br /&gt;
    @show_teammate_count = fields.include? 'NumberOfTeammates'&lt;br /&gt;
    @colspan_count = 2&lt;br /&gt;
    if !@show_teammate_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
    if !@show_meta_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.'Updated Variable Names===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Renamed @teamed_count to @total_unique_teammates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  @total_unique_teammates = {}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Modify course_student_grade_summary ====&lt;br /&gt;
&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added ability to calculate average peer review score for each student in a course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   @average_peer_review_score = {}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
        next if peer_review_score.nil? &lt;br /&gt;
        next if peer_review_score[:total_score].nil?&lt;br /&gt;
        @average_peer_review_score[cp.id] += peer_review_score[:total_score].round(2)&lt;br /&gt;
      end&lt;br /&gt;
      if @assignments.count &amp;gt; 0&lt;br /&gt;
        @average_peer_review_score[cp.id] = (@average_peer_review_score[cp.id] / @assignments.count()).round(2)&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Result'''==&lt;br /&gt;
&lt;br /&gt;
Before navigating to aggregated teammate and meta reviews, a dialog shows to allow the user select which columns they would like to see.&lt;br /&gt;
&lt;br /&gt;
[[File:Aggregated_teammate_meta_reviews.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Similarly, before navigating to course grade summary, another dialog shows to allow the user select their columns.&lt;br /&gt;
&lt;br /&gt;
[[File:Course_grade_summary.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Two_columns_UI.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dialog_joined_options.png |1000px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
There was an existing test case for the assesment360 controller. We have added the test scenarios for our implementation of the average_peer_review_grades and all_students_all_reviews_all_grades. We tested url parameters as well as the average score pertaining the peer review of a student. &lt;br /&gt;
&lt;br /&gt;
=== How to run the test ===&lt;br /&gt;
&lt;br /&gt;
Following steps needs to be performed to test this code:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. cd expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
2. rspec spec/controllers/assessment360_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Project Mentor:'''&lt;br /&gt;
&amp;lt;br&amp;gt;Dr. Gehringer&lt;br /&gt;
&lt;br /&gt;
'''Project Members:'''&amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez&amp;lt;br&amp;gt;&lt;br /&gt;
Jack Macdonald&amp;lt;br&amp;gt;&lt;br /&gt;
Andrew Hirasawa&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repository ==&lt;br /&gt;
[https://github.com/salmonandrew/expertiza GitHub Repo]&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Dialog_joined_options.png&amp;diff=135655</id>
		<title>File:Dialog joined options.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Dialog_joined_options.png&amp;diff=135655"/>
		<updated>2020-10-20T01:34:36Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135654</id>
		<title>CSC/ECE 517 Fall 2020 - E2071. Improve assessment360 controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135654"/>
		<updated>2020-10-20T01:33:39Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* Result */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of E2071. Improve assessment360 controller.&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The Expertiza project is software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
As an instructor, you are able to view tables with information on student performance across the various courses they are taking and their assignments. Currently, these tables always show the same information and you are not able to specify if you only want to see certain data. Furthermore, the source code has some variables names that are not clear to what their purpose is in the code.&lt;br /&gt;
===To fix the problem:===&lt;br /&gt;
1.There should be a dialog that appears before navigating to the pages where the table views are that contain a list of checkboxes to allow the user to choose which columns they would like to see.&lt;br /&gt;
====Course Grade Summary====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Instructor Assigned Scores&lt;br /&gt;
*Peer Grades&lt;br /&gt;
*Topics&lt;br /&gt;
====View Aggregated Teammates and Meta Reviews====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Teammate Review Scores&lt;br /&gt;
*Meta Review Scores&lt;br /&gt;
*Number Of Teammates&lt;br /&gt;
&lt;br /&gt;
=='''Solution'''==&lt;br /&gt;
&lt;br /&gt;
===1.Modify View===&lt;br /&gt;
File: app/views/tree_display/_dialog.html.erb&lt;br /&gt;
&lt;br /&gt;
This file is a ruby view partial that contains the html for the checkbox dialogs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog_course_summary&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/course_student_grade_summary', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('InstructorAssignedScores', &amp;quot;Instuctor Assigned Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'InstructorAssignedScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('PeerGrades', &amp;quot;Peer Grades&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'PeerGrades'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('Topics', &amp;quot;Topics&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'Topics'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag('course_id', '', :id =&amp;gt; 'course_summary_course_id')%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeCourseSummaryDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/all_students_all_reviews', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('TeammateReviewScores', &amp;quot;Teammate Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'TeammateReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('MetaReviewScores', &amp;quot;Meta-Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'MetaReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('NumberOfTeammates', &amp;quot;Number Of Teammates&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'NumberOfTeammates'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag 'course_id'%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/assets/javascripts/tree_display.jsx&lt;br /&gt;
&lt;br /&gt;
Added functions to toggle dialog.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  if (document.getElementById('closeDialog')) {&lt;br /&gt;
    document.getElementById('closeDialog').onclick = () =&amp;gt; {jQuery('#dialog').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
  if (document.getElementById('closeCourseSummaryDialog')) {&lt;br /&gt;
    document.getElementById('closeCourseSummaryDialog').onclick = () =&amp;gt; {jQuery('#dialog_course_summary').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   toggleModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
   toggleCourseSummaryModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog_course_summary&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_summary_course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Added buttons to replace links that trigged dialog popups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View grade summary by student&amp;quot; onClick={this.toggleCourseSummaryModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;img src=&amp;quot;/assets/tree_view/360-dashboard-24.png&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View aggregated teammate &amp;amp; meta reviews&amp;quot; onClick={this.toggleModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;span style={{&amp;quot;fontSize&amp;quot;: &amp;quot;22px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} className=&amp;quot;glyphicon glyphicon-list-alt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/views/assessment360/all_students_all_reviews.html.erb, app/views/assessment360/course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
Added conditionals to show selected columns for the html tables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;% total_meta_review_count = @overall_meta_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_meta_review_grade / total_meta_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_grade = @overall_teammate_review_grades.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_count = @overall_teammate_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_teammate_review_grade / total_teammate_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.Modify Controller===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added Variables to check if corresponding columns should be shown.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    fields = params[:fields]&lt;br /&gt;
    @show_meta_reviews = fields.include? 'MetaReviewScores'&lt;br /&gt;
    @show_teammate_reviews = fields.include? 'TeammateReviewScores'&lt;br /&gt;
    @show_teammate_count = fields.include? 'NumberOfTeammates'&lt;br /&gt;
    @colspan_count = 2&lt;br /&gt;
    if !@show_teammate_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
    if !@show_meta_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.'Updated Variable Names===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Renamed @teamed_count to @total_unique_teammates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  @total_unique_teammates = {}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Modify course_student_grade_summary ====&lt;br /&gt;
&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added ability to calculate average peer review score for each student in a course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   @average_peer_review_score = {}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
        next if peer_review_score.nil? &lt;br /&gt;
        next if peer_review_score[:total_score].nil?&lt;br /&gt;
        @average_peer_review_score[cp.id] += peer_review_score[:total_score].round(2)&lt;br /&gt;
      end&lt;br /&gt;
      if @assignments.count &amp;gt; 0&lt;br /&gt;
        @average_peer_review_score[cp.id] = (@average_peer_review_score[cp.id] / @assignments.count()).round(2)&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Result'''==&lt;br /&gt;
&lt;br /&gt;
Before navigating to aggregated teammate and meta reviews, a dialog shows to allow the user select which columns they would like to see.&lt;br /&gt;
&lt;br /&gt;
[[File:Aggregated_teammate_meta_reviews.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Similarly, before navigating to course grade summary, another dialog shows to allow the user select their columns.&lt;br /&gt;
&lt;br /&gt;
[[File:Course_grade_summary.png]]&lt;br /&gt;
[[File:Two_columns_UI.png]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
There was an existing test case for the assesment360 controller. We have added the test scenarios for our implementation of the average_peer_review_grades and all_students_all_reviews_all_grades. We tested url parameters as well as the average score pertaining the peer review of a student. &lt;br /&gt;
&lt;br /&gt;
=== How to run the test ===&lt;br /&gt;
&lt;br /&gt;
Following steps needs to be performed to test this code:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. cd expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
2. rspec spec/controllers/assessment360_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Project Mentor:'''&lt;br /&gt;
&amp;lt;br&amp;gt;Dr. Gehringer&lt;br /&gt;
&lt;br /&gt;
'''Project Members:'''&amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez&amp;lt;br&amp;gt;&lt;br /&gt;
Jack Macdonald&amp;lt;br&amp;gt;&lt;br /&gt;
Andrew Hirasawa&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repository ==&lt;br /&gt;
[https://github.com/salmonandrew/expertiza GitHub Repo]&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135653</id>
		<title>CSC/ECE 517 Fall 2020 - E2071. Improve assessment360 controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135653"/>
		<updated>2020-10-20T01:32:26Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* Result */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of E2071. Improve assessment360 controller.&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The Expertiza project is software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
As an instructor, you are able to view tables with information on student performance across the various courses they are taking and their assignments. Currently, these tables always show the same information and you are not able to specify if you only want to see certain data. Furthermore, the source code has some variables names that are not clear to what their purpose is in the code.&lt;br /&gt;
===To fix the problem:===&lt;br /&gt;
1.There should be a dialog that appears before navigating to the pages where the table views are that contain a list of checkboxes to allow the user to choose which columns they would like to see.&lt;br /&gt;
====Course Grade Summary====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Instructor Assigned Scores&lt;br /&gt;
*Peer Grades&lt;br /&gt;
*Topics&lt;br /&gt;
====View Aggregated Teammates and Meta Reviews====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Teammate Review Scores&lt;br /&gt;
*Meta Review Scores&lt;br /&gt;
*Number Of Teammates&lt;br /&gt;
&lt;br /&gt;
=='''Solution'''==&lt;br /&gt;
&lt;br /&gt;
===1.Modify View===&lt;br /&gt;
File: app/views/tree_display/_dialog.html.erb&lt;br /&gt;
&lt;br /&gt;
This file is a ruby view partial that contains the html for the checkbox dialogs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog_course_summary&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/course_student_grade_summary', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('InstructorAssignedScores', &amp;quot;Instuctor Assigned Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'InstructorAssignedScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('PeerGrades', &amp;quot;Peer Grades&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'PeerGrades'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('Topics', &amp;quot;Topics&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'Topics'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag('course_id', '', :id =&amp;gt; 'course_summary_course_id')%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeCourseSummaryDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/all_students_all_reviews', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('TeammateReviewScores', &amp;quot;Teammate Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'TeammateReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('MetaReviewScores', &amp;quot;Meta-Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'MetaReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('NumberOfTeammates', &amp;quot;Number Of Teammates&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'NumberOfTeammates'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag 'course_id'%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/assets/javascripts/tree_display.jsx&lt;br /&gt;
&lt;br /&gt;
Added functions to toggle dialog.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  if (document.getElementById('closeDialog')) {&lt;br /&gt;
    document.getElementById('closeDialog').onclick = () =&amp;gt; {jQuery('#dialog').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
  if (document.getElementById('closeCourseSummaryDialog')) {&lt;br /&gt;
    document.getElementById('closeCourseSummaryDialog').onclick = () =&amp;gt; {jQuery('#dialog_course_summary').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   toggleModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
   toggleCourseSummaryModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog_course_summary&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_summary_course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Added buttons to replace links that trigged dialog popups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View grade summary by student&amp;quot; onClick={this.toggleCourseSummaryModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;img src=&amp;quot;/assets/tree_view/360-dashboard-24.png&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View aggregated teammate &amp;amp; meta reviews&amp;quot; onClick={this.toggleModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;span style={{&amp;quot;fontSize&amp;quot;: &amp;quot;22px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} className=&amp;quot;glyphicon glyphicon-list-alt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/views/assessment360/all_students_all_reviews.html.erb, app/views/assessment360/course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
Added conditionals to show selected columns for the html tables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;% total_meta_review_count = @overall_meta_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_meta_review_grade / total_meta_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_grade = @overall_teammate_review_grades.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_count = @overall_teammate_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_teammate_review_grade / total_teammate_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.Modify Controller===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added Variables to check if corresponding columns should be shown.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    fields = params[:fields]&lt;br /&gt;
    @show_meta_reviews = fields.include? 'MetaReviewScores'&lt;br /&gt;
    @show_teammate_reviews = fields.include? 'TeammateReviewScores'&lt;br /&gt;
    @show_teammate_count = fields.include? 'NumberOfTeammates'&lt;br /&gt;
    @colspan_count = 2&lt;br /&gt;
    if !@show_teammate_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
    if !@show_meta_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.'Updated Variable Names===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Renamed @teamed_count to @total_unique_teammates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  @total_unique_teammates = {}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Modify course_student_grade_summary ====&lt;br /&gt;
&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added ability to calculate average peer review score for each student in a course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   @average_peer_review_score = {}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
        next if peer_review_score.nil? &lt;br /&gt;
        next if peer_review_score[:total_score].nil?&lt;br /&gt;
        @average_peer_review_score[cp.id] += peer_review_score[:total_score].round(2)&lt;br /&gt;
      end&lt;br /&gt;
      if @assignments.count &amp;gt; 0&lt;br /&gt;
        @average_peer_review_score[cp.id] = (@average_peer_review_score[cp.id] / @assignments.count()).round(2)&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Result'''==&lt;br /&gt;
&lt;br /&gt;
Before navigating to aggregated teammate and meta reviews, a dialog shows to allow the user select which columns they would like to see.&lt;br /&gt;
&lt;br /&gt;
[[File:Aggregated_teammate_meta_reviews.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Similarly, before navigating to course grade summary, another dialog shows to allow the user select their columns.&lt;br /&gt;
&lt;br /&gt;
[[File:Course_grade_summary.png]]&lt;br /&gt;
[[File:Two columns UI.png ‎.png]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
There was an existing test case for the assesment360 controller. We have added the test scenarios for our implementation of the average_peer_review_grades and all_students_all_reviews_all_grades. We tested url parameters as well as the average score pertaining the peer review of a student. &lt;br /&gt;
&lt;br /&gt;
=== How to run the test ===&lt;br /&gt;
&lt;br /&gt;
Following steps needs to be performed to test this code:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. cd expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
2. rspec spec/controllers/assessment360_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Project Mentor:'''&lt;br /&gt;
&amp;lt;br&amp;gt;Dr. Gehringer&lt;br /&gt;
&lt;br /&gt;
'''Project Members:'''&amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez&amp;lt;br&amp;gt;&lt;br /&gt;
Jack Macdonald&amp;lt;br&amp;gt;&lt;br /&gt;
Andrew Hirasawa&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repository ==&lt;br /&gt;
[https://github.com/salmonandrew/expertiza GitHub Repo]&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135652</id>
		<title>CSC/ECE 517 Fall 2020 - E2071. Improve assessment360 controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135652"/>
		<updated>2020-10-20T01:31:30Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* Result */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of E2071. Improve assessment360 controller.&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The Expertiza project is software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
As an instructor, you are able to view tables with information on student performance across the various courses they are taking and their assignments. Currently, these tables always show the same information and you are not able to specify if you only want to see certain data. Furthermore, the source code has some variables names that are not clear to what their purpose is in the code.&lt;br /&gt;
===To fix the problem:===&lt;br /&gt;
1.There should be a dialog that appears before navigating to the pages where the table views are that contain a list of checkboxes to allow the user to choose which columns they would like to see.&lt;br /&gt;
====Course Grade Summary====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Instructor Assigned Scores&lt;br /&gt;
*Peer Grades&lt;br /&gt;
*Topics&lt;br /&gt;
====View Aggregated Teammates and Meta Reviews====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Teammate Review Scores&lt;br /&gt;
*Meta Review Scores&lt;br /&gt;
*Number Of Teammates&lt;br /&gt;
&lt;br /&gt;
=='''Solution'''==&lt;br /&gt;
&lt;br /&gt;
===1.Modify View===&lt;br /&gt;
File: app/views/tree_display/_dialog.html.erb&lt;br /&gt;
&lt;br /&gt;
This file is a ruby view partial that contains the html for the checkbox dialogs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog_course_summary&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/course_student_grade_summary', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('InstructorAssignedScores', &amp;quot;Instuctor Assigned Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'InstructorAssignedScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('PeerGrades', &amp;quot;Peer Grades&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'PeerGrades'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('Topics', &amp;quot;Topics&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'Topics'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag('course_id', '', :id =&amp;gt; 'course_summary_course_id')%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeCourseSummaryDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/all_students_all_reviews', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('TeammateReviewScores', &amp;quot;Teammate Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'TeammateReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('MetaReviewScores', &amp;quot;Meta-Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'MetaReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('NumberOfTeammates', &amp;quot;Number Of Teammates&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'NumberOfTeammates'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag 'course_id'%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/assets/javascripts/tree_display.jsx&lt;br /&gt;
&lt;br /&gt;
Added functions to toggle dialog.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  if (document.getElementById('closeDialog')) {&lt;br /&gt;
    document.getElementById('closeDialog').onclick = () =&amp;gt; {jQuery('#dialog').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
  if (document.getElementById('closeCourseSummaryDialog')) {&lt;br /&gt;
    document.getElementById('closeCourseSummaryDialog').onclick = () =&amp;gt; {jQuery('#dialog_course_summary').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   toggleModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
   toggleCourseSummaryModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog_course_summary&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_summary_course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Added buttons to replace links that trigged dialog popups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View grade summary by student&amp;quot; onClick={this.toggleCourseSummaryModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;img src=&amp;quot;/assets/tree_view/360-dashboard-24.png&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View aggregated teammate &amp;amp; meta reviews&amp;quot; onClick={this.toggleModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;span style={{&amp;quot;fontSize&amp;quot;: &amp;quot;22px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} className=&amp;quot;glyphicon glyphicon-list-alt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/views/assessment360/all_students_all_reviews.html.erb, app/views/assessment360/course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
Added conditionals to show selected columns for the html tables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;% total_meta_review_count = @overall_meta_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_meta_review_grade / total_meta_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_grade = @overall_teammate_review_grades.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_count = @overall_teammate_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_teammate_review_grade / total_teammate_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.Modify Controller===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added Variables to check if corresponding columns should be shown.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    fields = params[:fields]&lt;br /&gt;
    @show_meta_reviews = fields.include? 'MetaReviewScores'&lt;br /&gt;
    @show_teammate_reviews = fields.include? 'TeammateReviewScores'&lt;br /&gt;
    @show_teammate_count = fields.include? 'NumberOfTeammates'&lt;br /&gt;
    @colspan_count = 2&lt;br /&gt;
    if !@show_teammate_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
    if !@show_meta_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.'Updated Variable Names===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Renamed @teamed_count to @total_unique_teammates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  @total_unique_teammates = {}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Modify course_student_grade_summary ====&lt;br /&gt;
&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added ability to calculate average peer review score for each student in a course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   @average_peer_review_score = {}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
        next if peer_review_score.nil? &lt;br /&gt;
        next if peer_review_score[:total_score].nil?&lt;br /&gt;
        @average_peer_review_score[cp.id] += peer_review_score[:total_score].round(2)&lt;br /&gt;
      end&lt;br /&gt;
      if @assignments.count &amp;gt; 0&lt;br /&gt;
        @average_peer_review_score[cp.id] = (@average_peer_review_score[cp.id] / @assignments.count()).round(2)&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Result'''==&lt;br /&gt;
&lt;br /&gt;
Before navigating to aggregated teammate and meta reviews, a dialog shows to allow the user select which columns they would like to see.&lt;br /&gt;
&lt;br /&gt;
[[File:Aggregated_teammate_meta_reviews.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Similarly, before navigating to course grade summary, another dialog shows to allow the user select their columns.&lt;br /&gt;
&lt;br /&gt;
[[File:Course_grade_summary.png]]&lt;br /&gt;
[[File:Two_columns_Ui.png]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
There was an existing test case for the assesment360 controller. We have added the test scenarios for our implementation of the average_peer_review_grades and all_students_all_reviews_all_grades. We tested url parameters as well as the average score pertaining the peer review of a student. &lt;br /&gt;
&lt;br /&gt;
=== How to run the test ===&lt;br /&gt;
&lt;br /&gt;
Following steps needs to be performed to test this code:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. cd expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
2. rspec spec/controllers/assessment360_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Project Mentor:'''&lt;br /&gt;
&amp;lt;br&amp;gt;Dr. Gehringer&lt;br /&gt;
&lt;br /&gt;
'''Project Members:'''&amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez&amp;lt;br&amp;gt;&lt;br /&gt;
Jack Macdonald&amp;lt;br&amp;gt;&lt;br /&gt;
Andrew Hirasawa&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repository ==&lt;br /&gt;
[https://github.com/salmonandrew/expertiza GitHub Repo]&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Two_columns_UI.png&amp;diff=135651</id>
		<title>File:Two columns UI.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Two_columns_UI.png&amp;diff=135651"/>
		<updated>2020-10-20T01:30:44Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135650</id>
		<title>CSC/ECE 517 Fall 2020 - E2071. Improve assessment360 controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135650"/>
		<updated>2020-10-20T01:23:52Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* How to run the test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of E2071. Improve assessment360 controller.&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The Expertiza project is software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
As an instructor, you are able to view tables with information on student performance across the various courses they are taking and their assignments. Currently, these tables always show the same information and you are not able to specify if you only want to see certain data. Furthermore, the source code has some variables names that are not clear to what their purpose is in the code.&lt;br /&gt;
===To fix the problem:===&lt;br /&gt;
1.There should be a dialog that appears before navigating to the pages where the table views are that contain a list of checkboxes to allow the user to choose which columns they would like to see.&lt;br /&gt;
====Course Grade Summary====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Instructor Assigned Scores&lt;br /&gt;
*Peer Grades&lt;br /&gt;
*Topics&lt;br /&gt;
====View Aggregated Teammates and Meta Reviews====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Teammate Review Scores&lt;br /&gt;
*Meta Review Scores&lt;br /&gt;
*Number Of Teammates&lt;br /&gt;
&lt;br /&gt;
=='''Solution'''==&lt;br /&gt;
&lt;br /&gt;
===1.Modify View===&lt;br /&gt;
File: app/views/tree_display/_dialog.html.erb&lt;br /&gt;
&lt;br /&gt;
This file is a ruby view partial that contains the html for the checkbox dialogs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog_course_summary&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/course_student_grade_summary', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('InstructorAssignedScores', &amp;quot;Instuctor Assigned Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'InstructorAssignedScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('PeerGrades', &amp;quot;Peer Grades&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'PeerGrades'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('Topics', &amp;quot;Topics&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'Topics'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag('course_id', '', :id =&amp;gt; 'course_summary_course_id')%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeCourseSummaryDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/all_students_all_reviews', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('TeammateReviewScores', &amp;quot;Teammate Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'TeammateReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('MetaReviewScores', &amp;quot;Meta-Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'MetaReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('NumberOfTeammates', &amp;quot;Number Of Teammates&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'NumberOfTeammates'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag 'course_id'%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/assets/javascripts/tree_display.jsx&lt;br /&gt;
&lt;br /&gt;
Added functions to toggle dialog.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  if (document.getElementById('closeDialog')) {&lt;br /&gt;
    document.getElementById('closeDialog').onclick = () =&amp;gt; {jQuery('#dialog').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
  if (document.getElementById('closeCourseSummaryDialog')) {&lt;br /&gt;
    document.getElementById('closeCourseSummaryDialog').onclick = () =&amp;gt; {jQuery('#dialog_course_summary').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   toggleModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
   toggleCourseSummaryModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog_course_summary&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_summary_course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Added buttons to replace links that trigged dialog popups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View grade summary by student&amp;quot; onClick={this.toggleCourseSummaryModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;img src=&amp;quot;/assets/tree_view/360-dashboard-24.png&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View aggregated teammate &amp;amp; meta reviews&amp;quot; onClick={this.toggleModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;span style={{&amp;quot;fontSize&amp;quot;: &amp;quot;22px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} className=&amp;quot;glyphicon glyphicon-list-alt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/views/assessment360/all_students_all_reviews.html.erb, app/views/assessment360/course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
Added conditionals to show selected columns for the html tables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;% total_meta_review_count = @overall_meta_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_meta_review_grade / total_meta_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_grade = @overall_teammate_review_grades.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_count = @overall_teammate_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_teammate_review_grade / total_teammate_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.Modify Controller===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added Variables to check if corresponding columns should be shown.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    fields = params[:fields]&lt;br /&gt;
    @show_meta_reviews = fields.include? 'MetaReviewScores'&lt;br /&gt;
    @show_teammate_reviews = fields.include? 'TeammateReviewScores'&lt;br /&gt;
    @show_teammate_count = fields.include? 'NumberOfTeammates'&lt;br /&gt;
    @colspan_count = 2&lt;br /&gt;
    if !@show_teammate_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
    if !@show_meta_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.'Updated Variable Names===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Renamed @teamed_count to @total_unique_teammates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  @total_unique_teammates = {}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Modify course_student_grade_summary ====&lt;br /&gt;
&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added ability to calculate average peer review score for each student in a course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   @average_peer_review_score = {}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
        next if peer_review_score.nil? &lt;br /&gt;
        next if peer_review_score[:total_score].nil?&lt;br /&gt;
        @average_peer_review_score[cp.id] += peer_review_score[:total_score].round(2)&lt;br /&gt;
      end&lt;br /&gt;
      if @assignments.count &amp;gt; 0&lt;br /&gt;
        @average_peer_review_score[cp.id] = (@average_peer_review_score[cp.id] / @assignments.count()).round(2)&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Result'''==&lt;br /&gt;
&lt;br /&gt;
Before navigating to aggregated teammate and meta reviews, a dialog shows to allow the user select which columns they would like to see.&lt;br /&gt;
&lt;br /&gt;
[[File:Aggregated_teammate_meta_reviews.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Similarly, before navigating to course grade summary, another dialog shows to allow the user select their columns.&lt;br /&gt;
&lt;br /&gt;
[[File:Course_grade_summary.png]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
There was an existing test case for the assesment360 controller. We have added the test scenarios for our implementation of the average_peer_review_grades and all_students_all_reviews_all_grades. We tested url parameters as well as the average score pertaining the peer review of a student. &lt;br /&gt;
&lt;br /&gt;
=== How to run the test ===&lt;br /&gt;
&lt;br /&gt;
Following steps needs to be performed to test this code:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. cd expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
2. rspec spec/controllers/assessment360_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Project Mentor:'''&lt;br /&gt;
&amp;lt;br&amp;gt;Dr. Gehringer&lt;br /&gt;
&lt;br /&gt;
'''Project Members:'''&amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez&amp;lt;br&amp;gt;&lt;br /&gt;
Jack Macdonald&amp;lt;br&amp;gt;&lt;br /&gt;
Andrew Hirasawa&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repository ==&lt;br /&gt;
[https://github.com/salmonandrew/expertiza GitHub Repo]&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135648</id>
		<title>CSC/ECE 517 Fall 2020 - E2071. Improve assessment360 controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135648"/>
		<updated>2020-10-20T01:23:40Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: /* How to run the test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of E2071. Improve assessment360 controller.&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The Expertiza project is software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
As an instructor, you are able to view tables with information on student performance across the various courses they are taking and their assignments. Currently, these tables always show the same information and you are not able to specify if you only want to see certain data. Furthermore, the source code has some variables names that are not clear to what their purpose is in the code.&lt;br /&gt;
===To fix the problem:===&lt;br /&gt;
1.There should be a dialog that appears before navigating to the pages where the table views are that contain a list of checkboxes to allow the user to choose which columns they would like to see.&lt;br /&gt;
====Course Grade Summary====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Instructor Assigned Scores&lt;br /&gt;
*Peer Grades&lt;br /&gt;
*Topics&lt;br /&gt;
====View Aggregated Teammates and Meta Reviews====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Teammate Review Scores&lt;br /&gt;
*Meta Review Scores&lt;br /&gt;
*Number Of Teammates&lt;br /&gt;
&lt;br /&gt;
=='''Solution'''==&lt;br /&gt;
&lt;br /&gt;
===1.Modify View===&lt;br /&gt;
File: app/views/tree_display/_dialog.html.erb&lt;br /&gt;
&lt;br /&gt;
This file is a ruby view partial that contains the html for the checkbox dialogs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog_course_summary&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/course_student_grade_summary', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('InstructorAssignedScores', &amp;quot;Instuctor Assigned Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'InstructorAssignedScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('PeerGrades', &amp;quot;Peer Grades&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'PeerGrades'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('Topics', &amp;quot;Topics&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'Topics'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag('course_id', '', :id =&amp;gt; 'course_summary_course_id')%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeCourseSummaryDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/all_students_all_reviews', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('TeammateReviewScores', &amp;quot;Teammate Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'TeammateReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('MetaReviewScores', &amp;quot;Meta-Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'MetaReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('NumberOfTeammates', &amp;quot;Number Of Teammates&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'NumberOfTeammates'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag 'course_id'%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/assets/javascripts/tree_display.jsx&lt;br /&gt;
&lt;br /&gt;
Added functions to toggle dialog.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  if (document.getElementById('closeDialog')) {&lt;br /&gt;
    document.getElementById('closeDialog').onclick = () =&amp;gt; {jQuery('#dialog').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
  if (document.getElementById('closeCourseSummaryDialog')) {&lt;br /&gt;
    document.getElementById('closeCourseSummaryDialog').onclick = () =&amp;gt; {jQuery('#dialog_course_summary').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   toggleModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
   toggleCourseSummaryModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog_course_summary&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_summary_course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Added buttons to replace links that trigged dialog popups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View grade summary by student&amp;quot; onClick={this.toggleCourseSummaryModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;img src=&amp;quot;/assets/tree_view/360-dashboard-24.png&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View aggregated teammate &amp;amp; meta reviews&amp;quot; onClick={this.toggleModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;span style={{&amp;quot;fontSize&amp;quot;: &amp;quot;22px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} className=&amp;quot;glyphicon glyphicon-list-alt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/views/assessment360/all_students_all_reviews.html.erb, app/views/assessment360/course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
Added conditionals to show selected columns for the html tables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;% total_meta_review_count = @overall_meta_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_meta_review_grade / total_meta_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_grade = @overall_teammate_review_grades.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_count = @overall_teammate_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_teammate_review_grade / total_teammate_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.Modify Controller===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added Variables to check if corresponding columns should be shown.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    fields = params[:fields]&lt;br /&gt;
    @show_meta_reviews = fields.include? 'MetaReviewScores'&lt;br /&gt;
    @show_teammate_reviews = fields.include? 'TeammateReviewScores'&lt;br /&gt;
    @show_teammate_count = fields.include? 'NumberOfTeammates'&lt;br /&gt;
    @colspan_count = 2&lt;br /&gt;
    if !@show_teammate_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
    if !@show_meta_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.'Updated Variable Names===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Renamed @teamed_count to @total_unique_teammates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  @total_unique_teammates = {}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Modify course_student_grade_summary ====&lt;br /&gt;
&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added ability to calculate average peer review score for each student in a course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   @average_peer_review_score = {}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
        next if peer_review_score.nil? &lt;br /&gt;
        next if peer_review_score[:total_score].nil?&lt;br /&gt;
        @average_peer_review_score[cp.id] += peer_review_score[:total_score].round(2)&lt;br /&gt;
      end&lt;br /&gt;
      if @assignments.count &amp;gt; 0&lt;br /&gt;
        @average_peer_review_score[cp.id] = (@average_peer_review_score[cp.id] / @assignments.count()).round(2)&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Result'''==&lt;br /&gt;
&lt;br /&gt;
Before navigating to aggregated teammate and meta reviews, a dialog shows to allow the user select which columns they would like to see.&lt;br /&gt;
&lt;br /&gt;
[[File:Aggregated_teammate_meta_reviews.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Similarly, before navigating to course grade summary, another dialog shows to allow the user select their columns.&lt;br /&gt;
&lt;br /&gt;
[[File:Course_grade_summary.png]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
There was an existing test case for the assesment360 controller. We have added the test scenarios for our implementation of the average_peer_review_grades and all_students_all_reviews_all_grades. We tested url parameters as well as the average score pertaining the peer review of a student. &lt;br /&gt;
&lt;br /&gt;
=== How to run the test ===&lt;br /&gt;
&lt;br /&gt;
Following steps needs to be performed to test this code:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. &amp;lt;br&amp;gt;cd expertiza &amp;lt;/br&amp;gt;&lt;br /&gt;
2. rspec spec/controllers/assessment360_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Project Mentor:'''&lt;br /&gt;
&amp;lt;br&amp;gt;Dr. Gehringer&lt;br /&gt;
&lt;br /&gt;
'''Project Members:'''&amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez&amp;lt;br&amp;gt;&lt;br /&gt;
Jack Macdonald&amp;lt;br&amp;gt;&lt;br /&gt;
Andrew Hirasawa&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repository ==&lt;br /&gt;
[https://github.com/salmonandrew/expertiza GitHub Repo]&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135647</id>
		<title>CSC/ECE 517 Fall 2020 - E2071. Improve assessment360 controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135647"/>
		<updated>2020-10-20T01:23:11Z</updated>

		<summary type="html">&lt;p&gt;Jasanch3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of E2071. Improve assessment360 controller.&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The Expertiza project is software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
As an instructor, you are able to view tables with information on student performance across the various courses they are taking and their assignments. Currently, these tables always show the same information and you are not able to specify if you only want to see certain data. Furthermore, the source code has some variables names that are not clear to what their purpose is in the code.&lt;br /&gt;
===To fix the problem:===&lt;br /&gt;
1.There should be a dialog that appears before navigating to the pages where the table views are that contain a list of checkboxes to allow the user to choose which columns they would like to see.&lt;br /&gt;
====Course Grade Summary====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Instructor Assigned Scores&lt;br /&gt;
*Peer Grades&lt;br /&gt;
*Topics&lt;br /&gt;
====View Aggregated Teammates and Meta Reviews====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Teammate Review Scores&lt;br /&gt;
*Meta Review Scores&lt;br /&gt;
*Number Of Teammates&lt;br /&gt;
&lt;br /&gt;
=='''Solution'''==&lt;br /&gt;
&lt;br /&gt;
===1.Modify View===&lt;br /&gt;
File: app/views/tree_display/_dialog.html.erb&lt;br /&gt;
&lt;br /&gt;
This file is a ruby view partial that contains the html for the checkbox dialogs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog_course_summary&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/course_student_grade_summary', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('InstructorAssignedScores', &amp;quot;Instuctor Assigned Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'InstructorAssignedScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('PeerGrades', &amp;quot;Peer Grades&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'PeerGrades'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('Topics', &amp;quot;Topics&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'Topics'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag('course_id', '', :id =&amp;gt; 'course_summary_course_id')%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeCourseSummaryDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/all_students_all_reviews', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('TeammateReviewScores', &amp;quot;Teammate Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'TeammateReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('MetaReviewScores', &amp;quot;Meta-Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'MetaReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('NumberOfTeammates', &amp;quot;Number Of Teammates&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'NumberOfTeammates'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag 'course_id'%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/assets/javascripts/tree_display.jsx&lt;br /&gt;
&lt;br /&gt;
Added functions to toggle dialog.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  if (document.getElementById('closeDialog')) {&lt;br /&gt;
    document.getElementById('closeDialog').onclick = () =&amp;gt; {jQuery('#dialog').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
  if (document.getElementById('closeCourseSummaryDialog')) {&lt;br /&gt;
    document.getElementById('closeCourseSummaryDialog').onclick = () =&amp;gt; {jQuery('#dialog_course_summary').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   toggleModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
   toggleCourseSummaryModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog_course_summary&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_summary_course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Added buttons to replace links that trigged dialog popups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View grade summary by student&amp;quot; onClick={this.toggleCourseSummaryModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;img src=&amp;quot;/assets/tree_view/360-dashboard-24.png&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View aggregated teammate &amp;amp; meta reviews&amp;quot; onClick={this.toggleModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;span style={{&amp;quot;fontSize&amp;quot;: &amp;quot;22px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} className=&amp;quot;glyphicon glyphicon-list-alt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/views/assessment360/all_students_all_reviews.html.erb, app/views/assessment360/course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
Added conditionals to show selected columns for the html tables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;% total_meta_review_count = @overall_meta_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_meta_review_grade / total_meta_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_grade = @overall_teammate_review_grades.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_count = @overall_teammate_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_teammate_review_grade / total_teammate_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.Modify Controller===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added Variables to check if corresponding columns should be shown.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    fields = params[:fields]&lt;br /&gt;
    @show_meta_reviews = fields.include? 'MetaReviewScores'&lt;br /&gt;
    @show_teammate_reviews = fields.include? 'TeammateReviewScores'&lt;br /&gt;
    @show_teammate_count = fields.include? 'NumberOfTeammates'&lt;br /&gt;
    @colspan_count = 2&lt;br /&gt;
    if !@show_teammate_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
    if !@show_meta_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.'Updated Variable Names===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Renamed @teamed_count to @total_unique_teammates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  @total_unique_teammates = {}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Modify course_student_grade_summary ====&lt;br /&gt;
&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added ability to calculate average peer review score for each student in a course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   @average_peer_review_score = {}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
        next if peer_review_score.nil? &lt;br /&gt;
        next if peer_review_score[:total_score].nil?&lt;br /&gt;
        @average_peer_review_score[cp.id] += peer_review_score[:total_score].round(2)&lt;br /&gt;
      end&lt;br /&gt;
      if @assignments.count &amp;gt; 0&lt;br /&gt;
        @average_peer_review_score[cp.id] = (@average_peer_review_score[cp.id] / @assignments.count()).round(2)&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Result'''==&lt;br /&gt;
&lt;br /&gt;
Before navigating to aggregated teammate and meta reviews, a dialog shows to allow the user select which columns they would like to see.&lt;br /&gt;
&lt;br /&gt;
[[File:Aggregated_teammate_meta_reviews.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Similarly, before navigating to course grade summary, another dialog shows to allow the user select their columns.&lt;br /&gt;
&lt;br /&gt;
[[File:Course_grade_summary.png]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
There was an existing test case for the assesment360 controller. We have added the test scenarios for our implementation of the average_peer_review_grades and all_students_all_reviews_all_grades. We tested url parameters as well as the average score pertaining the peer review of a student. &lt;br /&gt;
&lt;br /&gt;
=== How to run the test ===&lt;br /&gt;
&lt;br /&gt;
Following steps needs to be performed to test this code:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. cd expertiza&lt;br /&gt;
2. rspec spec/controllers/assessment360_controller_spec.rb  &lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Project Mentor:'''&lt;br /&gt;
&amp;lt;br&amp;gt;Dr. Gehringer&lt;br /&gt;
&lt;br /&gt;
'''Project Members:'''&amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez&amp;lt;br&amp;gt;&lt;br /&gt;
Jack Macdonald&amp;lt;br&amp;gt;&lt;br /&gt;
Andrew Hirasawa&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repository ==&lt;br /&gt;
[https://github.com/salmonandrew/expertiza GitHub Repo]&lt;/div&gt;</summary>
		<author><name>Jasanch3</name></author>
	</entry>
</feed>