Tasks
A list of all your tasks, with optional tag, query and text filters.
Loading…
| Title | Created | Due date | Published | Tags |
|---|---|---|---|---|
| No tasks yet. | ||||
New Task
Edit Task
Loading…
Tags
Tags are used to group and classify your tasks.
Ranked groups
Loading…
| Group | Tag Count |
|---|---|
| No ranked groups yet. | |
Unranked groups
Loading…
| Group | Tag Count |
|---|---|
| No unranked groups yet. | |
Loading…
| Title |
|---|
| No tags yet. |
Loading…
| Title |
|---|
| No tags yet. |
New Tag
Queries
Flexible queries are used to fetch and filter your task data.
Loading…
| Title | Preview | Type | Updated |
|---|---|---|---|
| No queries yet. | |||
New Query
HelpEdit Query
HelpLoading…
Query examples
This system has a free-form text language to describe how to retrieve
data from the tasks table. We call it "SQLish" as it is quite similar to
the SQL database language. There are three parts: SELECT,
WHERE, and GROUP. They do not all need to be used
at the same time.
There are two query types: a filter (produces tasks) and a column (produces a custom set of counts and other data as required).
Filter queries
Some examples now follow. Let's start with a simple filter of not completed:
IS_NULL(completed_at)
(It is valid to precede this command with a WHERE clause, but
if you don't also need a SELECT or a GROUP, it
is not necessary).
Matching specific values is also allowed:
title = 'Visit Japan'
A macro is offered to match on tags:
TAGS CONTAINS 'Today'
One can match any from a tag list too:
TAGS CONTAINS_ANY ['High', 'Urgent']
Both of the above may be inverted:
NOT TAGS CONTAINS 'Today'
NOT TAGS CONTAINS_ANY ['High', 'Urgent']
Next up is a clause to match tasks that were completed today. This uses
the DATE() function to convert a datetime value to a date:
DATE(completed_at) = DATE(NOW())
The AND and OR conjunctions are supported:
NOT TAGS CONTAINS_ANY ['very low', 'low'] AND IS_NULL(completed_at)
Brackets to indicate operator precedence are valid.
Group queries
The simplest query of this type counts the number of non-deleted tasks
belonging to the current user. Note the AS alias is required:
SELECT COUNT('*') AS task_count
Some Visualisations require a count by a group expression. This statement returns a count of items completed per day:
SELECT
COUNT('*') AS completed_count,
DATE(completed_at) AS group_1
GROUP DATE(completed_at)
WHERE NOT IS_NULL(completed_at)
It's worth also consulting the snippets widget in the query editor page for more examples.
Parameters
Some queries need additional information (often referred to as "parameters") before they can run. This makes a query more reusable. Here is an example:
SELECT COUNT('*') AS count_completed
WHERE
TAGS CONTAINS 'Avoidance' AND
DATE(completed_at_local_time) >= PARAM('dateMin')
AND DATE(completed_at_local_time) < PARAM('dateMax')
You can see that there are two named parameters here, denoted by
the PARAM() syntax. The query would be used
by a feature (in this example, a Target Graphs viz), which
in turn would dictate the expected parameter naming.
A parameter can be used in most places where a column can be
used. Currently, it is not supported in TAGS
operations, but that is coming.
Comparison operators
WHERE clauses can use various equality and comparison
operators. The full list is:
>,
<,
>=,
<=,
=,
IS_NULL(column_name),
NOT IS_NULL(column_name).
We also have string test functions: STARTS_WITH(<expr>, <string>),
STRING_CONTAINS(<expr>, <string>) (they don't currently have
NOT equivalents).
Appendix
The task table columns available for general use are:
guid,
title,
description,
completion_summary,
due_date,
published,
completed_at,
completed_at_local_time,
created_at,
created_at_local_time,
updated_at.
A full list of date and datetime related functions:
NOW,
DATE,
WEEK,
MONTH,
YEAR,
DAY,
DAY_OF_WEEK,
ADD_DAYS.
Some general maths operators:
PLUS,
MINUS,
MULTIPLY,
DIVIDE.
Finally, some aggregate functions to be used with a group: COUNT,
MAX,
MIN.
Edit Tag
Loading…
Edit Tag Group
Loading…
Edit Tag Group
Loading…
Visualisations
Visualisations use your queries to render tables and graphs.
Loading…
| Title | Type | Queries | Updated |
|---|---|---|---|
| , , … | |||
| No visualisations yet. | |||
New Visualisation
HelpEdit Visualisation
HelpLoading…
Viz JSON examples
These notes appear here while the UX is being developed.
Daily bar chart:
{
"series": [
{
"guid": "01a02483-0684-7154-89b1-5fa4486739da",
"color": "#1e87f0",
"label": "Created",
"valueField": "created_count"
},
// ... repeat another series here
]
}
Daily net chart:
{
"added": {
"guid": "01a0247b-0668-732d-99f4-d19e286d6d8c",
"valueField": "completed_count"
},
"subtracted": {
"guid": "01a02483-0684-7154-89b1-5fa4486739da",
"valueField": "created_count"
},
"negativeColor": "#d1618f",
"negativeLabel": "Creation surplus",
"positiveColor": "#036b94",
"positiveLabel": "Completion surplus"
}
Basic query task table:
{
"query": {
"guid": "01a02bae-e9d4-716c-9c1a-77bd4dc2c63b",
"params": {
"key": "value"
}
}
}
(Note that the params key is optional. If it is supplied, the keys
supplied in the block must exist in a PARAM() function in the
specified query, otherwise the visualisation will fail when the query is run).
All of these additional keys are optional:
{
"view": {
"hide_unused_columns": true,
"tags": {
"group": "01a00b8c-9c04-73c9-9d0f-a5fed2ad8be3"
}
},
"order": {
"kind": "column",
"limit": 8,
"params": {
"column": "created_at"
},
"direction": "asc"
},
"hydrate": [
"tags"
]
}
Here is a way to order by a ranked tag group:
"order": {
"kind": "tag_group",
"limit": 10,
"params": {
"tag_group_guid": "01a00b8c-9c04-73c9-9d0f-a5fed2ad8be3"
},
"direction": "desc"
},
Dashboards
Dashboards are editable and draggable collections of visualisations.
Loading…
| Title | Mode | Widgets | Actions |
|---|---|---|---|
| View | Edit | |||
| No dashboards yet. | |||
New Dashboard
Edit Dashboard
Loading…
(Edit
|
Heights
Leave a field blank for the default height, or type "auto" to fit the row's content.
)
•
Leave a field blank for the default height, or type "auto" to fit the row's content.
Loading…
This dashboard has widgets outside its bounds and needs repair.
Tidy-up
Keep your workspace tidy by finding and archiving things you don't need.
Loading…
-
Title Created No unused tags. -
Title Created No unused queries. -
Title Created No unused visualisations.
Move Tasks
BetaLoading…
Profile
Loading…
Component Library
Unlisted test bed for reusable frontend components - not linked from
navigation, reach it by typing #components-library into the
address bar.
Query-column picker
Button reads "Unset" until a query and one of its columns are chosen.
Always offers group queries - see shared/query-column-picker.js.
Two independent instances below, to show they don't share state.
Last reported value:
Last reported value:
Datetime picker with timezone
The button uses the browser's locale for the datetime and shows the
selected timezone in brackets. Changing the timezone leaves the wall-clock
time unchanged until Set is pressed.
Last reported value:
Last reported value:
Task picker
Button reads "Unset" until a task is found by partial title and
chosen - see shared/task-picker.js. Searches active
tasks via the /tasks/search endpoint.
Last reported value:
Last reported value:
Login form
The login screen's form - see auth/login-form.js. Any
valid account will work here.
Last reported user:
Viz: Target Graphs
Here are some examples of Target Graphs and Simple Target Graphs (they share a renderer). First up is the Symbol tile style, with a 2 task target:
Now a Number tile style, which clamps success to the same as before, but shows the unclamped number:
Here's another Number tile style, this time with a fixed date, a length of 6 months, with the current time mocked to +3 months in: