{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../../src/plots/funnel/geometries/compare.ts"],"names":[],"mappings":"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","sourcesContent":["import { Types } from '@antv/g2';\nimport { get, isArray, isNumber, map } from '@antv/util';\nimport { geometry as baseGeometry } from '../../../adaptor/geometries/base';\nimport { Params } from '../../../core/adaptor';\nimport { Data, Datum } from '../../../types/common';\nimport { deepAssign, flow } from '../../../utils';\nimport { getTooltipMapping } from '../../../utils/tooltip';\nimport { FUNNEL_CONVERSATION, FUNNEL_MAPPING_VALUE, FUNNEL_PERCENT } from '../constant';\nimport { FunnelOptions } from '../types';\nimport { conversionTagComponent, transformData } from './common';\n\n/**\n * 处理字段数据\n * @param params\n */\nfunction field(params: Params): Params {\n const { chart, options } = params;\n const { data = [], yField } = options;\n\n // 绘制漏斗图\n chart.data(data);\n chart.scale({\n [yField]: {\n sync: true,\n },\n });\n return params;\n}\n\n/**\n * geometry处理\n * @param params\n */\nfunction geometry(params: Params): Params {\n const { chart, options } = params;\n const {\n data,\n xField,\n yField,\n color,\n compareField,\n isTransposed,\n tooltip,\n maxSize,\n minSize,\n label,\n funnelStyle,\n state,\n showFacetTitle,\n } = options;\n\n chart.facet('mirror', {\n fields: [compareField],\n // 漏斗图的转置规则与分面相反,默认是垂直布局\n transpose: !isTransposed,\n padding: isTransposed ? 0 : [32, 0, 0, 0],\n showTitle: showFacetTitle,\n eachView(view, facet) {\n const index = isTransposed ? facet.rowIndex : facet.columnIndex;\n\n if (!isTransposed) {\n view.coordinate({\n type: 'rect',\n actions: [['transpose'], ['scale', index === 0 ? -1 : 1, -1]],\n });\n }\n\n const formatterData = transformData(facet.data, data, {\n yField,\n maxSize,\n minSize,\n });\n\n view.data(formatterData);\n\n // 绘制图形\n const { fields, formatter } = getTooltipMapping(tooltip, [xField, yField, compareField]);\n\n const defaultFacetLabel = isTransposed\n ? {\n offset: index === 0 ? 10 : -23,\n position: (index === 0 ? 'bottom' : 'top') as Types.IntervalGeometryLabelPosition,\n }\n : {\n offset: 10,\n position: 'left' as Types.IntervalGeometryLabelPosition,\n style: {\n textAlign: index === 0 ? 'end' : 'start',\n },\n };\n\n baseGeometry({\n chart: view,\n options: {\n type: 'interval',\n xField: xField,\n yField: FUNNEL_MAPPING_VALUE,\n colorField: xField,\n tooltipFields: isArray(fields) && fields.concat([FUNNEL_PERCENT, FUNNEL_CONVERSATION]),\n mapping: {\n // todo 暂时不提供 金字塔 shape,后续需要自定义下形状\n shape: 'funnel',\n tooltip: formatter,\n color,\n style: funnelStyle,\n },\n label: label === false ? false : deepAssign({}, defaultFacetLabel, label),\n state,\n },\n });\n },\n });\n\n return params;\n}\n\nexport function compareConversionTag(params: Params) {\n // @ts-ignore\n const { chart, index, options } = params;\n const { conversionTag, isTransposed } = options;\n (isNumber(index) ? [chart] : chart.views).forEach((view, viewIndex) => {\n // 获取形状位置,再转化为需要的转化率位置\n const dataArray = get(view, ['geometries', '0', 'dataArray'], []);\n const size = get(view, ['options', 'data', 'length']);\n const x = map(dataArray, (item) => get(item, ['0', 'nextPoints', '0', 'x']) * size - 0.5);\n\n const getLineCoordinate = (\n datum: Datum,\n datumIndex: number,\n data: Data,\n initLineOption: Record\n ): Types.LineOption => {\n const ratio = (index || viewIndex) === 0 ? -1 : 1;\n return deepAssign({}, initLineOption, {\n start: [x[datumIndex - 1] || datumIndex - 0.5, datum[FUNNEL_MAPPING_VALUE]],\n end: [x[datumIndex - 1] || datumIndex - 0.5, datum[FUNNEL_MAPPING_VALUE] + 0.05],\n text: isTransposed\n ? {\n style: {\n textAlign: 'start',\n },\n }\n : {\n offsetX: conversionTag !== false ? ratio * conversionTag.offsetX : 0,\n style: {\n textAlign: (index || viewIndex) === 0 ? 'end' : 'start',\n },\n },\n });\n };\n\n conversionTagComponent(getLineCoordinate)(\n deepAssign(\n {},\n {\n chart: view,\n options,\n }\n )\n );\n });\n}\n\n/**\n * 转化率组件\n * @param params\n */\nfunction conversionTag(params: Params): Params {\n const { chart } = params;\n // @ts-ignore\n chart.once('beforepaint', () => compareConversionTag(params));\n return params;\n}\n\n/**\n * 对比漏斗\n * @param chart\n * @param options\n */\nexport function compareFunnel(params: Params) {\n return flow(field, geometry, conversionTag)(params);\n}\n"]}