private static drawDefaultShapes()

in src/visualStrategy/baseVisualStrategy.ts [545:622]


    private static drawDefaultShapes(
        data: MekkoColumnChartData,
        series: Selection<any, any, any, any>,
        layout: IMekkoColumnLayout,
        itemCS: ClassAndSelector,
        hasSelection: boolean): Selection<any, MekkoChartColumnDataPoint, any, any> {

        const dataSelector: (dataPoint: MekkoChartSeries) => any[] =
            (dataPoint: MekkoChartSeries) => dataPoint.data;

        const shapeSelection: Selection<any, any, any, any> = series.selectAll(itemCS.selectorName),
            shapes: Selection<any, MekkoChartColumnDataPoint, any, any> = shapeSelection.data(
                dataSelector,
                (dataPoint: MekkoChartColumnDataPoint) => dataPoint.key);

        let allShapes = shapes
            .enter()
            .append("rect")
            .attr("class", (dataPoint: MekkoChartColumnDataPoint) => {
                return itemCS.className.concat(dataPoint.highlight
                    ? " highlight"
                    : "");
            })
            .merge(shapes)
            .style(
                "fill", (dataPoint: MekkoChartColumnDataPoint) => data.showAllDataPoints
                    ? dataPoint.color
                    : data.defaultDataPointColor
            )
            .style(
                "fill-opacity", (dataPoint: MekkoChartColumnDataPoint) => utils.getFillOpacity(
                    dataPoint.selected,
                    dataPoint.highlight,
                    hasSelection,
                    data.hasHighlights)
            )
            .attr("height", layout.shapeLayout.height)
            .attr("width", layout.shapeLayout.width)
            .attr("x", layout.shapeLayout.x)
            .attr("y", layout.shapeLayout.y);

        shapes
            .exit()
            .remove();

        const borderSelection: Selection<any, any, any, any> = series.selectAll(BaseVisualStrategy.BorderSelector.selectorName),
            borders: Selection<any, MekkoChartColumnDataPoint, any, any> = borderSelection.data(
                dataSelector,
                (dataPoint: MekkoChartColumnDataPoint) => dataPoint.key);

        const borderColor: string = columnChart.BaseColumnChart.getBorderColor(data.borderSettings);

        borders
            .enter()
            .append("rect")
            .classed(BaseVisualStrategy.BorderSelector.className, true)
            .merge(borders)
            .style(
                "fill", borderColor
            )
            .style(
                "fill-opacity", (dataPoint: MekkoChartColumnDataPoint) => {
                    return data.hasHighlights
                        ? utils.DimmedOpacity
                        : utils.DefaultOpacity;
                }
            )
            .attr("height", layout.shapeBorder.height)
            .attr("width", layout.shapeBorder.width)
            .attr("x", layout.shapeBorder.x)
            .attr("y", layout.shapeBorder.y);

        borders
            .exit()
            .remove();

        return allShapes;
    }