stackEnSac = data.reduce((a, b, _, all) => {
let pos = 0;
a.every((f) => {
if (
a
.filter((x) => x.pos === pos)
.every((x) => !(x.start <= b.end && x.end >= b.start))
) {
return false;
} else {
pos++;
return true;
}
});
const draw = d3
.range(1, 10)
.map(
(j) =>
b.start +
(b.end - b.start) * distributor(moustacheDisctibution, moustacheRange)
);
let moustache = {
min: d3.min(draw),
max: d3.max(draw),
median: d3.median(draw),
q1: d3.quantile(draw, 0.25),
q4: d3.quantile(draw, 0.75)
};
return [
...a,
{
...b,
pos,
moustache,
color: d3.interpolateRainbow(Math.random())
}
];
}, [])