UNPKG

@swimlane/ngx-charts

Version:

Declarative Charting Framework for Angular2 and beyond!

54 lines 1.62 kB
"use strict"; var d3_1 = require('../d3'); function gridLayout(dims, data, minWidth) { var rows = 1; var xScale = d3_1.default.scaleBand(); var yScale = d3_1.default.scaleBand(); var dataLength = data.length; var width = dims.width; var height = dims.height; if (width > minWidth) { while (width / dataLength < minWidth) { rows += 1; dataLength = Math.ceil(data.length / rows); } } var columns = dataLength; var xDomain = []; var yDomain = []; for (var i = 0; i < rows; i++) { yDomain.push(i); } for (var i = 0; i < columns; i++) { xDomain.push(i); } xScale.domain(xDomain); yScale.domain(yDomain); xScale.rangeRound([0, width], 0.1); yScale.rangeRound([0, height], 0.1); var res = []; var total = getTotal(data); var cardWidth = xScale.bandwidth(); var cardHeight = yScale.bandwidth(); for (var i = 0; i < data.length; i++) { res[i] = {}; res[i].data = { name: data[i].name, value: data[i].value }; res[i].x = xScale(i % columns); res[i].y = yScale(Math.floor(i / columns)); res[i].width = cardWidth; res[i].height = cardHeight; res[i].data.percent = res[i].data.value / total; res[i].data.total = total; } return res; } exports.gridLayout = gridLayout; function getTotal(results) { return results .map(function (d) { return d.value; }) .reduce(function (sum, val) { return sum + val; }, 0); } //# sourceMappingURL=grid-layout.helper.js.map