UNPKG

reductio

Version:

Reductio: Crossfilter groupings

37 lines (36 loc) 972 B
var exception_count = { add: function (a, prior, path) { var i, curr; return function (p, v, nf) { if(prior) prior(p, v, nf); // Only count++ 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).exceptionCount++; } return p; }; }, remove: function (a, prior, path) { var i, curr; return function (p, v, nf) { if(prior) prior(p, v, nf); // Only count-- 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).exceptionCount--; } return p; }; }, initial: function (prior, path) { return function (p) { p = prior(p); path(p).exceptionCount = 0; return p; }; } }; export default exception_count;