@baruchiro/actual-mcp
Version:
Actual Budget MCP server exposing API functionality
30 lines • 1.17 kB
JavaScript
export class GroupAggregator {
aggregateAndSort(spendingByCategory) {
const spendingByGroup = {};
Object.values(spendingByCategory).forEach((category) => {
if (!spendingByGroup[category.group]) {
spendingByGroup[category.group] = {
name: category.group,
total: 0,
categories: [],
};
}
spendingByGroup[category.group].total += category.total;
spendingByGroup[category.group].categories.push(category);
});
// Sort groups by absolute total (descending)
const sortedGroups = Object.values(spendingByGroup).sort((a, b) => Math.abs(b.total) - Math.abs(a.total));
// Sort categories within each group by absolute total (descending)
sortedGroups.forEach((group) => {
group.categories.sort((a, b) => Math.abs(b.total) - Math.abs(a.total));
});
return sortedGroups;
}
byId(list) {
return list.reduce((acc, item) => {
acc[item.id] = item;
return acc;
}, {});
}
}
//# sourceMappingURL=group-by.js.map