2

I have a simple app which is quite specific to my work, but generally speaking it allows users to query data for a certain 'ticket' by setting a few parameters using combo boxes/text fields, and then hit a Submit button which fetches results from a database and displays them in a grid.

The data is time-sensitive and is arranged in date order with the most recent data at the top. A feature of the app is to 'zoom in' on a specific time-slice within the data, and so I have created 2 custom time-picker controls for start-time/end-time which when edited, dynamically filters the rows in the grid, so that only the data within the timeslice is shown.

I then thought it would be good to incorporate the time-slice start/end times into the actual database query, so that the query would only return the data within the timeslice, as this would improve query times and loads drastically, but this is causing problems with usability, as the timeslice needs to be updated or reset each time the user wants to refresh the data, or query for a different ticket, otherwise the filter would still apply.

The easy option is to remove the timeslice from the query altogether, and incur the big loading times on each and every refresh of data for a certain ticket.

But I was wondering if anyone has come across a similar problem or if anyone has any ideas for keeping the timeslice filter in the query but making it obvious when it needs to be updated/reset etc.

UPDATE: Bit more background - the data on these 'tickets' is collected in real-time, hence, once the user makes an initial query at time T, they are very likely to want to query the same ticket again at T + 1 and so on at T + N, to ensure they are getting the most up to date data. Here is a scenario to explain my usability problem:

  • At time T, the user queries ticket id: 1 and gets ALL data.
  • They use the timepickers to set a time slice which filters out other data.
  • A couple of minutes later, some event occurs that may affect the status of ticket 1, so the user wants to update their data.
  • Problem The time-slice has been set, and is part of the query, so the user will only see the data they had previously.
  • I need to explain to the user to either manually reset the time-slice, or make the end-time some arbitrary time in the future, so that the query will capture any new rows.

This last point is the problem, its not obvious to the user that they have to reset the time-slice on each new request, also it feels fiddly to have to do this, so I need some kind of visual indicator, to alert them, OR some clever way of detecting that this is merely an update query rather than a load everything query and automatically change the query.

If a user wants to query a ticket with a different id, I can automatically reset the time-slice when the user edits the textbox which sets the id.

3
  • This seems to me more like a technical question - what is the user interface/usability question here? Feb 23, 2011 at 14:02
  • I tried to clarify the usability question above with a scenario
    – cjroebuck
    Feb 23, 2011 at 14:31
  • What's wrong with having the time slice end at the "Present"? That is a reasonable expectation that the user will have. In short, the end time of the time slice is always evaluated for the current request. Any time pickers that don't allow you to pick "Present", "Current", "Now" or whatever you want to call it is where you need to fix the UI. Feb 23, 2011 at 16:49

4 Answers 4

0

One way to do it would be something like google analytics (the calendar widget filters the results) and separate visually the filters related to data from the "time filters". This would work ok for static pages.

You could also provide some live updates:

  1. user sets filters
  2. change time interval
  3. submit query
  4. receive results
  5. display a box with "new data/tickets are available; reload" whenever there is new data between selected end date and current date

Live updates make sense when you get a lot of important updates in a relatively short time.

Hope this helps

2

The "time" you filter for is the time the data is generated?

(i.e. In the following case these solutions would not work: I have a filter set to "all events from yesterday", and as I query, new events are generated with a timestamp of yesterday)

Ideas:

  1. Default filter = "All events after date/time".

  2. 12 new events since your last query. Click here to include

0

It sounds like you have a general idea of how your timeslice behavior should be managed. If you codify that into a set of rules, you can get the same effect as not applying the time slice to the query. From a software engineering perspective, it's always a good idea to provide what is called "windowed queries". Essentially, it means that you aren't asking the database for more than what you can display at any time.

As far as marking the UI that certain filtration rules are in effect, there are a combination of techniques I've used on past projects. They are listed below.

Breadcrumb Filter: It's very effective to have a breadcrumb trail that displays the filtration rules in effect at any given time. It's also important for this type of approach to provide a cancel button (like an 'x' icon) to remove that filter criteria but preserve the rest. Example: Newegg.com (Link is to a query for a specific type of drive, play with the breadcrumb trail).

Scope Panel: Similar in spirit to the breadcrumb filter, but different in presentation. Sometimes you have certain rules or a hierarchy to some elements in your scope and you want people to control different parts of the query separately. I don't know of any live examples on the net, so I'll have to describe it. My app allowed people to filter messages by time, location, and topic. We needed the users to be able to control the three aspects of the filter separately, and both location and topic had a hierarchy. The breadcrumb filter didn't work for this because it wasn't clear to the user what would happen if we clicked on a link higher in the hierarchy for the location/topic. By presenting them as three independent filter criteria, it was clear to the user what they were seeing and how to change it. For the hierarchical information, we kept the breadcrumb idea for that line. Time was a separate line, and we had four options: last week, last month, last year, between x and y.

Highlighting Scope: If there is a particular part of the query you want to draw attention to, it helps to distinguish it visually from the rest. You'll want to use a combination of color and graphic element, for example adding a colored glow to the displayed criteria. Red is by far the most noticeable color, but it is also associated with errors, stop, and general problems. You might want to choose a different color than that (like blue, or a complimentary color to the background).

0

You may want to consider a "notification" icon that indicates that the current timeslice does not include the most recent data. Something similar to when you log into face book and see a little red rounded square with a number indicating how many new notifications you have received since last visit. You can also consider the idea of "rolling time slices", something like "last 24 hours, last 48 hours, ect".

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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