mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-08-19 00:43:07 +02:00
CmdCustom: Special case sequence override
This commit is contained in:
parent
1ec650edd2
commit
23318103ed
2 changed files with 42 additions and 6 deletions
|
@ -1246,6 +1246,9 @@ This sort order now specifies that there is a listing break between each
|
|||
project. A listing break is simply a blank line, which provides a visual
|
||||
grouping.
|
||||
|
||||
A special sort value of "none" indicates that no sorting is required, and tasks
|
||||
will be presented in the order (if any) in which they are selected.
|
||||
|
||||
.TP
|
||||
.B report.X.filter
|
||||
This adds a filter to the report X so that only tasks matching the filter
|
||||
|
|
|
@ -97,14 +97,47 @@ int CmdCustom::execute (std::string& output)
|
|||
std::vector <Task> filtered;
|
||||
filter.subset (filtered);
|
||||
|
||||
// Sort the tasks.
|
||||
std::vector <int> sequence;
|
||||
for (unsigned int i = 0; i < filtered.size (); ++i)
|
||||
sequence.push_back (i);
|
||||
if (sortOrder.size () &&
|
||||
sortOrder[0] == "none")
|
||||
{
|
||||
// If context.cli2._id_ranges is [4,3,5], yield [1,0,2], which is the sort
|
||||
// order of the filtereed list, which will contain [3,4,5].
|
||||
|
||||
if (sortOrder.size () != 0 &&
|
||||
sortOrder[0] != "none")
|
||||
sort_tasks (filtered, sequence, reportSort);
|
||||
sortOrder.clear ();
|
||||
for (auto& i : context.cli2._id_ranges)
|
||||
{
|
||||
int first = strtol (i.first.c_str (), NULL, 10);
|
||||
int second = strtol (i.second.c_str (), NULL, 10);
|
||||
|
||||
if (first == second)
|
||||
{
|
||||
//sequence.push_back (first - 1);
|
||||
for (unsigned int t = 0; t < filtered.size (); ++t)
|
||||
if (filtered[t].id == first)
|
||||
sequence.push_back (t);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int id = first; id <= second; id++)
|
||||
//sequence.push_back (id - 1);
|
||||
for (unsigned int t = 0; t < filtered.size (); ++t)
|
||||
if (filtered[t].id == id)
|
||||
sequence.push_back (t);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// There is a sortOrder, so sorting will take place, which means the initial
|
||||
// order of sequence is ascending.
|
||||
for (unsigned int i = 0; i < filtered.size (); ++i)
|
||||
sequence.push_back (i);
|
||||
|
||||
// Sort the tasks.
|
||||
if (sortOrder.size ())
|
||||
sort_tasks (filtered, sequence, reportSort);
|
||||
}
|
||||
|
||||
// Configure the view.
|
||||
ViewTask view;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue