Red Gregory

View Original

How I Created A Subtask Checklist In Notion

the Checklist Manager

Here is the Notion checklist at a glance. Notice that there is a section for projects at the top with progress bars and a section for tasks below to manage.

Click to expand

Inside every project toggle is a list of subtasks to check off.

Upon the completion of every project, the project and its subtasks will disappear from the view and appear in designated completed views elsewhere.

Connect Tasks and Projects

There are two databases operating in this dashboard. One is for Projects and the other is for Tasks. They are connected via a relation property.

A relation property describes the relationship between one database entry and another, whether that connection be to another database or to itself.

Every relation has a preview window to edit the relation in more detail.

Manage The Task Database

Nine database properties help explain every task in the Task database. The properties will help organize, prioritize, and analyze the progress of completion.

To help prioritize tasks, these are the following properties:

Days To Complete number property is the number of days you believe it will take to complete this task.

Priority select property has three options (Priority 1-3) — priority 3 is the lowest.

Deadline date property is the deadline for the task.

The Task Formulas

Task Alert Formula

Alert formula is an alert system that calls on the deadline, days to complete, and priority tag to determine if the task is Urgent, to Do Next, or to Delegate.

A Breakdown

If the Delegate checkbox is true, it will return "⌲ Delegate."

If the Days To Complete the task equal or are less than the number of days left to the Deadline, and the Priority is high, it will return "❗️Urgent."

If the Days To Complete the task equal or are less than the number of days left to the Deadline, and the Priority is not high, it will return "✈︎ Do Next."

The Formula

if(prop("Done"), "", if(prop("Delegate"), "⌲ Delegate", if(dateBetween(prop("Deadline"), now(), "days") <= prop("Days To Complete") and prop("Priority") == "Priority 1", "❗️Urgent", if(dateBetween(prop("Deadline"), now(), "days") <= prop("Days To Complete") and (prop("Priority") == "Priority 2" or prop("Priority") == "Priority 3"), "✈︎ Do Next", ""))))


Task Status Formula

Status formula is another alert that indicates whether a task is Pending, Complete, or in a Backlog. The backlog simply means the task is far enough in the future to not prioritize yet.

A Breakdown

If the Alert formula is not empty, it will return “... Pending.”

If the Done checkbox is true, it will return “✓ Complete.”

Otherwise, it will return “᮰ Backlog.”

The Formula

if(not empty(prop("Alert")), "... Pending", if(prop("Done"), "✓ Complete", "᮰ Backlog"))

Measuring progress Of Projects

To help determine the progress of projects, these unique properties are used in my Projects database. I collect the progress of all tasks with a Rollup property.

A rollup property aggregates data in your databases based on relations. Essentially, as long as there is a relation property present in your database, a rollup can be used to grab data from the connected database.

If projects is connected to Tasks, I can grab the total percentage of true Done checkboxes from tasks that are connected to a single project.

Using the rollup property to find a percentage, I can then create a visually pleasing progress bar to better track my project’s progress. This formula only requires a rollup named “Progress” like shown above.

Progress Bar Formula

if(not empty("Progress"), slice("■■■■■■■■■■", 0, floor(10 * prop("Progress"))) + slice("□□□□□□□□□□", 0, 10 - floor(10 * prop("Progress"))) + " " + format(floor(100 * prop("Progress"))) + "%", "")

Create A Dynamic Checklist

Lastly, I created a dynamic checklist that displays all Projects and Tasks together to manage in one place. In addition, I created a series of filters to remove all inactive tasks and projects as they are completed.

Step 1: Linked Database

Firstly, I created a linked database (trigger: linked data) and assigned the Source as Tasks database.

Step 2: Group By Project

Then, I grouped the Task database by project. This allows for every task to be nested inside of its corresponding project. The project is now a toggle that can show and hide its tasks.

To create a grouped database view, navigate to the database menu and find Group. This menu option will have an option to choose Group by > Project.

Step 3: Progress Filters

To move finished tasks, and as a result, finished projects out of this linked database upon completion, I used filters to communicate with database properties that associate with progress.

Click to expand

I wanted to keep all checked tasks in view as they are being completed to visualize the progress of a given project, however, completion of all tasks in a project will make all tasks and the project disappear from the view.

Firstly, I created a rollup property in the Tasks database to track the progress of any task’s corresponding project.

Next, I created a filter that looks like this:

This will show Tasks that are only connected to projects without 100% completion OR Tasks with empty projects AND an unchecked Done property.

See this content in the original post

Further Reading

See this gallery in the original post