UNPKG

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
"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;