| 
/* 
 | 
* 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; 
 |