daniel-san
Version:
a node-based budget-projection engine that helps your routines and finances find balance. The program features aggregates, terminal and file-based reporting output, multi-currency conversion capability and multi-frequency accounting triggers, including: o
188 lines (148 loc) • 5.34 kB
JavaScript
"use strict";
var _require = require('./aggregates'),
findAnnualMediansAndModes = _require.findAnnualMediansAndModes,
findAnnualSumsAndAvgs = _require.findAnnualSumsAndAvgs,
findAnnualMinimumsAndMaximums = _require.findAnnualMinimumsAndMaximums,
findAnnualGreatestValues = _require.findAnnualGreatestValues,
findMonthlyMediansAndModes = _require.findMonthlyMediansAndModes,
findMonthlySumsAndAvgs = _require.findMonthlySumsAndAvgs,
findMonthlyMinimumsAndMaximums = _require.findMonthlyMinimumsAndMaximums,
findMonthlyGreatestValues = _require.findMonthlyGreatestValues,
findWeeklyMediansAndModes = _require.findWeeklyMediansAndModes,
findWeeklySumsAndAvgs = _require.findWeeklySumsAndAvgs,
findWeeklyMinimumsAndMaximums = _require.findWeeklyMinimumsAndMaximums,
findWeeklyGreatestValues = _require.findWeeklyGreatestValues,
findDayCycleMediansAndModes = _require.findDayCycleMediansAndModes,
findDayCycleSumsAndAvgs = _require.findDayCycleSumsAndAvgs,
findDayCycleMinimumsAndMaximums = _require.findDayCycleMinimumsAndMaximums,
findDayCycleGreatestValues = _require.findDayCycleGreatestValues,
findDateSetMediansAndModes = _require.findDateSetMediansAndModes,
findDateSetSumsAndAvgs = _require.findDateSetSumsAndAvgs,
findDateSetMinimumsAndMaximums = _require.findDateSetMinimumsAndMaximums,
findDateSetGreatestValues = _require.findDateSetGreatestValues;
var _require2 = require('../constants'),
ANNUALLY = _require2.ANNUALLY,
MONTHLY = _require2.MONTHLY,
WEEKLY = _require2.WEEKLY,
DAY_CYCLES = _require2.DAY_CYCLES,
DATE_SETS = _require2.DATE_SETS,
SUMS_AND_AVERAGES = _require2.SUMS_AND_AVERAGES,
MEDIANS_AND_MODES = _require2.MEDIANS_AND_MODES,
MINIMUMS_AND_MAXIMUMS = _require2.MINIMUMS_AND_MAXIMUMS,
GREATEST_VALUES = _require2.GREATEST_VALUES,
LEAST_VALUES = _require2.LEAST_VALUES;
var selectAnnualAggregate = function selectAnnualAggregate(type) {
switch (type) {
case SUMS_AND_AVERAGES:
return findAnnualSumsAndAvgs;
case MEDIANS_AND_MODES:
return findAnnualMediansAndModes;
case MINIMUMS_AND_MAXIMUMS:
return findAnnualMinimumsAndMaximums;
case GREATEST_VALUES:
return findAnnualGreatestValues;
case LEAST_VALUES:
return function (parameters) {
parameters.reverse = true;
return findAnnualGreatestValues(parameters);
};
default:
break;
}
};
var selectMonthlyAggregate = function selectMonthlyAggregate(type) {
switch (type) {
case SUMS_AND_AVERAGES:
return findMonthlySumsAndAvgs;
case MEDIANS_AND_MODES:
return findMonthlyMediansAndModes;
case MINIMUMS_AND_MAXIMUMS:
return findMonthlyMinimumsAndMaximums;
case GREATEST_VALUES:
return findMonthlyGreatestValues;
case LEAST_VALUES:
return function (parameters) {
parameters.reverse = true;
return findMonthlyGreatestValues(parameters);
};
default:
break;
}
};
var selectWeeklyAggregate = function selectWeeklyAggregate(type) {
switch (type) {
case SUMS_AND_AVERAGES:
return findWeeklySumsAndAvgs;
case MEDIANS_AND_MODES:
return findWeeklyMediansAndModes;
case MINIMUMS_AND_MAXIMUMS:
return findWeeklyMinimumsAndMaximums;
case GREATEST_VALUES:
return findWeeklyGreatestValues;
case LEAST_VALUES:
return function (parameters) {
parameters.reverse = true;
return findWeeklyGreatestValues(parameters);
};
default:
break;
}
};
var selectDayCycleAggregate = function selectDayCycleAggregate(type) {
switch (type) {
case SUMS_AND_AVERAGES:
return findDayCycleSumsAndAvgs;
case MEDIANS_AND_MODES:
return findDayCycleMediansAndModes;
case MINIMUMS_AND_MAXIMUMS:
return findDayCycleMinimumsAndMaximums;
case GREATEST_VALUES:
return findDayCycleGreatestValues;
case LEAST_VALUES:
return function (parameters) {
parameters.reverse = true;
return findDayCycleGreatestValues(parameters);
};
default:
break;
}
};
var selectDateSetAggregate = function selectDateSetAggregate(type) {
switch (type) {
case SUMS_AND_AVERAGES:
return findDateSetSumsAndAvgs;
case MEDIANS_AND_MODES:
return findDateSetMediansAndModes;
case MINIMUMS_AND_MAXIMUMS:
return findDateSetMinimumsAndMaximums;
case GREATEST_VALUES:
return findDateSetGreatestValues;
case LEAST_VALUES:
return function (parameters) {
parameters.reverse = true;
return findDateSetGreatestValues(parameters);
};
default:
break;
}
};
var selectAggregateFrequency = function selectAggregateFrequency(rule) {
switch (rule.frequency) {
case ANNUALLY:
return selectAnnualAggregate(rule.type);
case MONTHLY:
return selectMonthlyAggregate(rule.type);
case WEEKLY:
return selectWeeklyAggregate(rule.type);
case DAY_CYCLES:
return selectDayCycleAggregate(rule.type);
case DATE_SETS:
return selectDateSetAggregate(rule.type);
default:
break;
}
};
var selectAggregateFunction = function selectAggregateFunction(rule) {
return selectAggregateFrequency(rule);
};
module.exports = selectAggregateFunction;