mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-07-07 20:06:36 +02:00
Bug
- Fixed bug in statistics command that gave zero counts for pending, waiting and recurring tasks. - Made some counting code more efficient.
This commit is contained in:
parent
56b9b23988
commit
60c45b5035
1 changed files with 14 additions and 9 deletions
|
@ -75,9 +75,9 @@ int CmdStatistics::execute (std::string& output)
|
||||||
++undoCount;
|
++undoCount;
|
||||||
|
|
||||||
// Get all the tasks.
|
// Get all the tasks.
|
||||||
|
std::vector <Task> all = context.tdb2.all_tasks ();
|
||||||
std::vector <Task> filtered;
|
std::vector <Task> filtered;
|
||||||
filter (context.tdb2.pending.get_tasks (), filtered);
|
filter (all, filtered);
|
||||||
filter (context.tdb2.completed.get_tasks (), filtered);
|
|
||||||
|
|
||||||
Date now;
|
Date now;
|
||||||
time_t earliest = time (NULL);
|
time_t earliest = time (NULL);
|
||||||
|
@ -99,23 +99,28 @@ int CmdStatistics::execute (std::string& output)
|
||||||
for (task = filtered.begin (); task != filtered.end (); ++task)
|
for (task = filtered.begin (); task != filtered.end (); ++task)
|
||||||
{
|
{
|
||||||
++totalT;
|
++totalT;
|
||||||
if (task->getStatus () == Task::deleted) ++deletedT;
|
|
||||||
if (task->getStatus () == Task::pending) ++pendingT;
|
Task::status status = task->getStatus ();
|
||||||
if (task->getStatus () == Task::completed) ++completedT;
|
switch (status)
|
||||||
if (task->getStatus () == Task::recurring) ++recurringT;
|
{
|
||||||
if (task->getStatus () == Task::waiting) ++waitingT;
|
case Task::deleted: ++deletedT; break;
|
||||||
|
case Task::pending: ++pendingT; break;
|
||||||
|
case Task::completed: ++completedT; break;
|
||||||
|
case Task::recurring: ++recurringT; break;
|
||||||
|
case Task::waiting: ++waitingT; break;
|
||||||
|
}
|
||||||
|
|
||||||
time_t entry = strtol (task->get ("entry").c_str (), NULL, 10);
|
time_t entry = strtol (task->get ("entry").c_str (), NULL, 10);
|
||||||
if (entry < earliest) earliest = entry;
|
if (entry < earliest) earliest = entry;
|
||||||
if (entry > latest) latest = entry;
|
if (entry > latest) latest = entry;
|
||||||
|
|
||||||
if (task->getStatus () == Task::completed)
|
if (status == Task::completed)
|
||||||
{
|
{
|
||||||
time_t end = strtol (task->get ("end").c_str (), NULL, 10);
|
time_t end = strtol (task->get ("end").c_str (), NULL, 10);
|
||||||
daysPending += (end - entry) / 86400.0;
|
daysPending += (end - entry) / 86400.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (task->getStatus () == Task::pending)
|
if (status == Task::pending)
|
||||||
daysPending += (now.toEpoch () - entry) / 86400.0;
|
daysPending += (now.toEpoch () - entry) / 86400.0;
|
||||||
|
|
||||||
descLength += task->get ("description").length ();
|
descLength += task->get ("description").length ();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue