{"version":3,"file":"annotation.js","sourceRoot":"","sources":["../../../src/chart/controller/annotation.ts"],"names":[],"mappings":"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","sourcesContent":["import { contains, deepMix, each, get, isArray, isFunction, isNil, isString, keys, upperFirst } from '@antv/util';\n\nimport { Annotation as AnnotationComponent, IElement, IGroup, Scale } from '../../dependents';\nimport {\n AnnotationBaseOption as BaseOption,\n AnnotationPosition as Position,\n ArcOption,\n ComponentOption,\n Data,\n DataMarkerOption,\n DataRegionOption,\n ImageOption,\n LineOption,\n Point,\n RegionFilterOption,\n RegionOption,\n RegionPositionBaseOption,\n TextOption,\n} from '../../interface';\n\nimport { DEFAULT_ANIMATE_CFG } from '../../animate/';\nimport { COMPONENT_TYPE, DIRECTION, LAYER, VIEW_LIFE_CIRCLE } from '../../constant';\n\nimport Geometry from '../../geometry/base';\nimport Element from '../../geometry/element';\nimport { getAngleByPoint, getDistanceToCenter } from '../../util/coordinate';\nimport { omit } from '../../util/helper';\nimport View from '../view';\nimport { Controller } from './base';\n\n/**\n * Annotation controller, 主要作用:\n * 1. 创建 Annotation: line、text、arc ...\n * 2. 生命周期: init、layout、render、clear、destroy\n */\nexport default class Annotation extends Controller {\n private foregroundContainer: IGroup;\n private backgroundContainer: IGroup;\n\n /* 组件更新的 cache,组件配置 object : 组件 */\n private cache = new Map();\n\n constructor(view: View) {\n super(view);\n\n this.foregroundContainer = this.view.getLayer(LAYER.FORE).addGroup();\n this.backgroundContainer = this.view.getLayer(LAYER.BG).addGroup();\n\n this.option = [];\n }\n\n public get name(): string {\n return 'annotation';\n }\n\n public init() {}\n\n public layout() {\n const components = this.getComponents();\n const updateComponentFn = (co: ComponentOption) => {\n const { component, extra } = co;\n const { type } = extra;\n const theme = this.getAnnotationTheme(type);\n\n component.update(this.getAnnotationCfg(type, extra, theme));\n };\n const createComponentFn = (option: BaseOption) => {\n const co = this.createAnnotation(option);\n if (co) {\n co.component.init();\n // Note:regionFilter 特殊处理,regionFilter需要取到 Geometry 中的 Shape,需要在 view render 之后处理\n // 其他组件使用外层的统一 render 逻辑\n if (option.type === 'regionFilter') {\n co.component.render();\n }\n // 缓存起来\n this.cache.set(option, co);\n }\n };\n\n if (components.length) {\n each(components, (co: ComponentOption) => {\n const { component } = co;\n\n if (component.get('type') === 'regionFilter') {\n // regionFilter 依赖绘制后的 Geometry Shapes\n this.view.once(VIEW_LIFE_CIRCLE.AFTER_RENDER, () => {\n updateComponentFn(co);\n });\n } else {\n updateComponentFn(co);\n }\n });\n } else {\n each(this.option, (option: BaseOption) => {\n if (option.type === 'regionFilter') {\n this.view.once(VIEW_LIFE_CIRCLE.AFTER_RENDER, () => {\n // regionFilter 依赖绘制后的 Geometry Shapes\n createComponentFn(option);\n });\n } else {\n createComponentFn(option);\n }\n });\n }\n }\n\n public render() {\n // 因为 Annotation 不参与布局,但是渲染的位置依赖于坐标系,所以可以将绘制阶段延迟到 layout() 进行\n }\n\n /**\n * 更新\n */\n public update() {\n // 已经处理过的 legend\n const updated = new WeakMap();\n\n const updateComponentFn = (option: BaseOption) => {\n const { type } = option;\n const theme = this.getAnnotationTheme(type);\n const cfg = this.getAnnotationCfg(type, option, theme);\n\n const existCo = this.cache.get(option);\n\n // 存在,则更新\n if (existCo) {\n // 忽略掉一些配置\n omit(cfg, ['container']);\n\n existCo.component.update(cfg);\n updated.set(option, true);\n } else {\n // 不存在,则创建\n const co = this.createAnnotation(option);\n if (co) {\n co.component.init();\n // Note:regionFilter 特殊处理,regionFilter需要取到 Geometry 中的 Shape,需要在 view render 之后处理\n // 其他组件使用外层的统一 render 逻辑\n if (option.type === 'regionFilter') {\n co.component.render();\n }\n // 缓存起来\n this.cache.set(option, co);\n updated.set(option, true);\n }\n }\n };\n\n this.view.once(VIEW_LIFE_CIRCLE.AFTER_RENDER, () => {\n // 先看是否有 regionFilter 要更新\n each(this.option, (option: BaseOption) => {\n if (option.type === 'regionFilter') {\n updateComponentFn(option);\n }\n });\n\n // 处理完成之后,销毁删除的\n // 不在处理中的\n const newCache = new Map();\n\n this.cache.forEach((value: ComponentOption, key: BaseOption) => {\n if (updated.has(key)) {\n newCache.set(key, value);\n } else {\n // 不存在,则是所有需要被销毁的组件\n value.component.destroy();\n }\n });\n\n // 更新缓存\n this.cache = newCache;\n });\n\n each(this.option, (option: BaseOption) => {\n if (option.type !== 'regionFilter') {\n updateComponentFn(option);\n }\n });\n }\n\n /**\n * 清空\n * @param includeOption 是否清空 option 配置项\n */\n public clear(includeOption = false) {\n super.clear();\n\n this.cache.clear();\n this.foregroundContainer.clear();\n this.backgroundContainer.clear();\n // clear all option\n if (includeOption) {\n this.option = [];\n }\n }\n\n public destroy() {\n this.clear(true);\n\n this.foregroundContainer.remove(true);\n this.backgroundContainer.remove(true);\n }\n\n /**\n * 复写基类的方法\n */\n public getComponents(): ComponentOption[] {\n const co = [];\n\n this.cache.forEach((value: ComponentOption) => {\n co.push(value);\n });\n\n return co;\n }\n\n private createAnnotation(option: BaseOption) {\n const { type } = option;\n\n const Ctor = AnnotationComponent[upperFirst(type)];\n if (Ctor) {\n const theme = this.getAnnotationTheme(type);\n const cfg = this.getAnnotationCfg(type, option, theme);\n const annotation = new Ctor(cfg);\n\n return {\n component: annotation,\n layer: this.isTop(cfg) ? LAYER.FORE : LAYER.BG,\n direction: DIRECTION.NONE,\n type: COMPONENT_TYPE.ANNOTATION,\n extra: option,\n };\n }\n }\n\n // APIs for creating annotation component\n public annotation(option: any) {\n this.option.push(option);\n }\n\n /**\n * 创建 Arc\n * @param option\n * @returns AnnotationController\n */\n public arc(option: ArcOption) {\n this.annotation({\n type: 'arc',\n ...option,\n });\n\n return this;\n }\n\n /**\n * 创建 image\n * @param option\n * @returns AnnotationController\n */\n public image(option: ImageOption) {\n this.annotation({\n type: 'image',\n ...option,\n });\n\n return this;\n }\n\n /**\n * 创建 Line\n * @param option\n * @returns AnnotationController\n */\n public line(option: LineOption) {\n this.annotation({\n type: 'line',\n ...option,\n });\n\n return this;\n }\n\n /**\n * 创建 Region\n * @param option\n * @returns AnnotationController\n */\n public region(option: RegionOption) {\n this.annotation({\n type: 'region',\n ...option,\n });\n\n return this;\n }\n\n /**\n * 创建 Text\n * @param option\n * @returns AnnotationController\n */\n public text(option: TextOption) {\n this.annotation({\n type: 'text',\n ...option,\n });\n\n return this;\n }\n\n /**\n * 创建 DataMarker\n * @param option\n * @returns AnnotationController\n */\n public dataMarker(option: DataMarkerOption) {\n this.annotation({\n type: 'dataMarker',\n ...option,\n });\n\n return this;\n }\n\n /**\n * 创建 DataRegion\n * @param option\n * @returns AnnotationController\n */\n public dataRegion(option: DataRegionOption) {\n this.annotation({\n type: 'dataRegion',\n ...option,\n });\n }\n\n /**\n * 创建 RegionFilter\n * @param option\n * @returns AnnotationController\n */\n public regionFilter(option: RegionFilterOption) {\n this.annotation({\n type: 'regionFilter',\n ...option,\n });\n }\n // end API\n\n /**\n * parse the point position to [x, y]\n * @param p Position\n * @returns { x, y }\n */\n private parsePosition(p: Position): Point {\n const xScale = this.view.getXScale();\n // 转成 object\n const yScales = this.view.getScalesByDim('y');\n\n const position: Position = isFunction(p) ? p.call(null, xScale, yScales) : p;\n\n let x = 0;\n let y = 0;\n\n // 入参是 [24, 24] 这类时\n if (isArray(position)) {\n const [xPos, yPos] = position;\n // 如果数据格式是 ['50%', '50%'] 的格式\n // fix: 原始数据中可能会包含 'xxx5%xxx' 这样的数据,需要判断下 https://github.com/antvis/f2/issues/590\n // @ts-ignore\n if (isString(xPos) && xPos.indexOf('%') !== -1 && !isNaN(xPos.slice(0, -1))) {\n return this.parsePercentPosition(position as [string, string]);\n }\n\n x = this.getNormalizedValue(xPos, xScale);\n y = this.getNormalizedValue(yPos, Object.values(yScales)[0]);\n } else if (!isNil(position)) {\n // 入参是 object 结构,数据点\n for (const key of keys(position)) {\n const value = position[key];\n if (key === xScale.field) {\n x = this.getNormalizedValue(value, xScale);\n }\n if (yScales[key]) {\n y = this.getNormalizedValue(value, yScales[key]);\n }\n }\n }\n\n return this.view.getCoordinate().convert({ x, y });\n }\n\n /**\n * parse all the points between start and end\n * @param start\n * @param end\n * @return Point[]\n */\n private getRegionPoints(start: Position | Data, end: Position | Data): Point[] {\n const xScale = this.view.getXScale();\n const yScales = this.view.getScalesByDim('y');\n const yScale = Object.values(yScales)[0];\n const xField = xScale.field;\n const viewData = this.view.getData();\n const startXValue = isArray(start) ? start[0] : start[xField];\n const endXValue = isArray(end) ? end[0] : end[xField];\n const arr = [];\n\n let startIndex;\n each(viewData, (item, idx) => {\n if (item[xField] === startXValue) {\n startIndex = idx;\n }\n if (idx >= startIndex) {\n const point = this.parsePosition([item[xField], item[yScale.field]]);\n if (point) {\n arr.push(point);\n }\n }\n if (item[xField] === endXValue) {\n return false;\n }\n });\n\n return arr;\n }\n\n /**\n * parse the value position\n * @param val\n * @param scale\n */\n private getNormalizedValue(val: number | string, scale: Scale) {\n let result: number;\n let scaled: number;\n\n switch (val) {\n case 'start':\n result = 0;\n break;\n case 'end':\n result = 1;\n break;\n case 'median': {\n scaled = scale.isCategory ? (scale.values.length - 1) / 2 : (scale.min + scale.max) / 2;\n result = scale.scale(scaled);\n break;\n }\n case 'min':\n case 'max':\n if (scale.isCategory) {\n scaled = val === 'min' ? 0 : scale.values.length - 1;\n } else {\n scaled = scale[val];\n }\n result = scale.scale(scaled);\n break;\n default:\n result = scale.scale(val);\n }\n\n return result;\n }\n\n /**\n * parse percent position\n * @param position\n */\n private parsePercentPosition(position: [string, string]): Point {\n const xPercent = parseFloat(position[0]) / 100;\n const yPercent = parseFloat(position[1]) / 100;\n const coordinate = this.view.getCoordinate();\n const { start, end } = coordinate;\n\n const topLeft = {\n x: Math.min(start.x, end.x),\n y: Math.min(start.y, end.y),\n };\n const x = coordinate.getWidth() * xPercent + topLeft.x;\n const y = coordinate.getHeight() * yPercent + topLeft.y;\n return { x, y };\n }\n\n /**\n * get coordinate bbox\n */\n private getCoordinateBBox() {\n const coordinate = this.view.getCoordinate();\n const { start, end } = coordinate;\n\n const width = coordinate.getWidth();\n const height = coordinate.getHeight();\n const topLeft = {\n x: Math.min(start.x, end.x),\n y: Math.min(start.y, end.y),\n };\n\n return {\n x: topLeft.x,\n y: topLeft.y,\n minX: topLeft.x,\n minY: topLeft.y,\n maxX: topLeft.x + width,\n maxY: topLeft.y + height,\n width,\n height,\n };\n }\n\n /**\n * get annotation component config by different type\n * @param type\n * @param option 用户的配置\n * @param theme\n */\n private getAnnotationCfg(type: string, option: any, theme: object): object {\n const coordinate = this.view.getCoordinate();\n let o = {};\n\n if (isNil(option)) {\n return null;\n }\n\n if (type === 'arc') {\n const { start, end } = option as ArcOption;\n const sp = this.parsePosition(start);\n const ep = this.parsePosition(end);\n const startAngle = getAngleByPoint(coordinate, sp);\n let endAngle = getAngleByPoint(coordinate, ep);\n if (startAngle > endAngle) {\n endAngle = Math.PI * 2 + endAngle;\n }\n\n o = {\n center: coordinate.getCenter(),\n radius: getDistanceToCenter(coordinate, sp),\n startAngle,\n endAngle,\n };\n } else if (type === 'image') {\n const { start, end } = option as ImageOption;\n o = {\n start: this.parsePosition(start),\n end: this.parsePosition(end),\n src: option.src,\n };\n } else if (type === 'line') {\n const { start, end } = option as LineOption;\n o = {\n start: this.parsePosition(start),\n end: this.parsePosition(end),\n text: get(option, 'text', null),\n };\n } else if (type === 'region') {\n const { start, end } = option as RegionPositionBaseOption;\n o = {\n start: this.parsePosition(start),\n end: this.parsePosition(end),\n };\n } else if (type === 'text') {\n const { position, rotate } = option as TextOption;\n o = {\n ...this.parsePosition(position),\n content: option.content,\n rotate,\n };\n } else if (type === 'dataMarker') {\n const { position, point, line, text, autoAdjust, direction } = option as DataMarkerOption;\n o = {\n ...this.parsePosition(position),\n coordinateBBox: this.getCoordinateBBox(),\n point,\n line,\n text,\n autoAdjust,\n direction,\n };\n } else if (type === 'dataRegion') {\n const { start, end, region, text, lineLength } = option as DataRegionOption;\n o = {\n points: this.getRegionPoints(start, end),\n region,\n text,\n lineLength,\n };\n } else if (type === 'regionFilter') {\n const { start, end, apply, color } = option as RegionFilterOption;\n const geometries: Geometry[] = this.view.geometries;\n const shapes = [];\n const addShapes = (item?: IElement) => {\n if (!item) {\n return;\n }\n if (item.isGroup()) {\n (item as IGroup).getChildren().forEach((child) => addShapes(child));\n } else {\n shapes.push(item);\n }\n };\n each(geometries, (geom: Geometry) => {\n if (apply) {\n if (contains(apply, geom.type)) {\n each(geom.elements, (elem: Element) => {\n addShapes(elem.shape);\n });\n }\n } else {\n each(geom.elements, (elem: Element) => {\n addShapes(elem.shape);\n });\n }\n });\n o = {\n color,\n shapes,\n start: this.parsePosition(start),\n end: this.parsePosition(end),\n };\n }\n // 合并主题,用户配置优先级高于默认主题\n const cfg = deepMix({}, theme, {\n ...o,\n top: option.top,\n style: option.style,\n offsetX: option.offsetX,\n offsetY: option.offsetY,\n });\n cfg.container = this.getComponentContainer(cfg);\n cfg.animate = this.view.getOptions().animate && cfg.animate && get(option, 'animate', cfg.animate); // 如果 view 关闭动画,则不执行\n cfg.animateOption = deepMix({}, DEFAULT_ANIMATE_CFG, cfg.animateOption, option.animateOption);\n\n return cfg;\n }\n\n /**\n * is annotation render on top\n * @param option\n * @return whethe on top\n */\n private isTop(option: any): boolean {\n return get(option, 'top', true);\n }\n\n /**\n * get the container by option.top\n * default is on top\n * @param option\n * @returns the container\n */\n private getComponentContainer(option: any) {\n return this.isTop(option) ? this.foregroundContainer : this.backgroundContainer;\n }\n\n private getAnnotationTheme(type: string) {\n return get(this.view.getTheme(), ['components', 'annotation', type], {});\n }\n}\n"]}