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