UNPKG

6.88 kBSource Map (JSON)View Raw
1{"version":3,"file":"coordinate.js","sourceRoot":"","sources":["../../../src/chart/controller/coordinate.ts"],"names":[],"mappings":"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","sourcesContent":["import { each, isNil, some } from '@antv/util';\nimport { Coordinate, getCoordinate, Point } from '../../dependents';\nimport { CoordinateOption } from '../../interface';\n\n/**\n * coordinate controller,职责:\n * 1. 创建实例\n * 2. 暂存配置\n */\nexport default class CoordinateController {\n private option: CoordinateOption;\n private coordinate: Coordinate;\n\n constructor(option?: CoordinateOption) {\n // 设置默认值,并存储配置\n this.option = this.wrapperOption(option);\n }\n\n /**\n * 更新配置\n * @param option\n */\n public update(option: CoordinateOption) {\n this.option = this.wrapperOption(option);\n return this;\n }\n\n /**\n * 是否存在某一个 action\n * @param actionName\n */\n public hasAction(actionName: string) {\n const { actions } = this.option;\n\n return some(actions, (action) => action[0] === actionName);\n }\n /**\n * 创建坐标系对象\n * @param start 起始位置\n * @param end 结束位置\n * @return 坐标系实例\n */\n public create(start: Point, end: Point) {\n const { type, cfg } = this.option;\n const isTheta = type === 'theta';\n\n // 1. 起始位置\n const props = {\n start,\n end,\n ...cfg,\n };\n\n // 2. 创建实例\n const C = getCoordinate(isTheta ? 'polar' : type);\n\n this.coordinate = new C(props);\n\n // @ts-ignore FIXME coordinate 包问题导致 type 不正确\n this.coordinate.type = type;\n\n // 3. 添加默认 action\n if (isTheta) {\n // 不存在 transpose,为其自动设置一个 action\n if (!this.hasAction('transpose')) {\n this.transpose();\n }\n }\n\n // 4. 执行 action\n this.execActions();\n\n return this.coordinate;\n }\n\n /**\n * 更新坐标系对象\n * @param start 起始位置\n * @param end 结束位置\n * @return 坐标系实例\n */\n public adjust(start: Point, end: Point) {\n this.coordinate.update({\n start,\n end,\n });\n\n // 更新坐标系大小的时候,需要:\n // 1. 重置 matrix\n // 2. 重新执行作用于 matrix 的 action\n this.coordinate.resetMatrix();\n this.execActions(['scale', 'rotate', 'translate']);\n\n return this.coordinate;\n }\n\n /**\n * 旋转弧度\n * @param angle\n */\n public rotate(angle: number) {\n this.option.actions.push(['rotate', angle]);\n return this;\n }\n\n /**\n * 镜像\n * @param dim\n */\n public reflect(dim: 'x' | 'y') {\n this.option.actions.push(['reflect', dim]);\n return this;\n }\n\n /**\n * scale\n * @param sx\n * @param sy\n */\n public scale(sx: number, sy: number) {\n this.option.actions.push(['scale', sx, sy]);\n return this;\n }\n\n /**\n * 对角变换\n */\n public transpose() {\n this.option.actions.push(['transpose']);\n return this;\n }\n\n /**\n * 获取配置\n */\n public getOption(): CoordinateOption {\n return this.option;\n }\n\n /**\n * 获得 coordinate 实例\n */\n public getCoordinate() {\n return this.coordinate;\n }\n\n /**\n * 包装配置的默认值\n * @param option\n */\n private wrapperOption(option: CoordinateOption): CoordinateOption {\n return {\n type: 'rect',\n actions: [],\n cfg: {},\n ...option,\n };\n }\n\n /**\n * coordinate 实例执行 actions\n * @params includeActions 如果没有指定,则执行全部,否则,执行指定的 action\n */\n private execActions(includeActions?: string[]) {\n const { actions } = this.option;\n\n each(actions, (action) => {\n const [actionName, ...args] = action;\n\n const shouldExec = isNil(includeActions) ? true : includeActions.includes(actionName);\n\n if (shouldExec) {\n this.coordinate[actionName](...args);\n }\n });\n }\n}\n"]}
\No newline at end of file