restore sorting of register reports
This commit is contained in:
parent
c06fad4291
commit
3273be3dcc
2 changed files with 12 additions and 10 deletions
8
item.cc
8
item.cc
|
|
@ -129,6 +129,7 @@ item_t * walk_entries(entries_list::const_iterator begin,
|
||||||
subitem->payee = item->payee;
|
subitem->payee = item->payee;
|
||||||
subitem->account = (*j)->account;
|
subitem->account = (*j)->account;
|
||||||
subitem->value = *(*j);
|
subitem->value = *(*j);
|
||||||
|
item->value += subitem->value;
|
||||||
item->subitems.push_back(subitem);
|
item->subitems.push_back(subitem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -163,19 +164,20 @@ item_t * walk_entries(entries_list::const_iterator begin,
|
||||||
struct cmp_items {
|
struct cmp_items {
|
||||||
const node_t * sort_order;
|
const node_t * sort_order;
|
||||||
|
|
||||||
cmp_items(const node_t * _sort_order) : sort_order(_sort_order) {}
|
cmp_items(const node_t * _sort_order) : sort_order(_sort_order) {
|
||||||
|
assert(sort_order);
|
||||||
|
}
|
||||||
|
|
||||||
bool operator()(const item_t * left, const item_t * right) const {
|
bool operator()(const item_t * left, const item_t * right) const {
|
||||||
assert(left);
|
assert(left);
|
||||||
assert(right);
|
assert(right);
|
||||||
assert(sort_order);
|
|
||||||
return sort_order->compute(left) < sort_order->compute(right);
|
return sort_order->compute(left) < sort_order->compute(right);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
void item_t::sort(const node_t * sort_order)
|
void item_t::sort(const node_t * sort_order)
|
||||||
{
|
{
|
||||||
std::sort(subitems.begin(), subitems.end(), cmp_items(sort_order));
|
std::stable_sort(subitems.begin(), subitems.end(), cmp_items(sort_order));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace ledger
|
} // namespace ledger
|
||||||
|
|
|
||||||
14
main.cc
14
main.cc
|
|
@ -59,13 +59,13 @@ unsigned int show_balances(std::ostream& out,
|
||||||
return headlines;
|
return headlines;
|
||||||
}
|
}
|
||||||
|
|
||||||
void balance_report(std::ostream& out,
|
void balance_report(std::ostream& out,
|
||||||
item_t * top,
|
item_t * top,
|
||||||
const node_t * predicate,
|
const node_t * predicate,
|
||||||
const node_t * sort_order,
|
const node_t * sort_order,
|
||||||
const format_t& format,
|
const format_t& format,
|
||||||
const bool show_expanded,
|
const bool show_expanded,
|
||||||
const bool show_subtotals)
|
const bool show_subtotals)
|
||||||
{
|
{
|
||||||
if (sort_order)
|
if (sort_order)
|
||||||
top->sort(sort_order);
|
top->sort(sort_order);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue