Custom Filters

Version 6.6.0
December 16, 2018





Another significant update for nubiDO, v6.6.0 contains a sophisticated filtering mechanism for tasks.   If you've ever used SQL (Structured Query Language) for querying databases, you'll feel right at home with nubiDO's new task query language.   It's simple to learn yet expressive enough for even the most complex queries.   Our new query language has even been incorporated into the global search feature so you can quickly test and execute queries and then save them for future use.   With over 80 query rules, you can create custom lists to match any workflow.

Here's a simple query to try that displays all completed tasks within the last 7 days (including today), sorted in descending order based on the task's completed date:

SELECT TASKS WHERE TASK
   was completed within the last 7 days
SORT BY
   descending completed date

In this example, the query has two commands, the SELECT statement and SORT BY clause.   The SELECT statement determines the filtering criteria for tasks, whereas the SORT BY clause determines the order in which to display tasks.   As an alternative shorthand notation, you may exclude the statement "SELECT TASKS WHERE TASK" from most queries.   So the above query can also be re-written as follows:

was completed within the last 7 days
SORT BY
   descending completed date

The choice of the expressive statement or shorthand notation is completely up to you. Note that the query language is case insensitive so you can capitalize letters or words as you see fit such as "SORT BY" or "sort by" or "Sort By", etc.

Let's try a more complex example that selects tasks that have an inherent importance and then organizes them in a specific order:

SELECT TASKS WHERE TASK
   is active AND
   ( is overdue OR is due today OR has focus OR is high priority OR is within the list "Today" )
ARRANGE BY
   overdue date,
   current date,
   focus,
   future date,
   active
SORT BY
   due date,
   descending priority,
   effort,
   created date

There are a few new concepts in this example, but the first thing that you'll likely notice is the inclusion of the ARRANGE BY clause.   This clause determines the display order for the tasks.   In the results of this query, tasks will be displayed in 5 distinct groups.   The first group will display tasks that are overdue, the second group will display tasks that are due today, the third group will display tasks that have been assigned focus, the fourth group will display tasks that have a due date in the future and finally, the fifth group will display tasks that are active (not completed).   The SORT BY clause then sorts by due date, then descending priority, then effort and then created date for each group.

You'll also notice that only the priority attribute is prefixed with the term "descending".   If you omit this prefix, the sort is automatically defaulted to an ascending order.   However, If you wish to be more verbose and expressive, you may also prefix sort attributes with the term "ascending".

Lastly, you'll notice the compound statement and boolean logical operators (AND, OR) in the SELECT clause.   You can group filter statements together by enclosing them within parenthesis to form a logical block.   So in this example, our filter will have to match all active tasks and at least one of the filters in the group.

