1 line
24 KiB
Plaintext
1 line
24 KiB
Plaintext
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/geometry/label/base.ts"],"names":[],"mappings":"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","sourcesContent":["import { deepMix, each, get, isArray, isFunction, isNil, isUndefined } from '@antv/util';\n\nimport { FIELD_ORIGIN } from '../../constant';\nimport { Scale } from '../../dependents';\nimport { Datum, LabelOption, MappingDatum, Point } from '../../interface';\nimport { LabelCfg, LabelItem, LabelPointCfg, TextAlign } from './interface';\n\nimport { getDefaultAnimateCfg } from '../../animate';\nimport { getPolygonCentroid } from '../../util/graphics';\n\nimport Labels from '../../component/labels';\nimport Geometry from '../base';\nimport Element from '../element';\n\nexport type GeometryLabelConstructor = new (cfg: any) => GeometryLabel;\n\nfunction avg(arr: number[]) {\n let sum = 0;\n each(arr, (value: number) => {\n sum += value;\n });\n return sum / arr.length;\n}\n\n/**\n * Geometry Label 基类,用于生成 Geometry 下所有 label 的配置项信息\n */\nexport default class GeometryLabel {\n /** geometry 实例 */\n public readonly geometry: Geometry;\n public labelsRenderer: Labels;\n /** 默认的布局 */\n public defaultLayout: string;\n\n constructor(geometry: Geometry) {\n this.geometry = geometry;\n }\n\n public getLabelItems(mapppingArray: MappingDatum[]): LabelItem[] {\n const items = [];\n const labelCfgs = this.getLabelCfgs(mapppingArray);\n // 获取 label 相关的 x,y 的值,获取具体的 x, y,防止存在数组\n each(mapppingArray, (mappingData: MappingDatum, index: number) => {\n const labelCfg = labelCfgs[index];\n if (!labelCfg || isNil(mappingData.x) || isNil(mappingData.y)) {\n items.push(null);\n return;\n }\n\n const labelContent = !isArray(labelCfg.content) ? [labelCfg.content] : labelCfg.content;\n labelCfg.content = labelContent;\n const total = labelContent.length;\n each(labelContent, (content, subIndex) => {\n if (isNil(content) || content === '') {\n items.push(null);\n return;\n }\n\n const item = {\n ...labelCfg,\n ...this.getLabelPoint(labelCfg, mappingData, subIndex),\n };\n if (!item.textAlign) {\n item.textAlign = this.getLabelAlign(item, subIndex, total);\n }\n\n if (item.offset <= 0) {\n item.labelLine = null;\n }\n\n items.push(item);\n });\n });\n return items;\n }\n\n public render(mapppingArray: MappingDatum[], isUpdate: boolean = false) {\n const labelItems = this.getLabelItems(mapppingArray);\n\n const labelsRenderer = this.getLabelsRenderer();\n const shapes = this.getGeometryShapes();\n // 渲染文本\n labelsRenderer.render(labelItems, shapes, isUpdate);\n }\n\n public clear() {\n const labelsRenderer = this.labelsRenderer;\n if (labelsRenderer) {\n labelsRenderer.clear();\n }\n }\n\n public destroy() {\n const labelsRenderer = this.labelsRenderer;\n if (labelsRenderer) {\n labelsRenderer.destroy();\n }\n this.labelsRenderer = null;\n }\n\n // geometry 更新之后,对应的 Coordinate 也会更新,为了获取到最新鲜的 Coordinate,故使用方法获取\n public getCoordinate() {\n return this.geometry.coordinate;\n }\n\n /**\n * 获取 label 的默认配置\n */\n protected getDefaultLabelCfg() {\n return get(this.geometry.theme, 'labels', {});\n }\n\n /**\n * 设置 label 位置\n * @param labelPointCfg\n * @param mappingData\n * @param index\n * @param position\n */\n protected setLabelPosition(\n labelPointCfg: LabelPointCfg,\n mappingData: MappingDatum,\n index: number,\n position: string\n ) {}\n\n /**\n * 获取文本默认偏移量\n * @param offset\n * @returns\n */\n protected getDefaultOffset(offset: number) {\n const coordinate = this.getCoordinate();\n const vector = this.getOffsetVector(offset);\n return coordinate.isTransposed ? vector[0] : vector[1];\n }\n\n /**\n * 获取每个 label 的偏移量\n * @param labelCfg\n * @param index\n * @param total\n * @returns\n */\n protected getLabelOffset(labelCfg: LabelCfg, index: number, total: number) {\n const offset = this.getDefaultOffset(labelCfg.offset);\n const coordinate = this.getCoordinate();\n const transposed = coordinate.isTransposed;\n const dim = transposed ? 'x' : 'y';\n const factor = transposed ? 1 : -1; // y 方向上越大,像素的坐标越小,所以transposed时将系数变成\n const offsetPoint = {\n x: 0,\n y: 0,\n };\n if (index > 0 || total === 1) {\n // 判断是否小于0\n offsetPoint[dim] = offset * factor;\n } else {\n offsetPoint[dim] = offset * factor * -1;\n }\n return offsetPoint;\n }\n\n /**\n * 获取每个 label 的位置\n * @param labelCfg\n * @param mappingData\n * @param index\n * @returns label point\n */\n protected getLabelPoint(labelCfg: LabelCfg, mappingData: MappingDatum, index: number): LabelPointCfg {\n const coordinate = this.getCoordinate();\n const total = labelCfg.content.length;\n\n function getDimValue(value, idx) {\n let v = value;\n if (isArray(v)) {\n if (labelCfg.content.length === 1) {\n // 如果仅一个 label,多个 y, 取最后一个 y\n if (v.length <= 2) {\n v = v[value.length - 1];\n } else {\n v = avg(v);\n }\n } else {\n v = v[idx];\n }\n }\n return v;\n }\n\n const label = {\n content: labelCfg.content[index],\n x: 0,\n y: 0,\n start: { x: 0, y: 0 },\n color: '#fff',\n };\n // 多边形场景,多用于地图\n if (mappingData && this.geometry.type === 'polygon') {\n const centroid = getPolygonCentroid(mappingData.x, mappingData.y);\n label.x = centroid[0];\n label.y = centroid[1];\n } else {\n label.x = getDimValue(mappingData.x, index);\n label.y = getDimValue(mappingData.y, index);\n }\n\n // 处理漏斗图文本位置\n const shape = isArray(mappingData.shape) ? mappingData.shape[0] : mappingData.shape;\n if (shape === 'funnel' || shape === 'pyramid') {\n const nextPoints = get(mappingData, 'nextPoints');\n const points = get(mappingData, 'points');\n if (nextPoints) {\n // 非漏斗图底部\n const point1 = coordinate.convert(points[1] as Point);\n const point2 = coordinate.convert(nextPoints[1] as Point);\n label.x = (point1.x + point2.x) / 2;\n label.y = (point1.y + point2.y) / 2;\n } else if (shape === 'pyramid') {\n const point1 = coordinate.convert(points[1] as Point);\n const point2 = coordinate.convert(points[2] as Point);\n label.x = (point1.x + point2.x) / 2;\n label.y = (point1.y + point2.y) / 2;\n }\n }\n\n if (labelCfg.position) {\n // 如果 label 支持 position 属性\n this.setLabelPosition(label, mappingData, index, labelCfg.position);\n }\n const offsetPoint = this.getLabelOffset(labelCfg, index, total);\n label.start = { x: label.x, y: label.y };\n label.x += offsetPoint.x;\n label.y += offsetPoint.y;\n label.color = mappingData.color;\n return label;\n }\n\n /**\n * 获取文本的对齐方式\n * @param item\n * @param index\n * @param total\n * @returns\n */\n protected getLabelAlign(item: LabelItem, index: number, total: number): TextAlign {\n let align: TextAlign = 'center';\n const coordinate = this.getCoordinate();\n if (coordinate.isTransposed) {\n const offset = this.getDefaultOffset(item.offset);\n if (offset < 0) {\n align = 'right';\n } else if (offset === 0) {\n align = 'center';\n } else {\n align = 'left';\n }\n if (total > 1 && index === 0) {\n if (align === 'right') {\n align = 'left';\n } else if (align === 'left') {\n align = 'right';\n }\n }\n }\n return align;\n }\n\n /**\n * 获取每一个 label 的唯一 id\n * @param mappingData label 对应的图形的绘制数据\n */\n protected getLabelId(mappingData: MappingDatum) {\n const geometry = this.geometry;\n const type = geometry.type;\n const xScale = geometry.getXScale();\n const yScale = geometry.getYScale();\n const origin = mappingData[FIELD_ORIGIN]; // 原始数据\n\n let labelId = geometry.getElementId(mappingData);\n if (type === 'line' || type === 'area') {\n // 折线图以及区域图,一条线会对应一组数据,即多个 labels,为了区分这些 labels,需要在 line id 的前提下加上 x 字段值\n labelId += ` ${origin[xScale.field]}`;\n } else if (type === 'path') {\n // path 路径图,无序,有可能存在相同 x 不同 y 的情况,需要通过 x y 来确定唯一 id\n labelId += ` ${origin[xScale.field]}-${origin[yScale.field]}`;\n }\n\n return labelId;\n }\n\n // 获取 labels 组件\n private getLabelsRenderer() {\n const { labelsContainer, labelOption, canvasRegion, animateOption } = this.geometry;\n const coordinate = this.geometry.coordinate;\n\n let labelsRenderer = this.labelsRenderer;\n if (!labelsRenderer) {\n labelsRenderer = new Labels({\n container: labelsContainer,\n layout: get(labelOption, ['cfg', 'layout'], {\n type: this.defaultLayout,\n }),\n });\n this.labelsRenderer = labelsRenderer;\n }\n labelsRenderer.region = canvasRegion;\n // 设置动画配置,如果 geometry 的动画关闭了,那么 label 的动画也会关闭\n labelsRenderer.animate = animateOption ? getDefaultAnimateCfg('label', coordinate) : false;\n\n return labelsRenderer;\n }\n\n private getLabelCfgs(mapppingArray: MappingDatum[]): LabelCfg[] {\n const geometry = this.geometry;\n const defaultLabelCfg = this.getDefaultLabelCfg();\n const { type, theme, labelOption, scales, coordinate } = geometry;\n const { fields, callback, cfg } = labelOption as LabelOption;\n const labelScales = fields.map((field: string) => {\n return scales[field];\n });\n\n const labelCfgs: LabelCfg[] = [];\n each(mapppingArray, (mappingData: MappingDatum, index: number) => {\n const origin = mappingData[FIELD_ORIGIN]; // 原始数据\n const originText = this.getLabelText(origin, labelScales);\n let callbackCfg;\n if (callback) {\n // 当同时配置了 callback 和 cfg 时,以 callback 为准\n const originValues = fields.map((field: string) => origin[field]);\n callbackCfg = callback(...originValues);\n if (isNil(callbackCfg)) {\n labelCfgs.push(null);\n return;\n }\n }\n\n let labelCfg = {\n id: this.getLabelId(mappingData), // 进行 ID 标记\n data: origin, // 存储原始数据\n mappingData, // 存储映射后的数据,\n coordinate, // 坐标系\n ...cfg,\n ...callbackCfg,\n };\n\n const content = labelCfg.content;\n if (isFunction(content)) {\n labelCfg.content = content(origin, mappingData, index);\n } else if (isUndefined(content)) {\n // 用户未配置 content,则默认为映射的第一个字段的值\n labelCfg.content = originText[0];\n }\n\n if (isFunction(labelCfg.position)) {\n labelCfg.position = labelCfg.position(origin, mappingData, index);\n }\n\n if (type === 'polygon' || (labelCfg.offset < 0 && !['line', 'point', 'path'].includes(type))) {\n // polygon 或者 offset 小于 0 时,文本展示在图形内部,将其颜色设置为 白色\n labelCfg = deepMix({}, defaultLabelCfg, theme.innerLabels, labelCfg);\n } else {\n labelCfg = deepMix({}, defaultLabelCfg, theme.labels, labelCfg);\n }\n\n labelCfgs.push(labelCfg);\n });\n\n return labelCfgs;\n }\n\n private getLabelText(origin: Datum, scales: Scale[]) {\n const labelTexts = [];\n each(scales, (scale: Scale) => {\n let value = origin[scale.field];\n if (isArray(value)) {\n value = value.map((subVal) => {\n return scale.getText(subVal);\n });\n } else {\n value = scale.getText(value);\n }\n\n if (isNil(value) || value === '') {\n labelTexts.push(null);\n } else {\n labelTexts.push(value);\n }\n });\n return labelTexts;\n }\n\n private getOffsetVector(offset = 0) {\n const coordinate = this.getCoordinate();\n // 如果 x,y 翻转,则偏移 x,否则偏移 y\n return coordinate.isTransposed ? coordinate.applyMatrix(offset, 0) : coordinate.applyMatrix(0, offset);\n }\n\n private getGeometryShapes() {\n const geometry = this.geometry;\n const shapes = {};\n each(geometry.elementsMap, (element: Element, id: string) => {\n shapes[id] = element.shape;\n });\n // 因为有可能 shape 还在进行动画,导致 shape.getBBox() 获取到的值不是最终态,所以需要从 offscreenGroup 获取\n each(geometry.getOffscreenGroup().getChildren(), (child) => {\n const id = geometry.getElementId(child.get('origin').mappingData);\n shapes[id] = child;\n });\n\n return shapes;\n }\n}\n"]} |