devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
42 lines (38 loc) • 1.52 kB
JavaScript
var CENTER = 0.5,
LEFTCORNER = 0,
RIGHTCORNER = 1;
module.exports = {
getFigures: function getFigures(data, neckWidth, neckHeight) {
var height = 0,
y = 0,
x = 0,
offsetX = 0,
halfNeckWidth = neckWidth / 2,
offsetFromCorner = CENTER - halfNeckWidth,
funnelHeight = 1 - neckHeight,
neckLeftCorner = CENTER - halfNeckWidth,
neckRightCorner = CENTER + halfNeckWidth;
return data.map(function (value) {
x = offsetX;
y = height;
height += value;
offsetX = offsetFromCorner * height / funnelHeight;
if (y <= funnelHeight && height <= funnelHeight) {
return [x, y, RIGHTCORNER - x, y, RIGHTCORNER - offsetX, height, LEFTCORNER + offsetX, height];
} else if (y <= funnelHeight && height > funnelHeight) {
return [x, y, RIGHTCORNER - x, y, neckRightCorner, funnelHeight, neckRightCorner, height, neckLeftCorner, height, neckLeftCorner, funnelHeight];
} else {
return [neckLeftCorner, y, neckRightCorner, y, neckRightCorner, height, neckLeftCorner, height];
}
});
},
normalizeValues: function normalizeValues(items) {
var sum = items.reduce(function (sum, item) {
return sum + item.value;
}, 0);
return items.map(function (item) {
return item.value / sum;
});
}
};
;