Skip to content

Instantly share code, notes, and snippets.

@eatgrass
Created November 24, 2023 14:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eatgrass/06ced928b4fc3aae966780e0ba72a656 to your computer and use it in GitHub Desktop.
Save eatgrass/06ced928b4fc3aae966780e0ba72a656 to your computer and use it in GitHub Desktop.
Obsidian Pomodoros Task Tracking

Task Summary View

const pages = dv.pages()
const emoji = 'πŸ…'
dv.table(
["Task", "Pomodoros", "Time"],
pages.file.tasks
.filter(task => task.children.some(child=> child[emoji]))
.map(task=> {
let p = task.children.filter(child=>child[emoji]).map(child=> child[emoji])
let sum = p.reduce((t, a) => t.plus(a), Duration.fromObject({})).toFormat('h \'hours,\' m \'minutes\'')
let pomodoros = p.length > 5 ? `${emoji}(${p.length})` : `${emoji.repeat(p.length)}`
return [task.text, pomodoros, sum]
}))

Logs View

const pages = dv.pages()
const emoji = 'πŸ…'
dv.table([' ','Task','Span', 'From', 'To'],
pages.file.tasks
.flatMap(task => task.children.filter(child=>child[emoji]).map(child=> {
    child.parenttask = task.text
    return child
}))
.sort(list => list.from, 'asc')
.map(list=> {
    const parent = JSON.stringify(list)
    return [emoji, list.parenttask,list[emoji].toFormat('h \'hours,\' m \'minutes\''), list.from, list.to]
}))

Tasks

  • Task 1
    • [πŸ…:: 35m] (from:: 2023-11-24 13:00) - (to:: 2023-11-24 13:35)
    • [πŸ…:: 35m] (from:: 2023-11-24 16:10) - (to:: 2023-11-24 16:45)
  • Task 2
    • [πŸ…:: 25m] (from:: 2023-11-24 14:00) - (to:: 2023-11-24 14:25)
    • [πŸ…:: 25m] (from:: 2023-11-24 15:00) - (to:: 2023-11-24 15:25)

add bullet under your task after you've finished a tomodoro

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment