UNPKG

reductio

Version:

Reductio: Crossfilter groupings

49 lines (41 loc) 1.05 kB
var median = { add: function (prior, path) { var half; return function (p, v, nf) { if(prior) prior(p, v, nf); half = Math.floor(path(p).valueList.length/2); if(path(p).valueList.length % 2) { path(p).median = path(p).valueList[half]; } else { path(p).median = (path(p).valueList[half-1] + path(p).valueList[half]) / 2.0; } return p; }; }, remove: function (prior, path) { var half; return function (p, v, nf) { if(prior) prior(p, v, nf); half = Math.floor(path(p).valueList.length/2); // Check for undefined. if(path(p).valueList.length === 0) { path(p).median = undefined; return p; } if(path(p).valueList.length === 1 || path(p).valueList.length % 2) { path(p).median = path(p).valueList[half]; } else { path(p).median = (path(p).valueList[half-1] + path(p).valueList[half]) / 2.0; } return p; }; }, initial: function (prior, path) { return function (p) { p = prior(p); path(p).median = undefined; return p; }; } }; export default median;