{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/plots/funnel/geometries/common.ts"],"names":[],"mappings":"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","sourcesContent":["import { Types } from '@antv/g2';\nimport { get, isFunction, isNumber, map, maxBy } from '@antv/util';\nimport { Params } from '../../../core/adaptor';\nimport { Data, Datum } from '../../../types/common';\nimport { FUNNEL_CONVERSATION, FUNNEL_MAPPING_VALUE, FUNNEL_PERCENT } from '../constant';\nimport { FunnelOptions } from '../types';\n\nexport const CONVERSION_TAG_NAME = 'CONVERSION_TAG_NAME';\n\n/**\n * 漏斗图 transform\n * @param geometry\n */\nexport function transformData(\n data: FunnelOptions['data'],\n originData: FunnelOptions['data'],\n options: Pick\n): FunnelOptions['data'] {\n let formatData = [];\n const { yField, maxSize, minSize } = options;\n const maxYFieldValue = get(maxBy(originData, yField), [yField]);\n const max = isNumber(maxSize) ? maxSize : 1;\n const min = isNumber(minSize) ? minSize : 0;\n\n // format 数据\n formatData = map(data, (row, index) => {\n const percent = (row[yField] || 0) / maxYFieldValue;\n row[FUNNEL_PERCENT] = percent;\n row[FUNNEL_MAPPING_VALUE] = (max - min) * percent + min;\n // 转化率数据存储前后数据\n row[FUNNEL_CONVERSATION] = [get(data, [index - 1, yField]), row[yField]];\n return row;\n });\n\n return formatData;\n}\n\n/**\n * 漏斗图通用转化率组件\n * @param getLineCoordinate 用于获取特定的 line 的位置及配置\n */\nexport function conversionTagComponent(\n getLineCoordinate: (\n datum: Datum,\n datumIndex: number,\n data: Data,\n initLineOption: Record\n ) => Types.LineOption\n) {\n return function (params: Params): Params {\n const { chart, options } = params;\n // @ts-ignore\n const { conversionTag, filteredData } = options;\n\n const data = filteredData || chart.getOptions().data;\n if (conversionTag) {\n const { formatter } = conversionTag;\n data.forEach((obj, index) => {\n if (index <= 0 || Number.isNaN(obj[FUNNEL_MAPPING_VALUE])) return;\n const lineOption = getLineCoordinate(obj, index, data, {\n top: true,\n name: CONVERSION_TAG_NAME,\n text: {\n content: isFunction(formatter) ? formatter(obj, data) : formatter,\n offsetX: conversionTag.offsetX,\n offsetY: conversionTag.offsetY,\n position: 'end',\n autoRotate: false,\n style: {\n textAlign: 'start',\n textBaseline: 'middle',\n ...conversionTag.style,\n },\n },\n });\n\n chart.annotation().line(lineOption);\n });\n }\n return params;\n };\n}\n"]}