views:

129

answers:

2

An aggregate type T is made up of 4 strings: t = c1 c2 c3 c4

Each of c1 c2 c3 c4 can have a number of unique values:

  • c1 may have a number of unique values c1.1, c1.2, c1.3, ... c1.n, where 'n' can be fairly high, about 30,000.
  • c2 has far fewer unique values, no more than 5, i.e., n < 5
  • For c3 and c4, n is unpredictable but generally 10 < n < 100.

There are a number of instances of type T, about 200,000 -- all composed of different values of c1 c2 c3 c4.

    t1 = c1.1 c2.1 c3.1 c4.1
    t2 = c1.2 c2.1 c3.2 c4.2
    t3 = c1.3 c2.2 c3.2 c4.3
    ...
    tN = c1.n c2.n c3.n c4.n

The goal is to allow the user to select a single valid instance of type T. Currently the (C# Winforms .NET 2.0) UI shows 4 autocomplete dropdowns with unique values for c1 c2 c3 c4 in each. Once a single valid instance is selected, it's fed to an external system as input. The advantage of the current UI is that it is was quick to come up with (given this is a v1.0 release) and reasonably fast -- Winforms' standard autocomplete dropdown doesn't seem to have a problem with 30k unique items and the user can quickly select a set of four values.

The problem with this is that while it does allow the user to quickly type what they need, the autocomplete does not help users find suitable have no idea whether the combination of values they have chosen matches an existing, valid object. For experienced users this mostly isn't a probem; however new users keep ending up choosing values of c1 c2 c3 c4 which don't actually result in a valid instance of type T.

My question is: is there any other way I could build a UI for entering T, so that users could have the benefit of autocomplete (I really want to avoid picklist-style interfaces, they're much slower for entering data) while at the same time allowing new users to choose valid combinations of values?

Although the original implementation is .NET based, I'd be happy to hear about solutions in any other platforms. My question is really about designing a more efficient UI, not about specific platforms.

Edited to clarify: algorithmic (i.e., non-UI) suggestions are also welcome.

+1  A: 

My answer is not directly related to how to implement the GUI, but you could put all valid combinations t1->tN in a patricia trie and use it to build autocompletion as you type.

pgras
A: 

The quick adaption of you current interface is to constrain all the selection list to only allowable elements. Ie. once the user has entered one item e.g. c1.1 he should be only allow to select elements in the other three inputs that can occur together with c1.1.

In addition to that I would prevent the user from leave a field only half completed and only update the dependent lists when the user has successfully completed on entry. You can implement this using Comboboxes, Textboxes by themselves or texboxes in comination with lists. Listboxes or possibly combo boxes could speed up picking when there are few entries.

You seem to have an algorithm that determines what combinations are allowable the above mentioned patrica trie would be a possibility too

Harald Scheirich