| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390 |
- "use strict";
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.radarAxis = radarAxis;
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
- var _updater = require("../class/updater.class");
- var _index = require("../config/index");
- var _util = require("@jiaminghi/c-render/lib/plugin/util");
- var _util2 = require("../util");
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
- function radarAxis(chart) {
- var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
- var radar = option.radar;
- var radarAxis = [];
- if (radar) {
- radarAxis = mergeRadarAxisDefaultConfig(radar);
- radarAxis = calcRadarAxisCenter(radarAxis, chart);
- radarAxis = calcRadarAxisRingRadius(radarAxis, chart);
- radarAxis = calcRadarAxisLinePosition(radarAxis);
- radarAxis = calcRadarAxisAreaRadius(radarAxis);
- radarAxis = calcRadarAxisLabelPosition(radarAxis);
- radarAxis = [radarAxis];
- }
- var radarAxisForUpdate = radarAxis;
- if (radarAxis.length && !radarAxis[0].show) radarAxisForUpdate = [];
- (0, _updater.doUpdate)({
- chart: chart,
- series: radarAxisForUpdate,
- key: 'radarAxisSplitArea',
- getGraphConfig: getSplitAreaConfig,
- beforeUpdate: beforeUpdateSplitArea,
- beforeChange: beforeChangeSplitArea
- });
- (0, _updater.doUpdate)({
- chart: chart,
- series: radarAxisForUpdate,
- key: 'radarAxisSplitLine',
- getGraphConfig: getSplitLineConfig,
- beforeUpdate: beforeUpdateSplitLine,
- beforeChange: beforeChangeSplitLine
- });
- (0, _updater.doUpdate)({
- chart: chart,
- series: radarAxisForUpdate,
- key: 'radarAxisLine',
- getGraphConfig: getAxisLineConfig
- });
- (0, _updater.doUpdate)({
- chart: chart,
- series: radarAxisForUpdate,
- key: 'radarAxisLable',
- getGraphConfig: getAxisLabelConfig
- });
- chart.radarAxis = radarAxis[0];
- }
- function mergeRadarAxisDefaultConfig(radar) {
- return (0, _util2.deepMerge)((0, _util.deepClone)(_index.radarAxisConfig), radar);
- }
- function calcRadarAxisCenter(radarAxis, chart) {
- var area = chart.render.area;
- var center = radarAxis.center;
- radarAxis.centerPos = center.map(function (v, i) {
- if (typeof v === 'number') return v;
- return parseInt(v) / 100 * area[i];
- });
- return radarAxis;
- }
- function calcRadarAxisRingRadius(radarAxis, chart) {
- var area = chart.render.area;
- var splitNum = radarAxis.splitNum,
- radius = radarAxis.radius;
- var maxRadius = Math.min.apply(Math, (0, _toConsumableArray2["default"])(area)) / 2;
- if (typeof radius !== 'number') radius = parseInt(radius) / 100 * maxRadius;
- var splitGap = radius / splitNum;
- radarAxis.ringRadius = new Array(splitNum).fill(0).map(function (foo, i) {
- return splitGap * (i + 1);
- });
- radarAxis.radius = radius;
- return radarAxis;
- }
- function calcRadarAxisLinePosition(radarAxis) {
- var indicator = radarAxis.indicator,
- centerPos = radarAxis.centerPos,
- radius = radarAxis.radius,
- startAngle = radarAxis.startAngle;
- var fullAngle = Math.PI * 2;
- var indicatorNum = indicator.length;
- var indicatorGap = fullAngle / indicatorNum;
- var angles = new Array(indicatorNum).fill(0).map(function (foo, i) {
- return indicatorGap * i + startAngle;
- });
- radarAxis.axisLineAngles = angles;
- radarAxis.axisLinePosition = angles.map(function (g) {
- return _util.getCircleRadianPoint.apply(void 0, (0, _toConsumableArray2["default"])(centerPos).concat([radius, g]));
- });
- return radarAxis;
- }
- function calcRadarAxisAreaRadius(radarAxis) {
- var ringRadius = radarAxis.ringRadius;
- var subRadius = ringRadius[0] / 2;
- radarAxis.areaRadius = ringRadius.map(function (r) {
- return r - subRadius;
- });
- return radarAxis;
- }
- function calcRadarAxisLabelPosition(radarAxis) {
- var axisLineAngles = radarAxis.axisLineAngles,
- centerPos = radarAxis.centerPos,
- radius = radarAxis.radius,
- axisLabel = radarAxis.axisLabel;
- radius += axisLabel.labelGap;
- radarAxis.axisLabelPosition = axisLineAngles.map(function (angle) {
- return _util.getCircleRadianPoint.apply(void 0, (0, _toConsumableArray2["default"])(centerPos).concat([radius, angle]));
- });
- return radarAxis;
- }
- function getSplitAreaConfig(radarAxis) {
- var areaRadius = radarAxis.areaRadius,
- polygon = radarAxis.polygon,
- animationCurve = radarAxis.animationCurve,
- animationFrame = radarAxis.animationFrame,
- rLevel = radarAxis.rLevel;
- var name = polygon ? 'regPolygon' : 'ring';
- return areaRadius.map(function (foo, i) {
- return {
- name: name,
- index: rLevel,
- visible: radarAxis.splitArea.show,
- animationCurve: animationCurve,
- animationFrame: animationFrame,
- shape: getSplitAreaShape(radarAxis, i),
- style: getSplitAreaStyle(radarAxis, i)
- };
- });
- }
- function getSplitAreaShape(radarAxis, i) {
- var polygon = radarAxis.polygon,
- areaRadius = radarAxis.areaRadius,
- indicator = radarAxis.indicator,
- centerPos = radarAxis.centerPos;
- var indicatorNum = indicator.length;
- var shape = {
- rx: centerPos[0],
- ry: centerPos[1],
- r: areaRadius[i]
- };
- if (polygon) shape.side = indicatorNum;
- return shape;
- }
- function getSplitAreaStyle(radarAxis, i) {
- var splitArea = radarAxis.splitArea,
- ringRadius = radarAxis.ringRadius,
- axisLineAngles = radarAxis.axisLineAngles,
- polygon = radarAxis.polygon,
- centerPos = radarAxis.centerPos;
- var color = splitArea.color,
- style = splitArea.style;
- style = _objectSpread({
- fill: 'rgba(0, 0, 0, 0)'
- }, style);
- var lineWidth = ringRadius[0] - 0;
- if (polygon) {
- var point1 = _util.getCircleRadianPoint.apply(void 0, (0, _toConsumableArray2["default"])(centerPos).concat([ringRadius[0], axisLineAngles[0]]));
- var point2 = _util.getCircleRadianPoint.apply(void 0, (0, _toConsumableArray2["default"])(centerPos).concat([ringRadius[0], axisLineAngles[1]]));
- lineWidth = (0, _util2.getPointToLineDistance)(centerPos, point1, point2);
- }
- style = (0, _util2.deepMerge)((0, _util.deepClone)(style, true), {
- lineWidth: lineWidth
- });
- if (!color.length) return style;
- var colorNum = color.length;
- return (0, _util2.deepMerge)(style, {
- stroke: color[i % colorNum]
- });
- }
- function beforeUpdateSplitArea(graphs, radarAxis, i, updater) {
- var cache = graphs[i];
- if (!cache) return;
- var render = updater.chart.render;
- var polygon = radarAxis.polygon;
- var name = cache[0].name;
- var currentName = polygon ? 'regPolygon' : 'ring';
- var delAll = currentName !== name;
- if (!delAll) return;
- cache.forEach(function (g) {
- return render.delGraph(g);
- });
- graphs[i] = null;
- }
- function beforeChangeSplitArea(graph, config) {
- var side = config.shape.side;
- if (typeof side !== 'number') return;
- graph.shape.side = side;
- }
- function getSplitLineConfig(radarAxis) {
- var ringRadius = radarAxis.ringRadius,
- polygon = radarAxis.polygon,
- animationCurve = radarAxis.animationCurve,
- animationFrame = radarAxis.animationFrame,
- rLevel = radarAxis.rLevel;
- var name = polygon ? 'regPolygon' : 'ring';
- return ringRadius.map(function (foo, i) {
- return {
- name: name,
- index: rLevel,
- animationCurve: animationCurve,
- animationFrame: animationFrame,
- visible: radarAxis.splitLine.show,
- shape: getSplitLineShape(radarAxis, i),
- style: getSplitLineStyle(radarAxis, i)
- };
- });
- }
- function getSplitLineShape(radarAxis, i) {
- var ringRadius = radarAxis.ringRadius,
- centerPos = radarAxis.centerPos,
- indicator = radarAxis.indicator,
- polygon = radarAxis.polygon;
- var shape = {
- rx: centerPos[0],
- ry: centerPos[1],
- r: ringRadius[i]
- };
- var indicatorNum = indicator.length;
- if (polygon) shape.side = indicatorNum;
- return shape;
- }
- function getSplitLineStyle(radarAxis, i) {
- var splitLine = radarAxis.splitLine;
- var color = splitLine.color,
- style = splitLine.style;
- style = _objectSpread({
- fill: 'rgba(0, 0, 0, 0)'
- }, style);
- if (!color.length) return style;
- var colorNum = color.length;
- return (0, _util2.deepMerge)(style, {
- stroke: color[i % colorNum]
- });
- }
- function beforeUpdateSplitLine(graphs, radarAxis, i, updater) {
- var cache = graphs[i];
- if (!cache) return;
- var render = updater.chart.render;
- var polygon = radarAxis.polygon;
- var name = cache[0].name;
- var currenName = polygon ? 'regPolygon' : 'ring';
- var delAll = currenName !== name;
- if (!delAll) return;
- cache.forEach(function (g) {
- return render.delGraph(g);
- });
- graphs[i] = null;
- }
- function beforeChangeSplitLine(graph, config) {
- var side = config.shape.side;
- if (typeof side !== 'number') return;
- graph.shape.side = side;
- }
- function getAxisLineConfig(radarAxis) {
- var axisLinePosition = radarAxis.axisLinePosition,
- animationCurve = radarAxis.animationCurve,
- animationFrame = radarAxis.animationFrame,
- rLevel = radarAxis.rLevel;
- return axisLinePosition.map(function (foo, i) {
- return {
- name: 'polyline',
- index: rLevel,
- visible: radarAxis.axisLine.show,
- animationCurve: animationCurve,
- animationFrame: animationFrame,
- shape: getAxisLineShape(radarAxis, i),
- style: getAxisLineStyle(radarAxis, i)
- };
- });
- }
- function getAxisLineShape(radarAxis, i) {
- var centerPos = radarAxis.centerPos,
- axisLinePosition = radarAxis.axisLinePosition;
- var points = [centerPos, axisLinePosition[i]];
- return {
- points: points
- };
- }
- function getAxisLineStyle(radarAxis, i) {
- var axisLine = radarAxis.axisLine;
- var color = axisLine.color,
- style = axisLine.style;
- if (!color.length) return style;
- var colorNum = color.length;
- return (0, _util2.deepMerge)(style, {
- stroke: color[i % colorNum]
- });
- }
- function getAxisLabelConfig(radarAxis) {
- var axisLabelPosition = radarAxis.axisLabelPosition,
- animationCurve = radarAxis.animationCurve,
- animationFrame = radarAxis.animationFrame,
- rLevel = radarAxis.rLevel;
- return axisLabelPosition.map(function (foo, i) {
- return {
- name: 'text',
- index: rLevel,
- visible: radarAxis.axisLabel.show,
- animationCurve: animationCurve,
- animationFrame: animationFrame,
- shape: getAxisLableShape(radarAxis, i),
- style: getAxisLableStyle(radarAxis, i)
- };
- });
- }
- function getAxisLableShape(radarAxis, i) {
- var axisLabelPosition = radarAxis.axisLabelPosition,
- indicator = radarAxis.indicator;
- return {
- content: indicator[i].name,
- position: axisLabelPosition[i]
- };
- }
- function getAxisLableStyle(radarAxis, i) {
- var axisLabel = radarAxis.axisLabel,
- _radarAxis$centerPos = (0, _slicedToArray2["default"])(radarAxis.centerPos, 2),
- x = _radarAxis$centerPos[0],
- y = _radarAxis$centerPos[1],
- axisLabelPosition = radarAxis.axisLabelPosition;
- var color = axisLabel.color,
- style = axisLabel.style;
- var _axisLabelPosition$i = (0, _slicedToArray2["default"])(axisLabelPosition[i], 2),
- labelXpos = _axisLabelPosition$i[0],
- labelYPos = _axisLabelPosition$i[1];
- var textAlign = labelXpos > x ? 'left' : 'right';
- var textBaseline = labelYPos > y ? 'top' : 'bottom';
- style = (0, _util2.deepMerge)({
- textAlign: textAlign,
- textBaseline: textBaseline
- }, style);
- if (!color.length) return style;
- var colorNum = color.length;
- return (0, _util2.deepMerge)(style, {
- fill: color[i % colorNum]
- });
- }
|