2.1.3. Filtering

This section uses terminology described in the Glossary.

Figure 1 shows the fully expanded "Filter by..." palette. This palette gives the user filtering options for restricting what questions from the database are displayed. Question filtering is done in two places: from the question database and when creating or editing a test. Filtering works the same in both of these cases. To expand the palette or any section within the palette, the user clicks the [+] icon at the top of the palette or section.  To hide any section the user clicks the [-].

"Filter by..." pallet
Figure 2 - Filter by... palette.

Filters are a way for the user to view only a specific set of questions from a question database. Once a filter is applied, the user's view of a question database is automatically updated.  A user can build filters out of three filter object types: Characteristics (eg length), user defined tags, and boolean operators.  These are available under their respective headers in the Filters palette. These primitives are dragged into the a filter box as highlighted below (The Database Panel has a similar filter box.)

"Filter by..." pallet
Figure 2 - Filter by... palette.

Each filter object type is described in detail below.

Characteristics:

Six Characteristics are defined:

To apply a characteristic filter object such as to a filter, the user enters the desire values and drags the filter object into the filter box.  For example, if the user wants to filter out all questions used this year when generating a test, he/she selects "before" in the Last Used characteristic and enter in a date 1 year previous.  He/she then drags the filter object into the filter box on the test generation panel.  The system automatically filters out all questions used after the specified date.

Tags:

Tags are user defined key:value pairs.  The user creates tags to group question together, to create sections or something similar as they see fit.  Tags are used just as characteristics and they can be mixed and matched as the user see fit (see advanced filtering below).  The user created a tag for subject : hardware stacks when creating questions and wants to generate a section of those questions.  Under Tags the user selects subject on the left and hardware stacks on the right which automatically builds the filter object in the box below.  The user then drags the created tag filter object into the test generation filter box, which hides all question not tagged as subject: hardware Stacks.

Tags also support regular expressions.  Suppose the user wants to generate a test the covers several different markup languages such as HTML, UML, and XML.  He/she selects the subject on the left under Tags then types in *ML directly in the Tag Filter object where prompted by "enter regex or select above."  The user then drags the filter object in the test generation filter box.  All questions tagged matching the regular expression are displayed.  Note that both simple, *, ? wildcards and advanced Perl style regular expressions are supported.

 

Booleans

Five boolean filter objects are provided:

These boolean operators are dragged into a filter box just like Characteristic or a Tag objects.  Suppose the user discussed above,  decides  to include both software and hardware stack questions.  Since he has already added a subject:hardware stacks Tag to the filter box, the user drags a OR boolean operator to the filter box.  He/she then drags a subject:software stacks tag into the filter box with the same process as described above.  Note that the same filtering results can be achieved by using regular expressions--the user may choose whichever approach suits him/her best.

Advanced Filtering

Using the above primitive, the user can create complex filters with ease. For example, to view only questions from the courses CPE 129 or CPE 169 and between 5 and 10 minutes in length that have not been used since September 17 2007, the filter would look like "'(' 'Course: CPE 129' 'OR' 'Course: CPE 169' ')' 'AND' 'Length from 5 minutes to 10 minutes' 'AND' 'NOT' 'Last Used after 9/17/207'". To build this filter, the user drags the "(" operator onto the main window, followed by the "Course: CPE 129" tag. The user then drags the following filters in order: "OR", "Course: CPE 169", ")", "AND". The user enters the values "5 minutes" and "10 minutes" into the length characteristic filter before dragging the filter onto the window. When in a complex filter and not the first item in the filter, the "NOT" operator must be preceded by either the "AND" operator or the "OR" operator. This more complicated filter is an example of how the user views a very specific set of questions and will display questions from either CPE 129 or CPE 169, but only the questions from those courses that are between 5 and 10 minutes in length that have not been used since September 17 2007. No other characteristics or tags from the questions are considered when determining what questions the Test Tool program will display.


Prev: question management | Next: test taking | Up: ui overview | Top: index