UNPKG

reductio

Version:

Reductio: Crossfilter groupings

45 lines (43 loc) 1.34 kB
import crossfilter from 'crossfilter2'; var histogram = { add: function (a, prior, path) { var bisect = crossfilter.bisect.by(function(d) { return d; }).left; var bisectHisto = crossfilter.bisect.by(function(d) { return d.x; }).right; var curr; return function (p, v, nf) { if(prior) prior(p, v, nf); curr = path(p).histogram[bisectHisto(path(p).histogram, a(v), 0, path(p).histogram.length) - 1]; curr.y++; curr.splice(bisect(curr, a(v), 0, curr.length), 0, a(v)); return p; }; }, remove: function (a, prior, path) { var bisect = crossfilter.bisect.by(function(d) { return d; }).left; var bisectHisto = crossfilter.bisect.by(function(d) { return d.x; }).right; var curr; return function (p, v, nf) { if(prior) prior(p, v, nf); curr = path(p).histogram[bisectHisto(path(p).histogram, a(v), 0, path(p).histogram.length) - 1]; curr.y--; curr.splice(bisect(curr, a(v), 0, curr.length), 1); return p; }; }, initial: function (thresholds, prior, path) { return function (p) { p = prior(p); path(p).histogram = []; var arr = []; for(var i = 1; i < thresholds.length; i++) { arr = []; arr.x = thresholds[i - 1]; arr.dx = (thresholds[i] - thresholds[i - 1]); arr.y = 0; path(p).histogram.push(arr); } return p; }; } }; export default histogram;