<?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=Gworah</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=Gworah"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Gworah"/>
	<updated>2026-08-10T01:46:22Z</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_2018-_Project_E1861._Improving_search_facility_in_Expertiza&amp;diff=120593</id>
		<title>CSC/ECE 517 Fall 2018- Project E1861. Improving search facility in Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2018-_Project_E1861._Improving_search_facility_in_Expertiza&amp;diff=120593"/>
		<updated>2018-11-21T02:19:57Z</updated>

		<summary type="html">&lt;p&gt;Gworah: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction:==&lt;br /&gt;
&lt;br /&gt;
The Expertiza application running on Ruby on Rails is used for a variety of purposes by students and faculty members. There are many pages that display information about students, assignments, rubrics and reviews. The information is displayed with attributes like name, ID, due date etc. This project works on improving the search facility by adding search criteria in existing search bars, making it look elegant and adding search bars if not present.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Problem Definition:==&lt;br /&gt;
&lt;br /&gt;
# An instructor or administrator can search for a user by name, user-ID, or other characteristics.&lt;br /&gt;
# An instructor should be able to search for assignments by name, due date, or other characteristics.&lt;br /&gt;
# An instructor should be able to search for rubrics (or other questionnaires) by name, or by the courses or assignments they have been used in.&lt;br /&gt;
## For the instructor, there also needs to be a way to quickly find rubrics (and other questionnaires) that have been used in a single course.  It should be possible to search or click somewhere to bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
## One should also be able to search for questionnaires by words used in questions that belong to the questionnaires.&lt;br /&gt;
#There should be a way to search all reviews of a particular team’s work for particular scores or text strings.  Reviews should be able to be filtered by score, text comment length, reviewer and reviewee.&lt;br /&gt;
#An instructor or administrator should be able to search for all the assignments that a particular user has participated in.&lt;br /&gt;
#If more than one criteria needs to be specified, there should be an 'Advanced Search' button.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Proposed Solution:==&lt;br /&gt;
&lt;br /&gt;
===Search for User:===&lt;br /&gt;
&lt;br /&gt;
In the current system workflow the user is able to search for a particular user by entering a partial or a complete text that matches with the user name. In the proposed workflow searching by name, searching by User ID will also be supported. The user will be able to apply multiple filters at a time and the output of the query will match all filter applied. If no results are found an empty list will be returned.&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the proposed workflow:&lt;br /&gt;
:#Log in to expertiza to view the home page&lt;br /&gt;
:#Go to Manage &amp;gt; Users&lt;br /&gt;
:#Type the name of the user in the search box available below the ‘Users’ tab&lt;br /&gt;
:#In the dropdown list that opens up, click on the ‘Advanced Search’ button if you                                                                                                                                                         wish to apply more filters. &lt;br /&gt;
:#All the entries that match the given criteria will be returned.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Search for Assignments:===&lt;br /&gt;
&lt;br /&gt;
In the current system implementation, searching via the name of the assignment is    supported. In the proposed system, the user will be able to search for an assignment using additional filters such as date created, date updated. The user will be able to apply multiple filters at a time and the output of the query will match all filter applied. If no results are found an empty list will be returned.&lt;br /&gt;
&lt;br /&gt;
To search for an assignment by creation date, the user can enter a time duration within which the assignment was created. All assignments that were created within this date range and which match other filters will be returned. The procedure is same for searching by date of update.&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the proposed workflow:&lt;br /&gt;
:#Log in to expertiza to view the home page&lt;br /&gt;
:#Go to Manage &amp;gt; Assignments&lt;br /&gt;
:#Type the name of the assignment in the search box available below the ‘Assignments’ tab&lt;br /&gt;
:#In the dropdown list that opens up, click on the ‘Advanced Search’ button if you                                                                                                                                                         wish to apply more filters ( date of creation, date updated).&lt;br /&gt;
:#All the entries that match the given criteria will be returned.&lt;br /&gt;
&lt;br /&gt;
===Search for Questionnaires:===&lt;br /&gt;
&lt;br /&gt;
The existing system does not have a search functionality under Questionnaires. The proposed system will implement a search functionality for searching via the name of the questionnaire, the text in the question within a questionnaire, date of creation, date updated.  The user will be able to apply multiple filters at a time and the output of the query will match all filter applied. If no results are found an empty list will be returned.&lt;br /&gt;
&lt;br /&gt;
To search for a course by creation date, the user can enter a time duration within which the course was created. All courses that were created within this date range and which match other filters will be returned. The procedure is same for searching by date of update. The questionnaires will be grouped on the basis of their courses and will be expanded when clicked.&lt;br /&gt;
&lt;br /&gt;
All the above will be available under Manage &amp;gt; Questionnaires.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Search for Reviews:===&lt;br /&gt;
&lt;br /&gt;
The existing system does not have a search functionality under Reviews. The proposed system will implement a search functionality for searching using the attributes like team name, score, reviewer, comment etc.&lt;br /&gt;
&lt;br /&gt;
== Proposed Code Changes ==&lt;br /&gt;
We though about 2 ways of adding the search functionality in the system &lt;br /&gt;
:# Adding a search controller to the system  &lt;br /&gt;
:# Adding search functionality to individual models &lt;br /&gt;
&lt;br /&gt;
===Adding a search controller ===&lt;br /&gt;
If we followed this approach the search query would be like &lt;br /&gt;
*localhost:port/search/user?name=&amp;lt;&amp;gt;&lt;br /&gt;
*localhost:port/search/assignment?name=&amp;lt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would mean that we are thinking of search as a resource on the system which to us looked as a wrong approach&lt;br /&gt;
&lt;br /&gt;
===Adding search functionality to individual models===&lt;br /&gt;
&lt;br /&gt;
If we followed this approach the search query would be like &lt;br /&gt;
:#localhost:port/user/search?name=&amp;lt;&amp;gt;&lt;br /&gt;
:#localhost:port/assignment/search?name=&amp;lt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On discussions we concluded that that the latter was a more RestFul design &lt;br /&gt;
&lt;br /&gt;
We propose to add search methods in each model for corresponding changes. &lt;br /&gt;
&lt;br /&gt;
*User &amp;lt;br&amp;gt;&lt;br /&gt;
Fields for search: name, student_id&lt;br /&gt;
*Functions added&lt;br /&gt;
** search_by_name&lt;br /&gt;
** search_by_student_id&lt;br /&gt;
&lt;br /&gt;
*Assignment&lt;br /&gt;
Fields for search: name, date_creation, date_update&lt;br /&gt;
*Functions added&lt;br /&gt;
** search_by_name&lt;br /&gt;
** search_by_creation_date&lt;br /&gt;
** search_by_updation_date&lt;br /&gt;
&lt;br /&gt;
*Questionnaire&lt;br /&gt;
Fields for search: name, text in title, date of creation, date updated&lt;br /&gt;
*Functions added&lt;br /&gt;
** search_by_name&lt;br /&gt;
** search_by_title&lt;br /&gt;
** search_by_creation_date&lt;br /&gt;
** search_by_updation_date&lt;br /&gt;
&lt;br /&gt;
*Review&lt;br /&gt;
Fields for search: team name, score, reviewer, comment&lt;br /&gt;
*Functions added&lt;br /&gt;
** search_by_team_name&lt;br /&gt;
** search_by_score&lt;br /&gt;
** search_by_reviewer&lt;br /&gt;
** search_by_comment&lt;br /&gt;
&lt;br /&gt;
==ER Diagram:==&lt;br /&gt;
&lt;br /&gt;
The simplified version of ER Diagram depicts relationships between the entity sets that are used in the system. Many-to-many relationships are identified by named-diamonds - teams_users, assignment_questionnaires, which are implemented as tables.&lt;br /&gt;
[[File:ER diagram.png|center]]&lt;br /&gt;
&lt;br /&gt;
Use case diagram for the proposed functionality&lt;br /&gt;
[[File:Usecase search.png|center]]&lt;br /&gt;
==Test Plan: ==&lt;br /&gt;
We plan to two types of testing &lt;br /&gt;
=== UI Tests ===&lt;br /&gt;
====Search for User====&lt;br /&gt;
Setup: create a user with name=&amp;quot;student&amp;quot; and userId=&amp;quot;5000&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Action: Instructor clicks on manage - &amp;gt; users -&amp;gt; in textbox enters name=&amp;quot;student&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
Response: Relevant details of student, name=&amp;quot;student&amp;quot; is displayed&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Action: Instructor clicks on manage - &amp;gt; users -&amp;gt; advanced search-&amp;gt;clicks on checkbox student id and enters &amp;quot;5000&amp;quot; and click &amp;quot;ok&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
Response: Relevant details of student, name=&amp;quot;student&amp;quot; is displayed&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Search for Assignments====&lt;br /&gt;
Setup create an assignment with name=&amp;quot;assignment&amp;quot; and set a due date&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Action : Instructor clicks on Manage -&amp;gt; Assignments, in textbox enter &amp;quot;assignment&amp;quot; in relevant tab&amp;lt;br&amp;gt; &lt;br /&gt;
Response : Relevant assignment should be displayed&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Action : Instructor clicks on Manage -&amp;gt; Assignments-&amp;gt; drop down and apply filters for due date and enter date and click &amp;quot;ok&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
Response : Relevant assignments should be displayed&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Search for Questionnaires====&lt;br /&gt;
Setup : Create a Questionnaire, add questions to it&amp;lt;br&amp;gt;&lt;br /&gt;
Action : Log in as instructor,  Manage -&amp;gt; Questionnaires, in text box enter text&amp;lt;br&amp;gt;&lt;br /&gt;
Response : Questionnaires matching text are shown&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Action : Log in as instructor,  Manage -&amp;gt; Questionnaires, click advanced search and check creation date and enter value&amp;lt;br&amp;gt;&lt;br /&gt;
Response : Questionnaires matching text are shown&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Search for Reviews====&lt;br /&gt;
Setup : Setup review for an assignment, login as student and then add review &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Action : Log in as instructor, Manage -&amp;gt; Assignments, Click on Review Report icon on corresponding assignment&amp;lt;br&amp;gt;&lt;br /&gt;
Result : Review should be seen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Action : Click Advanced search, check review by text  and enter text&amp;lt;br&amp;gt;  &lt;br /&gt;
Result : Matching review should be visible&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
Automated tests in RSpec will be added as we implement the search functionality for each Model &amp;lt;br&amp;gt;&lt;br /&gt;
Most tests added will be functional tests that cover the end to end scenario of various search scenarios described above.&lt;/div&gt;</summary>
		<author><name>Gworah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Usecase_search.png&amp;diff=120589</id>
		<title>File:Usecase search.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Usecase_search.png&amp;diff=120589"/>
		<updated>2018-11-21T02:17:53Z</updated>

		<summary type="html">&lt;p&gt;Gworah: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gworah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Expertiza_use_case.png&amp;diff=120580</id>
		<title>File:Expertiza use case.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Expertiza_use_case.png&amp;diff=120580"/>
		<updated>2018-11-21T02:11:32Z</updated>

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