Also note that the order of selecting, arranging and sorting is important.   The SELECT statement must be defined first in the query, followed by the optional ARRANGE BY clause and then optionally the SORT BY clause.   If you omit both the ARRANGE BY and SORT BY clauses, nubiDO will automatically arrange and sort tasks based on their relative importance (similar to nubiDO's Auto-Organize algorithm).

As you can see, this combination of filtering, arranging and sorting allows for innumerable combinations of custom filtered lists.   Now that you have a good understanding of the query language, take a look at the following list of rules and try some queries on your own.


Text search


nubiDO can process two types of searches: text searches and advanced queries (using its custom task query language).  For text searches, you may simply enter a text string to find.  nubiDO will generally automatically differentiate between text searches and queries, but sometimes it may mistakenly identify a search string for a query and complain that it can't understand the search term.  In those cases, you will have to be explicit in stating that you're searching for a text string by enclosing the string in double quotes (ex: "my search term").


SELECT statement


name contains "[phrase]"
searches for tasks that contain a specific text phrase within the task name
ex: name contains "organize"

has notes
searches for tasks that contain notes
notes contains "[phrase]"
searches for tasks that contain a specific text phrase within the task notes
ex: notes contains "attention"


has focus
searches for tasks that have been assigned focus


has priority
searches for tasks that have any priority
has high priority or is high priority
searches for tasks that are high priority
has medium priority or is medium priority
searches for tasks that are medium priority
has low priority or is low priority
searches for tasks that are low priority


has effort
searches for tasks that have any effort
has high effort or is high effort
searches for tasks that have high effort
has medium effort or is medium effort
searches for tasks that have medium effort
has low effort or is low effort
searches for tasks that have low effort


has tags
searches for tasks that have one or more tags
has tag "[tag name]"
searches for tasks that have a tag with a specific name
ex: has tag "Phase 1"


is overdue
searches for tasks are overdue
is recurring
searches for tasks that have a recurring due date
has due date
searches for tasks that have a due date
is due on [day]
searches for tasks that are due on a particular day
(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)
ex: is due on Monday
is due [relative day]
or
was due [relative day]
searches for tasks that are due on a date relative to today
(yesterday, today, tomorrow)
ex: was due yesterday
ex: is due today
is due on [date]
searches for tasks that are due on a specific date
ex: is due on 11/25/2018
NOTE: the date format must be of form: MM/DD/YYYY
is due after [date]
searches for tasks that are due after a specific date
ex: is due after 11/25/2018
was due before [date]
searches for tasks that were due before a specific date
ex: was due before 11/25/2018
is due after today
searches for tasks that are due after today's date
was due before today
searches for tasks that were due before today's date
is due in [x] days
searches for tasks that are due in x number of days
ex: is due in 5 days
is due within [x] days
searches for tasks that are due within x days (including today)
ex: is due within 4 days
is due after [x] days
searches for tasks that are due after x days
ex: is due after 5 days
was due [x] days ago
searches for tasks that were due x days ago
ex: was due 7 days ago
was due within the last [x] days
searches for tasks that were due within the last x days (including today)
ex: was due within the last 5 days
was due more than [x] days ago
searches for tasks that were due more than x days ago
ex: was due more than 7 days ago


was created [relative day]
searches for tasks that were created on a date relative to today
(today, yesterday)
ex: was created yesterday
was created on [date]
searches for tasks that were created on a specific date
ex: was created on 11/25/2018
was created after [date]
searches for tasks that were created after a specific date
ex: was created after 10/10/2018
was created before [date]
searches for tasks that were created before a specific date
was created before 11/25/2018
was created within the last [x] days
searches for tasks that were created within the last x days (including today)
ex: was created within the last 7 days
was created more than [x] days ago
searches for tasks that were created more than x days ago
ex: was created more than 7 days ago


was updated [relative day]
searches for tasks that were updated on a date relative to today
(today, yesterday)
ex: was updated yesterday
was updated on [date]
searches for tasks that were updated on a specific date
ex: was updated on 11/25/2018
was updated after [date]
searches for tasks that were updated after a specific date
ex: was updated after 10/10/2018
was updated before [date]
searches for tasks that were updated before a specific date
was updated before 11/25/2018
was updated within the last [x] days
searches for tasks that were updated within the last x days (including today)
ex: was updated within the last 7 days
was updated more than [x] days ago
searches for tasks that were updated more than x days ago
ex: was updated more than 7 days ago


was completed [relative day]
searches for tasks that were completed on a date relative to today
(today, yesterday)
ex: was completed yesterday
was completed on [date]
searches for tasks that were completed on a specific date
ex: was completed on 11/25/2018
was completed after [date]
searches for tasks that were completed after a specific date
ex: was completed after 10/10/2018
was completed before [date]
searches for tasks that were completed before a specific date
was completed before 11/25/2018
was completed within the last [x] days
searches for tasks that were completed within the last x days (including today)
ex: was completed within the last 7 days
was completed more than [x] days ago
searches for tasks that were completed more than x days ago
ex: was completed more than 7 days ago


is active
searches for tasks that are active (not completed)
is complete
searches for tasks that have been completed


is within list "[list name]"
searches for tasks that reside within a specifically named list
ex: is within list "Tutorial"
is within project "[project name]"
searches for tasks that reside within a specifically named project
ex: is within project "My Widget Project"

not (phrase)
negates a specified phrase
ex: not (has tags)


ARRANGE BY clause


overdue date
arranges tasks that are overdue
current date
arranges tasks that are due on the current (today's) date
future date
arranges tasks that are due in the future (after today)


focus
arranges tasks that have focus


active
arranges tasks that are active (not completed)
completed
arranges tasks that have been completed


priority
arranges tasks that have any priority
high priority
arranges tasks that have a high priority
medium priority
arranges tasks that have a medium priority
low priority
arranges tasks that have a low priority


effort
arranges tasks that have any effort
high effort
arranges tasks that are high effort
medium effort
arranges tasks that are medium effort
low effort
arranges tasks that are low effort


tag "[tag name]"
arranges tasks that have a specific tag
ex: tag "Phase 1"


SORT BY clause


name
sorts tasks by name
due date
sorts tasks by due date
priority
sorts tasks by priority
effort
sorts tasks by effort
focus1
sorts tasks that have been assigned focus
created date
sorts tasks by the date they were created
updated date
sorts tasks by the date they were last updated
completed date
sorts tasks by the date they were completed
tag position1
sorts by the relative position of a tag within a task
i.e. if a task has tags "Phase 1", "Phase 2" and "Errand" (in that order), then the tag "Phase 1" has the highest order and "Errand" has the lowest order.
NOTE: SORT BY attributes (with the exception of "tag position" and "focus") may be preceded by an optional sort direction indicator such as ascending or descending. If you omit the sort direction indicator, a default order of ascending will be assumed.

ex: name
ex: ascending name
ex: descending name

1 only supports an ascending sort direction

New York, NY
support@gennubi.com
Follow us on Twitter

Copyright ©2009 - x Gennubi, Inc. All Rights Reserved.