mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-06-26 10:54:26 +02:00
TW-296
- TW-296 urgency of blocked task should affect urgency of blocking task Signed-off-by: Paul Beckingham <paul@beckingham.net>
This commit is contained in:
parent
0c1fa8b20e
commit
7548ce662a
5 changed files with 40 additions and 0 deletions
|
@ -146,6 +146,7 @@ std::string Config::_defaults =
|
|||
"urgency.tags.coefficient=1.0 # Urgency coefficient for tags\n"
|
||||
"urgency.project.coefficient=1.0 # Urgency coefficient for projects\n"
|
||||
"urgency.blocked.coefficient=-5.0 # Urgency coefficient for blocked tasks\n"
|
||||
"urgency.inherit.coefficient=0.0 # Urgency coefficient for blocked tasks inheriting from blocking tasks\n"
|
||||
"urgency.waiting.coefficient=-3.0 # Urgency coefficient for waiting status\n"
|
||||
"urgency.age.max=365 # Maximum age in days\n"
|
||||
"\n"
|
||||
|
|
|
@ -640,6 +640,7 @@ void Context::staticInitialization ()
|
|||
Task::urgencyScheduledCoefficient = config.getReal ("urgency.scheduled.coefficient");
|
||||
Task::urgencyWaitingCoefficient = config.getReal ("urgency.waiting.coefficient");
|
||||
Task::urgencyBlockedCoefficient = config.getReal ("urgency.blocked.coefficient");
|
||||
Task::urgencyInheritCoefficient = config.getReal ("urgency.inherit.coefficient");
|
||||
Task::urgencyAnnotationsCoefficient = config.getReal ("urgency.annotations.coefficient");
|
||||
Task::urgencyTagsCoefficient = config.getReal ("urgency.tags.coefficient");
|
||||
Task::urgencyNextCoefficient = config.getReal ("urgency.next.coefficient");
|
||||
|
|
35
src/Task.cpp
35
src/Task.cpp
|
@ -79,6 +79,7 @@ float Task::urgencyActiveCoefficient = 0.0;
|
|||
float Task::urgencyScheduledCoefficient = 0.0;
|
||||
float Task::urgencyWaitingCoefficient = 0.0;
|
||||
float Task::urgencyBlockedCoefficient = 0.0;
|
||||
float Task::urgencyInheritCoefficient = 0.0;
|
||||
float Task::urgencyAnnotationsCoefficient = 0.0;
|
||||
float Task::urgencyTagsCoefficient = 0.0;
|
||||
float Task::urgencyNextCoefficient = 0.0;
|
||||
|
@ -1721,6 +1722,7 @@ float Task::urgency_c () const
|
|||
value += fabsf (Task::urgencyDueCoefficient) > epsilon ? (urgency_due () * Task::urgencyDueCoefficient) : 0.0;
|
||||
value += fabsf (Task::urgencyBlockingCoefficient) > epsilon ? (urgency_blocking () * Task::urgencyBlockingCoefficient) : 0.0;
|
||||
value += fabsf (Task::urgencyAgeCoefficient) > epsilon ? (urgency_age () * Task::urgencyAgeCoefficient) : 0.0;
|
||||
value += fabsf (Task::urgencyInheritCoefficient) > epsilon ? (urgency_inherit () * Task::urgencyInheritCoefficient) : 0.0;
|
||||
|
||||
// Tag- and project-specific coefficients.
|
||||
std::map <std::string, float>::iterator var;
|
||||
|
@ -1792,6 +1794,39 @@ float Task::urgency_priority () const
|
|||
return 0.0;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
float Task::urgency_inherit () const
|
||||
{
|
||||
if (!is_blocking)
|
||||
return 0.0;
|
||||
|
||||
std::vector <Task> blocked;
|
||||
std::vector <Task>::const_iterator it;
|
||||
float v = 0.0;
|
||||
|
||||
// Calling dependencyGetBlocked is rather expensive.
|
||||
// It is called recursively for each dependency in the chain here.
|
||||
// Paul is going to kill me. :)
|
||||
dependencyGetBlocked (*this, blocked);
|
||||
for (it = blocked.begin (); it != blocked.end (); ++it)
|
||||
{
|
||||
// urgency_blocked, _blocking, _project and _tags left out.
|
||||
v += it->urgency_active();
|
||||
v += it->urgency_age();
|
||||
v += it->urgency_annotations();
|
||||
v += it->urgency_due();
|
||||
v += it->urgency_next();
|
||||
v += it->urgency_priority();
|
||||
v += it->urgency_scheduled();
|
||||
v += it->urgency_waiting();
|
||||
|
||||
// Inherit from all parent tasks in the dependency chain recursively.
|
||||
v += it->urgency_inherit();
|
||||
}
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
float Task::urgency_project () const
|
||||
{
|
||||
|
|
|
@ -49,6 +49,7 @@ public:
|
|||
static float urgencyScheduledCoefficient;
|
||||
static float urgencyWaitingCoefficient;
|
||||
static float urgencyBlockedCoefficient;
|
||||
static float urgencyInheritCoefficient;
|
||||
static float urgencyAnnotationsCoefficient;
|
||||
static float urgencyTagsCoefficient;
|
||||
static float urgencyNextCoefficient;
|
||||
|
@ -171,6 +172,7 @@ public:
|
|||
float urgency_scheduled () const;
|
||||
float urgency_waiting () const;
|
||||
float urgency_blocked () const;
|
||||
float urgency_inherit () const;
|
||||
float urgency_annotations () const;
|
||||
float urgency_tags () const;
|
||||
float urgency_next () const;
|
||||
|
|
|
@ -192,6 +192,7 @@ int CmdShow::execute (std::string& output)
|
|||
" urgency.annotations.coefficient"
|
||||
" urgency.blocked.coefficient"
|
||||
" urgency.blocking.coefficient"
|
||||
" urgency.inherit.coefficient"
|
||||
" urgency.due.coefficient"
|
||||
" urgency.next.coefficient"
|
||||
" urgency.priority.coefficient"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue