Display task lists of different lengths in same table

I didn’t find a variable columns table trick, so I thought I’d share this one.

I have a bunch of activity categories that have things I may or may not do in a day. I wanted to display them as one table of checkboxes. The idea isn’t ‘do every activity everyday’, but to have some visual representation of was done.

If, somehow, I was 100% of my best self, this is what it would look like:

The categories have varying amount of tasks under each, from 1 task up to 8. (this can change)

---
tags: dailies
---

## Today's Goals

### Primary Goals
- [x] Get Today's Todo List Done

### Todo List
- [x] Item A1
- [x] Item 2b or not
- [x] File clippings alphabetically 


## Everyday Goals

### Morning Routine
- [x] Eat
- [x] Clean Kitchen
- [x] Clean Self
- [x] Pants

### Classes
- [x] Class 1
- [x] Class 1 Project 
- [x] Presentation
- [x] Talking BS for credits

### Work Items
- [x] Magnum Opus 
- [x] TPS 
- [x] Online Project

### Personal Development
- [x] learn
- [x] love
- [x] grow
- [x] tune out
- [x] tune it back in again

### Exercise
- [x] [Walk:: 0]
- [x] [Cardio:: 0]
- [x] [Chin-ups:: 0]
- [x] [Pull-ups:: 0]
- [x] [Push-ups:: 0]
- [x] [Lifting:: 0]

### Creative Item
- [x] Music
- [x] Dance
- [x] Art
- [x] Charcuterie
- [x] Electronics Design
- [x] Mechatronic Build
- [x] Assemble Robot Army
- [x] Take over the world (pending)

### Leisure
- [x] Card/Board Game
- [x] Physical Activity
- [x] Video Game
- [x] Read
- [x] Draw
- [x] Music
- [x] Movie/Show

### Evening Routine
- [x] Eat
- [x] 1 Hour No Screen
- [x] Clean Kitchen
- [x] Clean Workspace
- [x] Clean Self
- [x] De-pants

I came up with the following dataview query. It uses default() to add blanks when columns don’t exist. (Or whatever is going on there.)

Table
    choice(rows.T.checked[0], "✔", "") AS "",
    choice(default(rows.T.checked[1],""), "✔", " ") AS " ",
    choice(default(rows.T.checked[2],""), "✔", " ") AS "  ",
    choice(default(rows.T.checked[3],""), "✔", " ") AS "   ",
    choice(default(rows.T.checked[4],""), "✔", " ") AS "    ",
    choice(default(rows.T.checked[5],""), "✔", " ") AS "     ",
    choice(default(rows.T.checked[6],""), "✔", " ") AS "      ",
    choice(default(rows.T.checked[7],""), "✔", " ") AS "       "
FROM #dailies and  !"_templates"
FLATTEN file.tasks as T
WHERE file.day = date(today)
GROUP BY meta(T.section).subpath AS "Dones Gotten"

The hackish part is the column titles all use strings with different amount of spaces to keep column titles empty. Could also use emoji icons.

In this use case, column names/categories would not work because the first item in each category is completely un-related. As is the second and so on.

Hopefully useful or inspiring.
Cheers!