feat: evaluate time tracked recursively
This commit is contained in:
parent
44ea79bc81
commit
026915f870
|
@ -82,7 +82,7 @@ impl Task {
|
|||
}
|
||||
|
||||
/// Total time this task has been active.
|
||||
/// Todo: Recursive
|
||||
/// TODO: Consider caching
|
||||
pub(crate) fn time_tracked(&self) -> u64 {
|
||||
let mut total = 0;
|
||||
let mut start: Option<Timestamp> = None;
|
||||
|
|
|
@ -35,6 +35,13 @@ impl Tasks {
|
|||
tasks.iter().filter_map(|id| self.tasks.get(id)).collect()
|
||||
}
|
||||
|
||||
/// Total time this task and its subtasks have been active
|
||||
fn total_time_tracked(&self, task: &EventId) -> u64 {
|
||||
self.tasks.get(task).map_or(0, |t| {
|
||||
t.time_tracked() + t.children.iter().map(|e| self.total_time_tracked(e)).sum::<u64>()
|
||||
})
|
||||
}
|
||||
|
||||
pub(crate) fn set_filter(&mut self, view: Vec<EventId>) {
|
||||
self.view = view
|
||||
}
|
||||
|
@ -62,6 +69,7 @@ impl Tasks {
|
|||
.iter()
|
||||
.map(|p| match p.as_str() {
|
||||
"path" => self.taskpath(Some(task.event.id)),
|
||||
"ttime" => self.total_time_tracked(&task.event.id).to_string(),
|
||||
prop => task.get(prop).unwrap_or(String::new()),
|
||||
})
|
||||
.collect::<Vec<String>>()
|
||||
|
|
Loading…
Reference in New Issue