I have very amount of complex interdependent data, such as products, documents, orders. I need to make expression-builder for selecting and filtering(!) data.

I have some ways to do this

1) I can make plain editor based on SQL language. Simple text field. Nothing else. In order to do filtering I can introduce keyword such as "FILTER" But I suppose that this method is bad UI.

2) I can make 3 columns: data field, condition, value.

Using this user can write these conditions Product.Price > 20 Product.Name = "Salt"

I believe that this method is better than previous, but if I choose this way how can I make filtering?

Is there third method?


I made it like this:

enter image description here

So the users can read the filters like normal sentences, but they don't have to type so much, because everything is a dropdown.

enter image description here


There are two more way to filter the data.

  • Autofilters -- like in Excel or Google Spreadsheet. It requires minimum effort for most filtering tasks and familiar to an average user. Advantages are minimal input and obviousness.
    enter image description here
  • Templates -- most frequent filtering tasks could be called through command buttons as one-click task. It convient for some narrow filtering tasks (i.e. filter today's operations etc.).

Check the answer by Pasha S to the similar question: TreeTable as a flexible condition/filter editor

Mathematical notation is very readable but you will need to figure out good ways to edit conditions. I think on the same problem and tend to use the WorkFlowy’s approach with indenting by Tab and moving items with shortcuts. But it is also possible that I will end up with some kind of text markup.

  • I might be missing something but what does mathematical notation have to do with problem? – Mayo Aug 20 '15 at 18:51
  • It is better for understanding complex logical interrelations. – combdn Aug 21 '15 at 16:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.