Files

79 lines
3.2 KiB
Plaintext

filters:
and:
- file.hasProperty("pomodoros")
- list(note["pomodoros"]).filter(value.startTime).isEmpty() == false
formulas:
pomodoroDate: if(note["pomodoros"], list(note["pomodoros"]).filter(value.startTime).map(date(value.startTime).format("YYYY-MM-DD")).unique().join(", "), file.basename)
pomodoroMonth: if(note["pomodoros"], list(note["pomodoros"]).filter(value.startTime).map(date(value.startTime).format("YYYY-MM")).unique().join(", "), "")
completedPomos: if(note["pomodoros"], list(note["pomodoros"]).filter(value.type == "work" && value.completed == true).length, 0)
attemptedPomos: if(note["pomodoros"], list(note["pomodoros"]).filter(value.type == "work").length, 0)
interruptedPomos: if(note["pomodoros"], list(note["pomodoros"]).filter(value.type == "work" && value.completed == false).length, 0)
focusMinutes: if(note["pomodoros"], list(note["pomodoros"]).filter(value.type == "work" && value.completed == true).map(if(value.plannedDuration && value.plannedDuration > 0, value.plannedDuration, if(value.startTime && value.endTime, ((number(date(value.endTime)) - number(date(value.startTime))) / 60000).round(), 0))).reduce(acc + value, 0).round(), 0)
focusTime: if(formula.focusMinutes >= 60, (formula.focusMinutes / 60).floor() + "h " + (formula.focusMinutes % 60).round() + "m", formula.focusMinutes + "m")
completionRate: if(formula.attemptedPomos > 0, (formula.completedPomos / formula.attemptedPomos * 100).round() + "%", "0%")
shortBreaks: if(note["pomodoros"], list(note["pomodoros"]).filter(value.type == "short-break").length, 0)
longBreaks: if(note["pomodoros"], list(note["pomodoros"]).filter(value.type == "long-break").length, 0)
properties:
formula.pomodoroDate:
displayName: Date
formula.pomodoroMonth:
displayName: Month
formula.completedPomos:
displayName: Completed
formula.attemptedPomos:
displayName: Attempted
formula.interruptedPomos:
displayName: Interrupted
formula.focusMinutes:
displayName: Focus minutes
formula.focusTime:
displayName: Focus time
formula.completionRate:
displayName: Completion
formula.shortBreaks:
displayName: Short breaks
formula.longBreaks:
displayName: Long breaks
views:
- type: table
name: Daily
order:
- formula.pomodoroDate
- formula.completedPomos
- formula.focusTime
- formula.attemptedPomos
- formula.completionRate
- formula.interruptedPomos
- formula.shortBreaks
- formula.longBreaks
- file.name
sort:
- property: formula.pomodoroDate
direction: DESC
- type: table
name: Monthly
groupBy:
property: formula.pomodoroMonth
direction: DESC
order:
- formula.pomodoroDate
- formula.completedPomos
- formula.focusMinutes
- formula.focusTime
- formula.attemptedPomos
- formula.completionRate
- formula.interruptedPomos
- formula.shortBreaks
- formula.longBreaks
- file.name
sort:
- property: formula.pomodoroDate
direction: DESC
summaries:
formula.completedPomos: Sum
formula.focusMinutes: Sum
formula.attemptedPomos: Sum
formula.interruptedPomos: Sum
formula.shortBreaks: Sum
formula.longBreaks: Sum