in src/visual.ts [1594:1674]
private renderGaps(data: ChartData, duration: number): void {
let gaps: IRect[],
gapsSelection: Selection<any>,
gapsSelectionMerged: Selection<any>,
gapNodeSelection: Selection<any>,
series: Series[] = data.series,
isScalar: boolean = data.isScalar,
xScale: LinearScale = <LinearScale>data.xScale;
gaps = [{
left: -4.5,
top: -5,
height: 10,
width: 3
}, {
left: 1.5,
top: -5,
height: 10,
width: 3
}];
gapsSelection = this.gaps.selectAll(Visual.Gap.selectorName)
.data(series.slice(0, series.length - 1));
gapsSelectionMerged = gapsSelection
.enter()
.append("g")
.merge(gapsSelection);
gapsSelectionMerged.classed(Visual.Gap.className, true);
gapsSelectionMerged
.attr("transform", (seriesElement: Series, index: number) => {
let x: number,
middleOfGap: number = seriesElement.widthOfGap / 2,
categoryValue: number | Date = seriesElement.data[seriesElement.data.length - 1].categoryValue;
if (isScalar) {
x = xScale(middleOfGap + <number>categoryValue);
} else {
x = xScale(<any>(new Date(middleOfGap + ((<Date>categoryValue).getTime()))));
}
return SVGUtil.manipulation.translate(x, 0);
});
gapNodeSelection = gapsSelectionMerged
.selectAll(Visual.GapNode.selectorName)
.data(gaps);
let gapNodeSelectionMerged = gapNodeSelection
.enter()
.append("rect")
.merge(gapNodeSelection);
gapNodeSelectionMerged
.attr(
"x", (gap: IRect) => gap.left
)
.attr(
"y", (gap: IRect) => gap.top,
)
.attr(
"height", (gap: IRect) => gap.height
)
.attr(
"width", (gap: IRect) => gap.width
)
.classed(Visual.GapNode.className, true);
gapNodeSelectionMerged.style("fill", data.settings.xAxis.color);
gapsSelection
.exit()
.remove();
gapNodeSelection
.exit()
.remove();
}