UNPKG

37.2 kBSource Map (JSON)View Raw
1{"version":3,"file":"annotation.js","sourceRoot":"","sources":["../../../src/chart/controller/annotation.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n contains,\n deepMix,\n each,\n get,\n isArray,\n isFunction,\n isNil,\n isString,\n keys,\n upperFirst,\n find,\n includes,\n} from '@antv/util';\nimport { Annotation as AnnotationComponent, IElement, IGroup } from '../../dependents';\nimport {\n AnnotationBaseOption as BaseOption,\n AnnotationPosition as Position,\n ArcOption,\n ComponentOption,\n ShapeAnnotationOption,\n Data,\n DataMarkerOption,\n DataRegionOption,\n Datum,\n HtmlAnnotationOption,\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, GEOMETRY_LIFE_CIRCLE, 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 { getNormalizedValue } from '../../util/annotation';\nimport View from '../view';\nimport { Controller } from './base';\nimport { Scale } from '@antv/attr';\n\n/** 需要在图形绘制完成后才渲染的辅助组件类型列表 */\nconst ANNOTATIONS_AFTER_RENDER = ['regionFilter', 'shape'];\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<BaseOption[]> {\n private foregroundContainer: IGroup;\n private backgroundContainer: IGroup;\n\n /* 组件更新的 cache,组件配置 object : 组件 */\n private cache = new Map<BaseOption, ComponentOption>();\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 /**\n * 因为 annotation 需要依赖坐标系信息,所以 render 阶段为空方法,实际的创建逻辑都在 layout 中\n */\n public layout() {\n this.update();\n }\n\n // 因为 Annotation 不参与布局,但是渲染的位置依赖于坐标系,所以可以将绘制阶段延迟到 layout() 进行\n public render() { }\n\n /**\n * 更新\n */\n public update() {\n // 1. 先处理需要在图形渲染之后的辅助组件 需要在 Geometry 完成之后,拿到图形信息\n this.onAfterRender(() => {\n const updated = new Map<BaseOption, ComponentOption>();\n // 先看是否有 regionFilter/shape 要更新\n each(this.option, (option: BaseOption) => {\n if (includes(ANNOTATIONS_AFTER_RENDER, option.type)) {\n const co = this.updateOrCreate(option);\n // 存储已经处理过的\n if (co) {\n updated.set(this.getCacheKey(option), co);\n }\n }\n });\n\n // 处理完成之后,更新 cache\n // 处理完成之后,销毁删除的\n this.cache = this.syncCache(updated);\n });\n\n // 2. 处理非 regionFilter\n const updateCache = new Map<BaseOption, ComponentOption>();\n each(this.option, (option: BaseOption) => {\n if (!includes(ANNOTATIONS_AFTER_RENDER, option.type)) {\n const co = this.updateOrCreate(option);\n // 存储已经处理过的\n if (co) {\n updateCache.set(this.getCacheKey(option), co);\n }\n }\n });\n this.cache = this.syncCache(updateCache);\n }\n\n /**\n * 清空\n * @param includeOption 是否清空 option 配置项\n */\n public clear(includeOption = false) {\n super.clear();\n\n this.clearComponents();\n this.foregroundContainer.clear();\n this.backgroundContainer.clear();\n\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 /**\n * 清除当前的组件\n */\n private clearComponents() {\n this.getComponents().forEach((co) => {\n co.component.destroy();\n });\n\n this.cache.clear();\n }\n\n /**\n * region filter 比较特殊的渲染时机\n * @param doWhat\n */\n private onAfterRender(doWhat: () => void) {\n if (this.view.getOptions().animate) {\n this.view.geometries.forEach((g: Geometry) => {\n // 如果 geometry 开启,则监听\n if (g.animateOption) {\n g.once(GEOMETRY_LIFE_CIRCLE.AFTER_DRAW_ANIMATE, () => {\n doWhat();\n });\n }\n });\n } else {\n this.view.getRootView().once(VIEW_LIFE_CIRCLE.AFTER_RENDER, () => {\n doWhat();\n });\n }\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 // 不创建\n if (!cfg) {\n return null;\n }\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\n /**\n * 创建 ShapeAnnotation\n * @param option\n */\n public shape(option: ShapeAnnotationOption) {\n this.annotation({\n type: 'shape',\n ...option,\n });\n }\n\n /**\n * 创建 HtmlAnnotation\n * @param option\n */\n public html(option: HtmlAnnotationOption) {\n this.annotation({\n type: 'html',\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(\n p:\n | [string | number, string | number]\n | Datum\n | ((xScale: Scale, yScale: Scale) => [string | number, string | number] | number | Datum)\n ): 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 = getNormalizedValue(xPos, xScale);\n y = 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 = getNormalizedValue(value, xScale);\n }\n if (yScales[key]) {\n y = getNormalizedValue(value, yScales[key]);\n }\n }\n }\n\n if (isNaN(x) || isNaN(y)) {\n return null;\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 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 | null {\n const coordinate = this.view.getCoordinate();\n const canvas = this.view.getCanvas();\n let o = {};\n\n if (isNil(option)) {\n return null;\n }\n const { start, end, position } = option;;\n const sp = this.parsePosition(start);\n const ep = this.parsePosition(end);\n const textPoint = this.parsePosition(position);\n if (['arc', 'image', 'line', 'region', 'regionFilter'].includes(type) && (!sp || !ep)) {\n return null;\n } else if (['text', 'dataMarker', 'html'].includes(type) && !textPoint) {\n return null;\n }\n\n if (type === 'arc') {\n const { start, end, ...rest } = option as ArcOption;\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 ...rest,\n center: coordinate.getCenter(),\n radius: getDistanceToCenter(coordinate, sp),\n startAngle,\n endAngle,\n };\n } else if (type === 'image') {\n const { start, end, ...rest } = option as ImageOption;\n o = {\n ...rest,\n start: sp,\n end: ep,\n src: option.src,\n };\n } else if (type === 'line') {\n const { start, end, ...rest } = option as LineOption;\n o = {\n ...rest,\n start: sp,\n end: ep,\n text: get(option, 'text', null),\n };\n } else if (type === 'region') {\n const { start, end, ...rest } = option as RegionPositionBaseOption;\n o = {\n ...rest,\n start: sp,\n end: ep,\n };\n } else if (type === 'text') {\n const filteredData = this.view.getData();\n const { position, content, ...rest } = option as TextOption;\n let textContent = content;\n if (isFunction(content)) {\n textContent = content(filteredData);\n }\n o = {\n ...textPoint,\n ...rest,\n content: textContent,\n };\n } else if (type === 'dataMarker') {\n const { position, point, line, text, autoAdjust, direction, ...rest } = option as DataMarkerOption;\n o = {\n ...rest,\n ...textPoint,\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, ...rest } = option as DataRegionOption;\n o = {\n ...rest,\n points: this.getRegionPoints(start, end),\n region,\n text,\n lineLength,\n };\n } else if (type === 'regionFilter') {\n const { start, end, apply, color, ...rest } = 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 ...rest,\n color,\n shapes,\n start: sp,\n end: ep,\n };\n } else if (type === 'shape') {\n const { render, ...restOptions } = option as ShapeAnnotationOption;\n const wrappedRender = (container: IGroup) => {\n if (isFunction(option.render)) {\n return render(container, this.view, { parsePosition: this.parsePosition.bind(this) });\n }\n };\n o = {\n ...restOptions,\n render: wrappedRender,\n };\n } else if (type === 'html') {\n const { html, position, ...restOptions } = option as HtmlAnnotationOption;\n const wrappedHtml = (container: HTMLElement) => {\n if (isFunction(html)) {\n return html(container, this.view);\n }\n return html;\n };\n o = {\n ...restOptions,\n ...textPoint,\n // html 组件需要指定 parent\n parent: canvas.get('el').parentNode,\n html: wrappedHtml,\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 if (type !== 'html') {\n // html 类型不使用 G container\n cfg.container = this.getComponentContainer(cfg);\n }\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 /**\n * 创建或者更新 annotation\n * @param option\n */\n private updateOrCreate(option: BaseOption) {\n // 拿到缓存的内容\n let co = this.cache.get(this.getCacheKey(option));\n\n // 存在则更新,不存在在创建\n if (co) {\n const { type } = option;\n const theme = this.getAnnotationTheme(type);\n const cfg = this.getAnnotationCfg(type, option, theme);\n\n // 忽略掉一些配置\n if (cfg) {\n omit(cfg, ['container']);\n }\n co.component.update({ ...(cfg || {}), visible: !!cfg });\n // 对于 regionFilter/shape,因为生命周期的原因,需要额外 render\n if (includes(ANNOTATIONS_AFTER_RENDER, option.type)) {\n co.component.render();\n }\n } else {\n // 不存在,创建\n co = this.createAnnotation(option);\n if (co) {\n co.component.init();\n // Note:regionFilter/shape 特殊处理,regionFilter/shape 需要取到 Geometry 中的 Shape,需要在 view render 之后处理\n // 其他组件使用外层的统一 render 逻辑\n if (includes(ANNOTATIONS_AFTER_RENDER, option.type)) {\n co.component.render();\n }\n }\n }\n return co;\n }\n\n /**\n * 更新缓存,以及销毁组件\n * @param updated 更新或者创建的组件\n */\n private syncCache(updated: Map<BaseOption, ComponentOption>) {\n const newCache = new Map(this.cache); // clone 一份\n\n // 将 update 更新到 cache\n updated.forEach((co: ComponentOption, key: BaseOption) => {\n newCache.set(key, co);\n });\n\n // 另外和 options 进行对比,删除\n newCache.forEach((co: ComponentOption, key: BaseOption) => {\n // option 中已经找不到,那么就是删除的\n if (\n !find(this.option, (option: BaseOption) => {\n return key === this.getCacheKey(option);\n })\n ) {\n co.component.destroy();\n newCache.delete(key);\n }\n });\n\n return newCache;\n }\n\n /**\n * 获得缓存组件的 key\n * @param option\n */\n private getCacheKey(option: BaseOption) {\n // 如果存在 id,则使用 id string,否则直接使用 option 引用作为 key\n return option;\n // 后续扩展 id 用\n // const id = get(option, 'id');\n // return id ? id : option;\n }\n}\n"]}
\No newline at end of file