in packages/timebrush/src/TimeBrush.ts [414:463]
private renderValueBarGradients() {
if (this._data) {
const gradients =
this.defs.selectAll("linearGradient")
.data(this._data);
gradients.enter()
.append("linearGradient")
.attr("id", (d, i) => "rect_gradient_" + i)
.attr({
x1: 0,
x2: 0,
y1: 1,
y2: 0,
});
gradients.exit().remove();
gradients
.attr("id", (d, i) => "rect_gradient_" + i);
const stopSel = gradients.selectAll("stop")
.data((d) => {
const stops: any[] = [];
const segments = (d.value >= 0) ? d.valueSegments : d.valueSegments.slice().reverse();
let offset = 0;
segments.forEach((n, i) => {
stops.push({
offset: (offset + (i > 0 ? .0001 : 0)) + "%",
color: n.color,
});
offset += n.value;
if (i < segments.length - 1) {
stops.push({
offset: offset + "%",
color: n.color,
});
}
});
return stops;
});
stopSel.enter().append("stop");
stopSel
.attr({
"offset": (d) => d.offset,
"stop-color": (d) => d.color,
});
stopSel.exit().remove();
}
}