devextreme
Version:
JavaScript/TypeScript Component Suite for Responsive Web Development
47 lines (46 loc) • 1.77 kB
JavaScript
/**
* DevExtreme (cjs/__internal/viz/funnel/tiling.pyramid.js)
* Version: 25.2.5
* Build date: Fri Feb 20 2026
*
* Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
const CENTER = .5;
const LEFTCORNER = 0;
const RIGHTCORNER = 1;
var _default = exports.default = {
getFigures(data, neckWidth, neckHeight) {
let height = 0;
let y = 0;
let x = 0;
let offsetX = 0;
const halfNeckWidth = neckWidth / 2;
const offsetFromCorner = .5 - halfNeckWidth;
const funnelHeight = 1 - neckHeight;
const neckLeftCorner = .5 - halfNeckWidth;
const neckRightCorner = .5 + halfNeckWidth;
return data.map((value => {
x = offsetX;
y = height;
height += value;
offsetX = offsetFromCorner * height / funnelHeight;
if (y <= funnelHeight && height <= funnelHeight) {
return [x, y, 1 - x, y, 1 - offsetX, height, 0 + offsetX, height]
} else if (y <= funnelHeight && height > funnelHeight) {
return [x, y, 1 - x, y, neckRightCorner, funnelHeight, neckRightCorner, height, neckLeftCorner, height, neckLeftCorner, funnelHeight]
} else {
return [neckLeftCorner, y, neckRightCorner, y, neckRightCorner, height, neckLeftCorner, height]
}
}))
},
normalizeValues(items) {
const sum = items.reduce(((sum, item) => sum + item.value), 0);
return items.map((item => item.value / sum))
}
};