We have a module in an application where users define time periods for different criteria that will be used later to filter some lists.

By default each criterion applies any time. Its validity can be limited by both restricting the time periods where it applies, and adding exclusion time periods. Already-defined periods of applying and excluding can be edited or deleted.

The current interface is as follow:


download bmml source – Wireframes created with Balsamiq Mockups

Users find it difficult to understand the logic of "application" vs "exclusion" time periods, which I totally understand. I can't find a solution to simplify the interface while keeping all the existing possibilities.

What can be done to improve the user's experience here?

  • 2
    what is the smallest and largest units of time here? How small can an exception be to a restriction?
    – Mike M
    Commented Mar 14, 2019 at 13:36
  • 1
    ah okay, see my answer, i would say then you wouldn't have the 'gray' area in between it sounds like.
    – Mike M
    Commented Mar 14, 2019 at 14:24
  • 1
    I can't edited only two characters due to low rep, but the singular of criteria is criterion. Commented Mar 14, 2019 at 17:16
  • 1
    Submitting a comment since you mentioned keeping functionality. Having "application" vs. "exclusion" doesn't seem helpful conceptually or for data entry. For example, in your criteria 3, the user must enter two date ranges (4 dates). So why not just enter the two date ranges for application: 2019/1/1 through 2019-7-14, and 2019-8-15 through 2019-12-31? If you have one range of "application" with 2 periods of "exception", this is the same thing as 3 ranges of "application." Either way, the user still has to enter 6 dates. What does the application vs. exception distinction buy you? Commented Mar 14, 2019 at 17:26
  • 2
    What purpose do these exceptions serve? Why is it preferred to input "Applies from 2019-01-01 to 2019-12-31, except from 2019-07-14 to 2019-08-15" and not simply "Applies from 2019-01-01 to 2019-07-14 and 2019-08-15 to 2019-12-31". Same functionality, but you reduce the available inputs a lot.
    – Polygnome
    Commented Mar 15, 2019 at 0:06

6 Answers 6


Try showing them visually, as they build the restriction and exemption times. With each criterion added, the timeline updates.

I'm not sure I fully understand your use case, but it sounds like users need to clearly see the results of their restrictions and exceptions. I'm focusing a little bit on how to see the outcome as feedback.

Forcing them to read and calculate dates (and proportional allocations) seems to add to their workload. They also might have to look at periods across each criterion as well.

Could you have a visualization that aids in showing them as they add criteria?

A heatmap example:

Github is an example of showing a years worth of data. At a glance, you can see periods of activity.

enter image description here

Don't make them read; provide visuals in tandem.

If there's another state (i'm not too clear on this): that of unrestricted and undeclared time, the heatmap can show these gaps as well.

enter image description here

  • Thanks Mike, that's a great idea indeed. Regarding the possible status of each day, a criteria is either "applied" or not: by default it's applied anytime. If you restrict the application to only one week for example, then all the other dates become "exceptions"... Commented Mar 14, 2019 at 15:32
  • Also, it's probably better to display weekdays horizontally, since that's the most common calendar layout and what users would expect. That GitHub graph always makes me stare at it for a while before I can figure it out.
    – typo
    Commented Mar 16, 2019 at 14:57

I hope I am not misunderstanding your needs, but my recommendation is to do away with the exception/exclusion periods, as they are merely reinstating the default (criterion* applies) in a period of "restriction" (criterion does not apply). Intuitively it might appear simpler to say (as in your 3rd example) "The criterion should apply all year, except for a summer break", but you need two lines to say it, and you might as well say (in the same space, without the mental calisthenics): Applies from 2019-01-01 to 2019-07-13 Applies from 2019-08-16 to 2019-12-31

To allow insertion of an exception more easily, I would recommend a split (or similarly named) button (in addition to edit and delete), which would double the current line and prefill the start of the first and the end of the second line with the start and end of the original line. A color-coded calendar to help visualize this (as suggested in other answers) would certainly be helpful but is not strictly required.

By the way, your example criterion 1 is simply the equivalent of Applies from -infinity to infinity.

*) "Criteria" is the plural of "criterion" (a standard or a trait) or of "criterium" (a bike race).

  • 1
    Instead of a "split" button, if the exceptions are a common use case why not just keep the "add exception" button and calculate the resulting timeframes where the criterion applies? So the user would punch in "applies from 01/01 to 31/12" and "doesn't apply from 13/07 to 16/08" and the application would display the dates as above. Commented Mar 15, 2019 at 14:45

Overlap of rules

I apologize if I misunderstood the ASK, but I feel this is a classic case of AND & OR operations (kind of :P).

  1. Users add a rule (set up time period) i.e Application
  2. Users can add another rule on top of the above rule i.e Exception, which may or may not overlap with the set time period.

Since the application and exception are closely tied to the mental map when creating, instead of giving them separate hierarchies I feel they should have parent/child relationship.

My proposal

I love how Zapier visualizes the AND/OR operations. [![][2]][2] (source: [cachefly.net](https://zapier.cachefly.net/storage/photos/a5d5122fa4ca6e614ec4ff4ba47c43ec.png))

In close to the above design, your interface can look like enter image description here

  • Could you clarify what ASK stands for? Commented Mar 15, 2019 at 18:06
  • Sorry for the confusion, by ASK I mean the problem statement in the question. @LightnessRacesinOrbit
    – tridip1931
    Commented Mar 16, 2019 at 6:54
  • So you mean the "question"? Not sure why this normal word was capitalised and bolded; that made it look like an acronym. Thanks for your answer! Commented Mar 16, 2019 at 13:13

Instead of placing action buttons at the bottom, place "Add" buttons in each section.

From 2019-01-01 to 2019-12-31    edit   delete

+ Add

From 2019-07-14 to 2019-08-15    edit   delete

+ Add
  • 3
    That would simplify things for sure, thanks. Unfortunately that wouldn't help with users being lost with the different periods definition... Commented Mar 14, 2019 at 14:13

Usually simplifying the copy language helps (something like "add valid time range" & "block specific dates".

A second option would be adding colors such as green (for restricted times) and red (for exception times), following the logic:

Green => go, Red =>stop

A third option is to add an icon (+ for add, - for restricting).

Best if you do all three together, this makes sure you cover more users' logics (i.e. graphic-oriented vs readers) Try to think of the user as if you were talking to a kid ;) this always helps me!

  • 2
    This is not accessible. Red-green colour blindness is prevalent (and the meaning of red/green can also differ across cultures) Commented Mar 15, 2019 at 18:07

The problem is that you are presenting the rules, but not the result.

As a litmus test, try to answer the question: is the criterion applied on Mar 23rd?

Instead of:

Applies from 2019-01-01 to 2019-12-31

Except from 2019-07-14 to 2019-08-15

The following display is easier to reason about... especially as exceptions pile up:

Applies from 2019-01-01 to 2019-07-13
Applies from 2019-08-16 to 2019-12-31

It could also be helpful to make this more visual. Calendars would be greatly helpful; especially with clicking to toggle on/off and SHIFT+click or CTRL+click to mass select/unselect.

If space is limited, even with text you could add extra information to help the user:

Applies from 2019-01-01 to 2019-07-13 (x days)
       -- y days later --
Applies from 2019-08-16 to 2019-12-31 (z days)

This order of magnitude check can help the user identifying typos.

Your Answer

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

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