UNPKG

8.43 kBSource Map (JSON)View Raw
1{"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/geometry/path.ts"],"names":[],"mappings":";;;AAAA,wCAA2C;AAE3C,6DAA+C;AAC/C,mEAAgC;AAChC,yBAAyB;AACzB,wBAAsB;AACtB,0DAAuD;AACvD,oCAAmC;AAUnC;;;GAGG;AACH;IAAkC,qCAAQ;IAQxC,cAAY,GAAY;QAAxB,YACE,kBAAM,GAAG,CAAC,SAKX;QAbe,UAAI,GAAW,MAAM,CAAC;QACtB,eAAS,GAAW,MAAM,CAAC;QASjC,IAAA,KAAiD,GAAG,aAAhC,EAApB,YAAY,mBAAG,KAAK,KAAA,EAAE,KAA2B,GAAG,gBAAR,EAAtB,eAAe,mBAAG,IAAI,KAAA,CAAS;QAC7D,KAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,KAAI,CAAC,eAAe,GAAG,eAAe,CAAC;;IACzC,CAAC;IAED;;;;;OAKG;IACO,6BAAc,GAAxB,UAAyB,gBAAkC,EAAE,QAAyB;QAAzB,yBAAA,EAAA,gBAAyB;QACpF,0BAA0B;QAC1B,IAAM,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;QAClD,IAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC3C,IAAM,IAAI,GAAa,EAAE,CAAC;QAE1B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChD,IAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACxC,IAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAC9B,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACzB,KAAK,EAAE,CAAC;SACT;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;QAE3B,IAAA,KAA8B,IAAA,WAAI,EAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,EAA5D,KAAK,WAAA,EAAE,OAAO,aAAA,EAAE,OAAO,aAAqC,CAAC;QAErE,KAAkB,UAAK,EAAL,eAAK,EAAL,mBAAK,EAAL,IAAK,EAAE;YAApB,IAAM,GAAG,cAAA;YACZ,IAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrC,IAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAC5C,IAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAChD,IAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAM,OAAO,GAAG,IAAI,iBAAO,CAAC;gBAC1B,YAAY,cAAA;gBACZ,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE;gBACxC,YAAY,EAAE,CAAC;aAChB,CAAC,CAAC;YACH,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;YACxB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW;YAC7C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;SAC5B;QAED,KAAkB,UAAO,EAAP,mBAAO,EAAP,qBAAO,EAAP,IAAO,EAAE;YAAtB,IAAM,GAAG,gBAAA;YACZ,IAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrC,IAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAChD,IAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAA,+BAAa,EAAC,WAAW,EAAE,QAAQ,CAAC,EAAE;gBACpE,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;gBACrC,sCAAsC;gBACtC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB;aAC3C;YACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;SAC5B;QAED,KAAkB,UAAO,EAAP,mBAAO,EAAP,qBAAO,EAAP,IAAO,EAAE;YAAtB,IAAM,GAAG,gBAAA;YACZ,IAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YAC1C,8BAA8B;YAC9B,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;YACrC,OAAO,CAAC,OAAO,EAAE,CAAC;SACnB;IACH,CAAC;IAED;;;OAGG;IACO,+BAAgB,GAA1B,UAA2B,WAA2B;QACpD,IAAM,MAAM,GAAG,EAAE,CAAC;QAClB,IAAM,IAAI,GAAG,EAAE,CAAC;QAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YACtD,IAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC;gBACV,CAAC,EAAE,GAAG,CAAC,CAAC;gBACR,CAAC,EAAE,GAAG,CAAC,CAAC;aACT,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,uBAAY,CAAC,CAAC,CAAC;SAC9B;QAED,OAAO;YACL,MAAM,QAAA;YACN,IAAI,MAAA;SACL,CAAC;IACJ,CAAC;IAEO,2BAAY,GAApB,UAAqB,WAA2B;QAC9C,IAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAA,KAAmB,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAnD,MAAM,YAAA,EAAE,IAAI,UAAuC,CAAC;QAC5D,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC;QACnC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC7C,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;QACzB,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAC1C,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAEhD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACH,WAAC;AAAD,CAAC,AAtHD,CAAkC,cAAQ,GAsHzC","sourcesContent":["import { FIELD_ORIGIN } from '../constant';\nimport { MappingDatum, ShapeInfo } from '../interface';\nimport Geometry, { GeometryCfg } from './base';\nimport Element from './element';\n/** 引入对应的 ShapeFactory */\nimport './shape/line';\nimport { isModelChange } from './util/is-model-change';\nimport { diff } from './util/diff';\n\n/** Path 构造函数参数类型 */\nexport interface PathCfg extends GeometryCfg {\n /** 是否连接空值 */\n connectNulls?: boolean;\n /** 单个孤立数据点是否展示 */\n showSinglePoint?: boolean;\n}\n\n/**\n * Path 几何标记。\n * 用于绘制路径图等。\n */\nexport default class Path extends Geometry {\n public readonly type: string = 'path';\n public readonly shapeType: string = 'line';\n /** 是否连接空值 */\n public connectNulls: boolean;\n /** 单个孤立数据点是否展示 */\n public showSinglePoint: boolean;\n\n constructor(cfg: PathCfg) {\n super(cfg);\n\n const { connectNulls = false, showSinglePoint = true } = cfg;\n this.connectNulls = connectNulls;\n this.showSinglePoint = showSinglePoint;\n }\n\n /**\n * 创建所有的 Element 实例,对于 Path、Line、Area,一组数据对应一个 Element。\n * @param mappingData\n * @param [isUpdate]\n * @returns elements\n */\n protected updateElements(mappingDataArray: MappingDatum[][], isUpdate: boolean = false) {\n // Path 的每个 element 对应一组数据\n const keyData = new Map<string, MappingDatum[]>();\n const keyIndex = new Map<string, number>();\n const keys: string[] = [];\n\n let index = 0;\n for (let i = 0; i < mappingDataArray.length; i++) {\n const mappingData = mappingDataArray[i];\n const key = this.getElementId(mappingData);\n keys.push(key);\n keyData.set(key, mappingData);\n keyIndex.set(key, index);\n index++;\n }\n\n this.elements = new Array(index);\n\n const { added, updated, removed } = diff(this.lastElementsMap, keys);\n\n for (const key of added) {\n const mappingData = keyData.get(key);\n const shapeFactory = this.getShapeFactory();\n const shapeCfg = this.getShapeInfo(mappingData);\n const i = keyIndex.get(key);\n const element = new Element({\n shapeFactory,\n container: this.container,\n offscreenGroup: this.getOffscreenGroup(),\n elementIndex: i,\n });\n element.geometry = this;\n element.animate = this.animateOption;\n element.draw(shapeCfg, isUpdate); // 绘制 shape\n this.elementsMap[key] = element;\n this.elements[i] = element;\n }\n\n for (const key of updated) {\n const mappingData = keyData.get(key);\n const element = this.lastElementsMap[key];\n const i = keyIndex.get(key);\n const shapeCfg = this.getShapeInfo(mappingData);\n const preShapeCfg = element.getModel();\n if (this.isCoordinateChanged || isModelChange(preShapeCfg, shapeCfg)) {\n element.animate = this.animateOption;\n // 通过绘制数据的变更来判断是否需要更新,因为用户有可能会修改图形属性映射\n element.update(shapeCfg); // 更新对应的 element\n }\n this.elementsMap[key] = element;\n this.elements[i] = element;\n }\n\n for (const key of removed) {\n const element = this.lastElementsMap[key];\n // 更新动画配置,用户有可能在更新之前有对动画进行配置操作\n element.animate = this.animateOption;\n element.destroy();\n }\n }\n\n /**\n * 获取组成一条线(一组数据)的所有点以及数据\n * @param mappingData 映射后的数组\n */\n protected getPointsAndData(mappingData: MappingDatum[]) {\n const points = [];\n const data = [];\n\n for (let i = 0, len = mappingData.length; i < len; i++) {\n const obj = mappingData[i];\n points.push({\n x: obj.x,\n y: obj.y,\n });\n data.push(obj[FIELD_ORIGIN]);\n }\n\n return {\n points,\n data,\n };\n }\n\n private getShapeInfo(mappingData: MappingDatum[]): ShapeInfo {\n const shapeCfg = this.getDrawCfg(mappingData[0]);\n const { points, data } = this.getPointsAndData(mappingData);\n shapeCfg.mappingData = mappingData;\n shapeCfg.data = data;\n shapeCfg.isStack = !!this.getAdjust('stack');\n shapeCfg.points = points;\n shapeCfg.connectNulls = this.connectNulls;\n shapeCfg.showSinglePoint = this.showSinglePoint;\n\n return shapeCfg;\n }\n}\n"]}
\No newline at end of file