private renderGaps()

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();
    }