/** * DevExtreme (viz/funnel/tiling.pyramid.js) * Version: 19.1.16 * Build date: Tue Oct 18 2022 * * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ "use strict"; var CENTER = .5; var LEFTCORNER = 0; var RIGHTCORNER = 1; module.exports = { getFigures: function(data, neckWidth, neckHeight) { var height = 0; var y = 0; var x = 0; var offsetX = 0; var halfNeckWidth = neckWidth / 2; var offsetFromCorner = CENTER - halfNeckWidth; var funnelHeight = 1 - neckHeight; var neckLeftCorner = CENTER - halfNeckWidth; var 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(items) { var sum = items.reduce(function(sum, item) { return sum + item.value }, 0); return items.map(function(item) { return item.value / sum }) } };