public render()

in src/granularity/granularityBase.ts [89:158]


    public render(props: IGranularityRenderProps, isFirst: boolean): Selection<any, any, any, any> {
        const granularitySelection = props.selection
            .append("g")
            .attr("transform", svgManipulation.translate(0, 0));

        // render vetical line
        granularitySelection.append("rect")
            .classed("timelineVertLine", true)
            .attr("x", 0)
            .attr("y", 0)
            .attr("width", pixelConverter.toString(this.vLineWidth))
            .attr("height", pixelConverter.toString(this.vLineHeight));

        // render horizontal line
        if (!isFirst) {
            granularitySelection.append("rect")
                .classed("timelineHorzLine", true)
                .attr("x", pixelConverter.toString(0 - this.hLineXOffset))
                .attr("y", pixelConverter.toString(this.hLineYOffset))
                .attr("height", pixelConverter.toString(this.hLineHeight))
                .attr("width", pixelConverter.toString(this.hLineWidth));
        }

        // render marker
        granularitySelection.append("text")
            .classed("periodSlicerGranularities", true)
            .text(this.granularityProps.marker)
            .attr("x", pixelConverter.toString(0 - this.textLabelXOffset))
            .attr("y", pixelConverter.toString(0 - this.textLabelYOffset))
            .attr("dx", this.textLabelDx);

        // render slider
        if (props.granularSettings.granularity === this.granularityProps.granularityType) {
            this.renderSlider(
                granularitySelection,
                props.granularSettings,
            );
        }

        granularitySelection
            .append("rect")
            .classed("periodSlicerSelectionRect", true)
            .attr("x", pixelConverter.toString(0 - this.clickableRectWidth / this.clickableRectFactor))
            .attr("y", pixelConverter.toString(0 - this.clickableRectWidth / this.clickableRectFactor))
            .attr("width", pixelConverter.toString(this.clickableRectWidth))
            .attr("height", pixelConverter.toString(this.clickableRectHeight))
            .on("click", null)
            .on("click", () => {
                const event: MouseEvent = <MouseEvent>(require("d3").event);

                event.stopPropagation();

                props.selectPeriodCallback(this.granularityProps.granularityType);

                const sliderSelection = selectAll("rect.periodSlicerRect");

                if (sliderSelection) {
                    sliderSelection.remove();
                }

                this.renderSlider(
                    granularitySelection,
                    props.granularSettings,
                );
            });

        granularitySelection.attr("fill", props.granularSettings.scaleColor);

        return granularitySelection;
    }