FacetHistogram.prototype.initializeSlices = function()

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