UNPKG

cione-comp-lib

Version:

`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`

158 lines (157 loc) 6.01 kB
import { __extends } from "../../../../tslib/tslib.es6.mjs"; import { map, each, isArray, defaults } from "../../../../zrender/lib/core/util.mjs"; import AxisBuilder from "../axis/AxisBuilder.mjs"; import { mergePath } from "../../util/graphic.mjs"; import ComponentView from "../../view/Component.mjs"; import Circle from "../../../../zrender/lib/graphic/shape/Circle.mjs"; import Ring from "../../../../zrender/lib/graphic/shape/Ring.mjs"; import Polyline from "../../../../zrender/lib/graphic/shape/Polyline.mjs"; import Polygon from "../../../../zrender/lib/graphic/shape/Polygon.mjs"; var axisBuilderAttrs = ["axisLine", "axisTickLabel", "axisName"]; var RadarView = function(_super) { __extends(RadarView2, _super); function RadarView2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = RadarView2.type; return _this; } RadarView2.prototype.render = function(radarModel, ecModel, api) { var group = this.group; group.removeAll(); this._buildAxes(radarModel); this._buildSplitLineAndArea(radarModel); }; RadarView2.prototype._buildAxes = function(radarModel) { var radar = radarModel.coordinateSystem; var indicatorAxes = radar.getIndicatorAxes(); var axisBuilders = map(indicatorAxes, function(indicatorAxis) { var axisName = indicatorAxis.model.get("showName") ? indicatorAxis.name : ""; var axisBuilder = new AxisBuilder(indicatorAxis.model, { axisName, position: [radar.cx, radar.cy], rotation: indicatorAxis.angle, labelDirection: -1, tickDirection: -1, nameDirection: 1 }); return axisBuilder; }); each(axisBuilders, function(axisBuilder) { each(axisBuilderAttrs, axisBuilder.add, axisBuilder); this.group.add(axisBuilder.getGroup()); }, this); }; RadarView2.prototype._buildSplitLineAndArea = function(radarModel) { var radar = radarModel.coordinateSystem; var indicatorAxes = radar.getIndicatorAxes(); if (!indicatorAxes.length) { return; } var shape = radarModel.get("shape"); var splitLineModel = radarModel.getModel("splitLine"); var splitAreaModel = radarModel.getModel("splitArea"); var lineStyleModel = splitLineModel.getModel("lineStyle"); var areaStyleModel = splitAreaModel.getModel("areaStyle"); var showSplitLine = splitLineModel.get("show"); var showSplitArea = splitAreaModel.get("show"); var splitLineColors = lineStyleModel.get("color"); var splitAreaColors = areaStyleModel.get("color"); var splitLineColorsArr = isArray(splitLineColors) ? splitLineColors : [splitLineColors]; var splitAreaColorsArr = isArray(splitAreaColors) ? splitAreaColors : [splitAreaColors]; var splitLines = []; var splitAreas = []; function getColorIndex(areaOrLine, areaOrLineColorList, idx) { var colorIndex2 = idx % areaOrLineColorList.length; areaOrLine[colorIndex2] = areaOrLine[colorIndex2] || []; return colorIndex2; } if (shape === "circle") { var ticksRadius = indicatorAxes[0].getTicksCoords(); var cx = radar.cx; var cy = radar.cy; for (var i = 0; i < ticksRadius.length; i++) { if (showSplitLine) { var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i); splitLines[colorIndex].push(new Circle({ shape: { cx, cy, r: ticksRadius[i].coord } })); } if (showSplitArea && i < ticksRadius.length - 1) { var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i); splitAreas[colorIndex].push(new Ring({ shape: { cx, cy, r0: ticksRadius[i].coord, r: ticksRadius[i + 1].coord } })); } } } else { var realSplitNumber_1; var axesTicksPoints = map(indicatorAxes, function(indicatorAxis, idx) { var ticksCoords = indicatorAxis.getTicksCoords(); realSplitNumber_1 = realSplitNumber_1 == null ? ticksCoords.length - 1 : Math.min(ticksCoords.length - 1, realSplitNumber_1); return map(ticksCoords, function(tickCoord) { return radar.coordToPoint(tickCoord.coord, idx); }); }); var prevPoints = []; for (var i = 0; i <= realSplitNumber_1; i++) { var points = []; for (var j = 0; j < indicatorAxes.length; j++) { points.push(axesTicksPoints[j][i]); } if (points[0]) { points.push(points[0].slice()); } if (showSplitLine) { var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i); splitLines[colorIndex].push(new Polyline({ shape: { points } })); } if (showSplitArea && prevPoints) { var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i - 1); splitAreas[colorIndex].push(new Polygon({ shape: { points: points.concat(prevPoints) } })); } prevPoints = points.slice().reverse(); } } var lineStyle = lineStyleModel.getLineStyle(); var areaStyle = areaStyleModel.getAreaStyle(); each(splitAreas, function(splitAreas2, idx) { this.group.add(mergePath(splitAreas2, { style: defaults({ stroke: "none", fill: splitAreaColorsArr[idx % splitAreaColorsArr.length] }, areaStyle), silent: true })); }, this); each(splitLines, function(splitLines2, idx) { this.group.add(mergePath(splitLines2, { style: defaults({ fill: "none", stroke: splitLineColorsArr[idx % splitLineColorsArr.length] }, lineStyle), silent: true })); }, this); }; RadarView2.type = "radar"; return RadarView2; }(ComponentView); var RadarView$1 = RadarView; export { RadarView$1 as default };