{"version":3,"file":"circle.js","sourceRoot":"","sources":["../../src/facet/circle.ts"],"names":[],"mappings":"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","sourcesContent":["import { deepMix, each, filter, get } from '@antv/util';\nimport { AxisCfg, CircleCfg, CircleData, Datum } from '../interface';\n\nimport View from '../chart/view';\nimport { DIRECTION } from '../constant';\nimport { getAnglePoint, getFactTitleConfig } from '../util/facet';\nimport { Facet } from './facet';\n\n/**\n * @ignore\n * 镜像分面\n */\nexport default class Circle extends Facet {\n protected getDefaultCfg() {\n return deepMix({}, super.getDefaultCfg(), {\n type: 'circle',\n showTitle: true,\n title: super.getDefaultTitleCfg(),\n });\n }\n\n public render() {\n super.render();\n\n if (this.cfg.showTitle) {\n this.renderTitle();\n }\n }\n\n /**\n * 根据总数和当前索引,计算分面的 region\n * @param count\n * @param index\n */\n protected getRegion(count: number, index: number) {\n const r = 1 / 2; // 画布半径\n // 画布圆心\n const center = { x: 0.5, y: 0.5 };\n // 每隔分面间隔的弧度\n const avgAngle = (Math.PI * 2) / count;\n\n // 当前分面所在的弧度\n const angle = (-1 * Math.PI) / 2 + avgAngle * index;\n // TODO 没看懂\n const facetR = r / (1 + 1 / Math.sin(avgAngle / 2));\n // 分面的中心点\n const middle = getAnglePoint(center, r - facetR, angle);\n const startAngle = (Math.PI * 5) / 4; // 右上角\n const endAngle = (Math.PI * 1) / 4; // 左下角\n\n return {\n start: getAnglePoint(middle, facetR, startAngle),\n end: getAnglePoint(middle, facetR, endAngle),\n };\n }\n\n protected afterEachView(view: View, facet: CircleData) {\n this.processAxis(view, facet);\n }\n\n protected beforeEachView(view: View, facet: CircleData) {}\n\n protected generateFacets(data: Datum[]): CircleData[] {\n const { fields, type } = this.cfg;\n const [field] = fields;\n if (!field) {\n throw new Error('No `fields` specified!');\n }\n\n const values = this.getFieldValues(data, field);\n const count = values.length;\n\n const rst = [];\n values.forEach((value: any, index: number) => {\n const conditions = [{ field, value, values }];\n const facetData = filter(data, this.getFacetDataFilter(conditions));\n\n const facet: CircleData = {\n type,\n data: facetData,\n region: this.getRegion(count, index),\n\n columnValue: value,\n columnField: field,\n columnIndex: index,\n columnValuesLength: count,\n\n rowValue: null,\n rowField: null,\n rowIndex: 0,\n rowValuesLength: 1,\n };\n rst.push(facet);\n });\n return rst;\n }\n\n protected getXAxisOption(x: string, axes: any, option: AxisCfg, facet: CircleData): object {\n // 不做任何处理\n return option;\n }\n\n /**\n * 设置 y 坐标轴的文本、title 是否显示\n * @param y\n * @param axes\n * @param option\n * @param facet\n */\n protected getYAxisOption(y: string, axes: any, option: AxisCfg, facet: CircleData): object {\n // 不做任何处理\n return option;\n }\n\n /**\n * facet title\n */\n private renderTitle() {\n each(this.facets, (facet: CircleData) => {\n const { columnValue, view } = facet;\n const formatter = get(this.cfg.title, 'formatter');\n\n const config = deepMix(\n {\n position: ['50%', '0%'] as [string, string],\n content: formatter ? formatter(columnValue) : columnValue,\n },\n getFactTitleConfig(DIRECTION.TOP),\n this.cfg.title\n );\n\n view.annotation().text(config);\n });\n }\n}\n"]}