in lib/@uncharted.software/stories-facets/src/components/facet/facetHistogram.js [101:160]
FacetHistogram.prototype.initializeSlices = function(svg, slices) {
var svgWidth = svg.width();
var svgHeight = svg.height();
var minBarWidth = this._minBarWidth;
var maxBarWidth = this._maxBarWidth;
var barPadding = this._barPadding;
var x = 0;
var barsLength = slices.length;
var maxBarsNumber = Math.floor(svgWidth / (minBarWidth + barPadding));
var stackedBarsNumber = Math.ceil(barsLength / maxBarsNumber);
var barsToCreate = Math.ceil(barsLength / stackedBarsNumber);
var barWidth = Math.floor((svgWidth - ((barsToCreate - 1) * barPadding)) / barsToCreate);
barWidth = Math.max(barWidth, minBarWidth);
barWidth = Math.min(barWidth, maxBarWidth);
this._barWidth = barWidth;
var yMax = 0;
for (var i = 0; i < barsLength; i += stackedBarsNumber) {
var metadata = [];
var count = 0;
for (var ii = 0; ii < stackedBarsNumber && (i + ii) < barsLength; ++ii) {
var slice = slices[i + ii];
slice.toLabel = slice.toLabel || slice.label;
count += slice.count;
metadata.push(slice);
}
if(this._scaleFn) {
count = this._scaleFn(count);
}
yMax = Math.max(yMax, count);
var bar = new FacetBar(svg, x, barWidth, 0, svgHeight);
bar.highlighted = false;
bar.metadata = metadata;
this._bars.push(bar);
x += barWidth + barPadding;
}
//Set the bar heights using the computed max y value
for (var j = 0; j < this._bars.length; j++) {
var metaDataArr = this._bars[j].metadata;
var total = 0;
for (var jj = 0; jj < metaDataArr.length; jj++){
total += metaDataArr[jj].count;
}
if(this._scaleFn) {
total = this._scaleFn(total);
}
this._bars[j].height = Math.ceil(svgHeight * (total/yMax));
}
this._totalWidth = x - barPadding;
this._maxBarHeight = yMax;
};