| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import { __assign } from "tslib";
- import { get, isFunction, isNumber, map, maxBy } from '@antv/util';
- import { FUNNEL_CONVERSATION, FUNNEL_MAPPING_VALUE, FUNNEL_PERCENT } from '../constant';
- export var CONVERSION_TAG_NAME = 'CONVERSION_TAG_NAME';
- /**
- * 漏斗图 transform
- * @param geometry
- */
- export function transformData(data, originData, options) {
- var formatData = [];
- var yField = options.yField, maxSize = options.maxSize, minSize = options.minSize;
- var maxYFieldValue = get(maxBy(originData, yField), [yField]);
- var max = isNumber(maxSize) ? maxSize : 1;
- var min = isNumber(minSize) ? minSize : 0;
- // format 数据
- formatData = map(data, function (row, index) {
- var percent = (row[yField] || 0) / maxYFieldValue;
- row[FUNNEL_PERCENT] = percent;
- row[FUNNEL_MAPPING_VALUE] = (max - min) * percent + min;
- // 转化率数据存储前后数据
- row[FUNNEL_CONVERSATION] = [get(data, [index - 1, yField]), row[yField]];
- return row;
- });
- return formatData;
- }
- /**
- * 漏斗图通用转化率组件
- * @param getLineCoordinate 用于获取特定的 line 的位置及配置
- */
- export function conversionTagComponent(getLineCoordinate) {
- return function (params) {
- var chart = params.chart, options = params.options;
- // @ts-ignore
- var conversionTag = options.conversionTag, filteredData = options.filteredData;
- var data = filteredData || chart.getOptions().data;
- if (conversionTag) {
- var formatter_1 = conversionTag.formatter;
- data.forEach(function (obj, index) {
- if (index <= 0 || Number.isNaN(obj[FUNNEL_MAPPING_VALUE]))
- return;
- var lineOption = getLineCoordinate(obj, index, data, {
- top: true,
- name: CONVERSION_TAG_NAME,
- text: {
- content: isFunction(formatter_1) ? formatter_1(obj, data) : formatter_1,
- offsetX: conversionTag.offsetX,
- offsetY: conversionTag.offsetY,
- position: 'end',
- autoRotate: false,
- style: __assign({ textAlign: 'start', textBaseline: 'middle' }, conversionTag.style),
- },
- });
- chart.annotation().line(lineOption);
- });
- }
- return params;
- };
- }
- //# sourceMappingURL=common.js.map
|