123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- /*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
- /**
- * AUTO-GENERATED FILE. DO NOT MODIFY.
- */
- /*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
- import { __extends } from "tslib";
- import * as zrUtil from 'zrender/lib/core/util.js';
- import AxisBuilder from '../axis/AxisBuilder.js';
- import * as graphic from '../../util/graphic.js';
- import ComponentView from '../../view/Component.js';
- var axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];
- var RadarView = /** @class */function (_super) {
- __extends(RadarView, _super);
- function RadarView() {
- var _this = _super !== null && _super.apply(this, arguments) || this;
- _this.type = RadarView.type;
- return _this;
- }
- RadarView.prototype.render = function (radarModel, ecModel, api) {
- var group = this.group;
- group.removeAll();
- this._buildAxes(radarModel);
- this._buildSplitLineAndArea(radarModel);
- };
- RadarView.prototype._buildAxes = function (radarModel) {
- var radar = radarModel.coordinateSystem;
- var indicatorAxes = radar.getIndicatorAxes();
- var axisBuilders = zrUtil.map(indicatorAxes, function (indicatorAxis) {
- var axisName = indicatorAxis.model.get('showName') ? indicatorAxis.name : ''; // hide name
- var axisBuilder = new AxisBuilder(indicatorAxis.model, {
- axisName: axisName,
- position: [radar.cx, radar.cy],
- rotation: indicatorAxis.angle,
- labelDirection: -1,
- tickDirection: -1,
- nameDirection: 1
- });
- return axisBuilder;
- });
- zrUtil.each(axisBuilders, function (axisBuilder) {
- zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);
- this.group.add(axisBuilder.getGroup());
- }, this);
- };
- RadarView.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 = zrUtil.isArray(splitLineColors) ? splitLineColors : [splitLineColors];
- var splitAreaColorsArr = zrUtil.isArray(splitAreaColors) ? splitAreaColors : [splitAreaColors];
- var splitLines = [];
- var splitAreas = [];
- function getColorIndex(areaOrLine, areaOrLineColorList, idx) {
- var colorIndex = idx % areaOrLineColorList.length;
- areaOrLine[colorIndex] = areaOrLine[colorIndex] || [];
- return colorIndex;
- }
- 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 graphic.Circle({
- shape: {
- cx: cx,
- cy: cy,
- r: ticksRadius[i].coord
- }
- }));
- }
- if (showSplitArea && i < ticksRadius.length - 1) {
- var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i);
- splitAreas[colorIndex].push(new graphic.Ring({
- shape: {
- cx: cx,
- cy: cy,
- r0: ticksRadius[i].coord,
- r: ticksRadius[i + 1].coord
- }
- }));
- }
- }
- }
- // Polyyon
- else {
- var realSplitNumber_1;
- var axesTicksPoints = zrUtil.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 zrUtil.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]);
- }
- // Close
- if (points[0]) {
- points.push(points[0].slice());
- } else {
- if (process.env.NODE_ENV !== 'production') {
- console.error('Can\'t draw value axis ' + i);
- }
- }
- if (showSplitLine) {
- var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i);
- splitLines[colorIndex].push(new graphic.Polyline({
- shape: {
- points: points
- }
- }));
- }
- if (showSplitArea && prevPoints) {
- var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i - 1);
- splitAreas[colorIndex].push(new graphic.Polygon({
- shape: {
- points: points.concat(prevPoints)
- }
- }));
- }
- prevPoints = points.slice().reverse();
- }
- }
- var lineStyle = lineStyleModel.getLineStyle();
- var areaStyle = areaStyleModel.getAreaStyle();
- // Add splitArea before splitLine
- zrUtil.each(splitAreas, function (splitAreas, idx) {
- this.group.add(graphic.mergePath(splitAreas, {
- style: zrUtil.defaults({
- stroke: 'none',
- fill: splitAreaColorsArr[idx % splitAreaColorsArr.length]
- }, areaStyle),
- silent: true
- }));
- }, this);
- zrUtil.each(splitLines, function (splitLines, idx) {
- this.group.add(graphic.mergePath(splitLines, {
- style: zrUtil.defaults({
- fill: 'none',
- stroke: splitLineColorsArr[idx % splitLineColorsArr.length]
- }, lineStyle),
- silent: true
- }));
- }, this);
- };
- RadarView.type = 'radar';
- return RadarView;
- }(ComponentView);
- export default RadarView;
|