Wednesday, March 22, 2006

Patterns - Drilldown & Search

This fourth post on design patterns this article discusses the search and drilldown patterns. These patterns involve navigation of data sets however unlike paging, sorting and filtering which occur in a single interface these patterns occur over two interfaces which I will define as follows:

  1. Originating interface
    The interface where the user begins the data set navigation process

  2. Results interface
    The interface which is returned by the system as a result of the data submitted in the originating interface.
To help further clear up the distinction between single interface data set navigation and multiple interface data set navigation lets look at an example of each.

Single interface data set navigation - filtering
Filtering call records

  1. System presents screen containing a web module with call details

  2. User enters telephone number into filter input widget and presses filter button

  3. System filters rows in the web module with call details to show only those made to the number specified by the user in step 2
Note: In this scenario the user submits filtering details to the originating interface - in effect staying in the same interface through the navigation process.

Multiple interface data set navigation - searching
Searching call records

  1. System presents a screen containing search criteria input widgets

  2. User selects "call details" in the data type drop down widget, enter telephone number into string input widget and presses search button

  3. System returns the results screen containing web module with call details made to the number specified by the user in step 2
Note: In this scenario the user moves from the originating interface to a results interface. Please note it is common for the originating interface to be included in the results interface to more easily allow users to re-search.



Search
Search is probably the most commonly occurring design pattern in the web today. As such it very familiar to users both novice and expert. Normally the search pattern includes two versions of the originating interface:

Simple Search
A basic string input and submit control set which in many cases is presented in the header or a side panel in the screen when will result in this functionality appearing in all pages of an application.



Advanced Search
This interface is normally populates the activity frame and accessed from a link next to the simple search interface. Advanced search provides more controls to allow the user to refine his/her search thereby reducing the number of returned items in the following results interface.



Note: it is common for the search results interface to embed the content of the originating interface to simply the process of re-searching.



Composer Search support implications
I have give some thought to how search could be supported simply within the current Composer UI. However a simple method of doing so escapes me, I expect a new kind of "Search" Action will need to be added to the Step Library in the Activity screen.

I envision the screen to edit this Search Action will include the ability to define the data sets which will be in scope. Using the standard mapping interface the user would be able to map the output of the Search Action to the results interface.

Drilldown
An elegant way to support drilldown within Composer I believe is a very strong requirement due to this patterns common usage in many web applications.



Currently drilldown functionality can be "faked" within Composer however this "faking" severely reduces the fidelity of the simulation and I feel significantly reduces the value that the tool adds to users. The ability to support n levels of drilldown needs to be supported to fully enable this pattern as within an application the end user maybe required to drill down more than once to find details on any one item.



Composer Drilldown support implications
Similar to Search support, Drilldown does not require a simple change. On some thought I figure that like Search Drilldown could be supported using the same "Search" Action feature however in this case the scope of the search would be set to only one data set. Once again the results could be mapped using the current mapping interface approach.