j-palindrome / obsidian-time-ruler

A drag-and-drop time ruler combining the best of a task list and a calendar view (integrates with Tasks, Full Calendar, and Dataview).
MIT License
208 stars 7 forks source link

Option to exclude the Full Calendar note tasks #117

Open jenpritchard opened 3 months ago

jenpritchard commented 3 months ago

Is your feature request related to a problem? Please describe. I don't consider the Full Calendar note tasks to be actual tasks. Tasks WITHIN them definitely are, but the note itself isn't. My thinking is that why would you want to see a meeting in the Time Ruler, since:

  1. It's not something that could be completed; meetings end, they do not complete
  2. Preparing for a meeting is a task and should be time blocked, but the meeting itself doesn't inherently deserve any sort of status like a task would.
  3. Time Ruler doesn't even appear to use the date or times in the meeting note to block it off, it just defaults to an all day task for today, so it doesn't seem useful in that regard either

So now, in addition to true tasks (which would be defined as something within the body text of a note), it's also got junk tasks showing on my Today section that look like "MeetingDate MeetingTitle #FrontmatterTag" as the text, it's all day (which is interesting since all my meeting notes have allDay=false), and the meeting length is the task duration.

Describe the solution you'd like I'd either like the ability to toggle an include/exclude for these tasks, documentation of a way to filter them in the custom filter, or to just remove this feature since I'm confused as to when this would ever be useful for anyone. To be clear, I don't want to filter out tasks that I've created within the body of the page itself, I just want to rule out the ones that are just meeting titles; it's very likely that during a meeting I would have used my meeting note to jot down some actions to do later -- those are "true" tasks. Therefore, doing something like just filter out any pages in my Meeting Notes folder is not what I want.

Describe alternatives you've considered I've tried:

  1. Creating a custom filter like .where(t=>t.text.startsWith("202")==false) since that is how the task appears in Time Ruler
  2. Adding a tag in the metadata then using a custom filter to look for it.

None of that affects their inclusion; it seems the filters only work on the "actual" tasks and not the meeting notes. I've also experimented with dataview itself, and it never detects the meeting notes as tasks themselves. It's as if Time Ruler first runs the dataview + filter function to get the tasks, and then takes an added step to get any Full Notes meeting notes; that added step isn't affected by the filter.

Is my only option to go in to each meeting note and flip its "Completed" to true? Or delete its frontmatter?

Additional context It'd be amazing if we had the choice to use Tasks queries (instead of only being able to use a Dataview query), since it functions in the manner I'd expect. (Another plus is that it can recognize blocking tasks)

j-palindrome commented 2 months ago

This is something I'd like to think about. "Pages" as they're called in the TR documentation should show up as events with the proper duration.

jenpritchard commented 2 months ago

This is something I'd like to think about. "Pages" as they're called in the TR documentation should show up as events with the proper duration.

I guess my question, though, is...why? I know that this is by design, but I'm not sure how useful it is for people to have it that way in the first place.

j-palindrome commented 2 months ago

The idea is for Time Ruler to be a linked calendar & tasks, and pull in Google Calendar & Day Planner events automatically. I use "Pages" for project planning as well, & larger deadlines. The goal is to make the tool as flexible as possible however so I will think about adding a setting to turn this off.

jenpritchard commented 2 months ago

Ahh, ok, so your workflow is that you sometimes use an entire note to indicate "all the things I mention on this project note is one big task", or as if to say "This is a task, and I'm using the note to have a ton of details about that 1 task"? Interesting concept!

As for me, I use a method I learned in Michael Linenberger's "Total Workday Control" ages ago (which is designed for Outlook tasks, but the concepts can be broadly used). Essentially, when you add a task, you give it a start date if it's ready to work on (i.e., nothing is blocking it, you've got the bandwidth, etc). For instance, I can create a task today (a Sunday) for something like "balance my bank account" since I can do that anytime. However, I have a task called "Call the doctor for an appointment" that can only be done on weekdays, so I've set the start date as tomorrow. Due dates are only used to indicate "drop dead MUST BE BY THIS DATE", and usually it's just left blank. Then, using a combination of category and priority, he explains how to create rules to display the tasks in certain ways (grouping by priority, ordering by start date, colors for overdue, etc. That part is much more up to personal preference). Essentially, during the day you really only want to see the tasks that are ready for you to work on -- all the rest are "hidden" so you can focus on what matters most.

Going back to my previous examples, because I've got the "balance my bank account" task as starting today, I'd want to see it in my view right now, whereas, I I don't want to see "Call the doctor" because I can't do it right now. When I log on tomorrow, however, it'd be there (and if I didn't finish the other one, then they'd both show up).

If I recall correctly, his method doesn't account for task dependencies. I'm not even sure if it's possible in some/all of the Outlook versions. I think his advice would be that when something's start date eventually makes it active, you need to manually postpone the start date.

Anyway...what I've come up with uses a combination of Tasks and an Obsidian canvas to make something kanban-ish. I have a Task query that only shows me things that are in progress, ones that are scheduled, ones that aren't scheduled but are ready to work on if I happen to have the time (i.e., the start date is on or before today), tasks that are blocked (either by the blocked status or by its dependencies not being complete), tasks that are off in the future...it gets a little convoluted :) My ideal workflow would be if I could put my own Task query in Time Ruler for:

  1. only the tasks in Open or In Progress (I also have a custom status called "time block" which is mean to override if something is blocked by a dependency but I still want to see it because I know it'd get unblocked during the day)
  2. that aren't blocked in some way, and
  3. aren't recurring i.e., "here are the ones that are ready for you to time block")

I know that all of that is probably pretty convoluted to most people, but I mention it all to illustrate how customized some of our needs have become and how the best solution is whatever gives us the most flexibility. The tremendous amount of work you've put into Time Ruler is amazing, and it's a real testament to how dedicated you are to your "as flexible as possible" goal. Thank you so much for your thoughtful responses and your hard work!