UNPKG

reductio

Version:

Reductio: Crossfilter groupings

37 lines (36 loc) 1.02 kB
var exception_sum = { add: function (a, sum, prior, path) { var i, curr; return function (p, v, nf) { if(prior) prior(p, v, nf); // Only sum if the p.values array doesn't contain a(v) or if it's 0. i = path(p).bisect(path(p).values, a(v), 0, path(p).values.length); curr = path(p).values[i]; if((!curr || curr[0] !== a(v)) || curr[1] === 0) { path(p).exceptionSum = path(p).exceptionSum + sum(v); } return p; }; }, remove: function (a, sum, prior, path) { var i, curr; return function (p, v, nf) { if(prior) prior(p, v, nf); // Only sum if the p.values array contains a(v) value of 1. i = path(p).bisect(path(p).values, a(v), 0, path(p).values.length); curr = path(p).values[i]; if(curr && curr[0] === a(v) && curr[1] === 1) { path(p).exceptionSum = path(p).exceptionSum - sum(v); } return p; }; }, initial: function (prior, path) { return function (p) { p = prior(p); path(p).exceptionSum = 0; return p; }; } }; export default exception_sum;