All of us have seen many innovative ways of searching, filtering and browsing data from a list. While working on this dialogue I encountered this problem. I call it a problem because the list of users may vary anywhere in between 2 (for an entry level executive) to 50,000 for a CTO. And every level of users would use it frequently.
For an entry level executive, the browse model suits the best. Easy to use and prevents errors. However, for a senior executive, the search model would be the best.
PROBLEM
- These are 2 fields that need to be filled up in order to assign a user to a task.
 - Each field can have any number of possible values (I get to choose between 2-10 if I am a junior executive; 50,000 for a CTO!)
 - All users are uniquely identified only by a combination of Area Code and ID.
 - Data selected / entered in a field needs to be validated. Validation queries the database. Narrower the search , less is the system load.
 - This selection has to be made on a Task Assignment dialogue that contains other fields as well.
 
CONSTRAINTS
- Development on Eclipse RCP using native SWT components only. Custom components can be developed only if “really required”.
 - No AJAX (or any similar technology). To populate fields with data, we need to explicitly query the database.
 - Keyboard navigation should not be affected
 - This form/ dialogue is already a pop-up on the main screen
 - Efficiency is crucial, so a Wizard interface is ruled out. (the development teams are not so happy with Wizard interfaces)
 
SOLUTION
- Users know how many users they supervise. So they make a choice between Browse and Search.
 - Fields are dynamically displayed on the dialogue.
 - On selecting ‘Browse’, the user gets a drop-down for Area Codes. On making a selection, the ID dropdown is populated.
 - On selecting ‘Search’, users gets to input Area Code and query database.
 - Data is validated and the IDs populated.
 - Less than 30 IDs, dropdown shows.
More than 30 IDs, need to type 2-3 numbers to allow data to be filtered. 
Why do you miss AJAX? You have rich client! AJAX is to make web app behave like desktop app.
ReplyDelete