123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- /*
- * 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 graphic from '../../util/graphic.js';
- import { setStatesStylesFromModel, toggleHoverEmphasis } from '../../util/states.js';
- import * as zrUtil from 'zrender/lib/core/util.js';
- import * as symbolUtil from '../../util/symbol.js';
- import ChartView from '../../view/Chart.js';
- import { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle.js';
- import ZRImage from 'zrender/lib/graphic/Image.js';
- import { saveOldStyle } from '../../animation/basicTransition.js';
- 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 (seriesModel, ecModel, api) {
- var polar = seriesModel.coordinateSystem;
- var group = this.group;
- var data = seriesModel.getData();
- var oldData = this._data;
- function createSymbol(data, idx) {
- var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';
- if (symbolType === 'none') {
- return;
- }
- var symbolSize = symbolUtil.normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize'));
- var symbolPath = symbolUtil.createSymbol(symbolType, -1, -1, 2, 2);
- var symbolRotate = data.getItemVisual(idx, 'symbolRotate') || 0;
- symbolPath.attr({
- style: {
- strokeNoScale: true
- },
- z2: 100,
- scaleX: symbolSize[0] / 2,
- scaleY: symbolSize[1] / 2,
- rotation: symbolRotate * Math.PI / 180 || 0
- });
- return symbolPath;
- }
- function updateSymbols(oldPoints, newPoints, symbolGroup, data, idx, isInit) {
- // Simply rerender all
- symbolGroup.removeAll();
- for (var i = 0; i < newPoints.length - 1; i++) {
- var symbolPath = createSymbol(data, idx);
- if (symbolPath) {
- symbolPath.__dimIdx = i;
- if (oldPoints[i]) {
- symbolPath.setPosition(oldPoints[i]);
- graphic[isInit ? 'initProps' : 'updateProps'](symbolPath, {
- x: newPoints[i][0],
- y: newPoints[i][1]
- }, seriesModel, idx);
- } else {
- symbolPath.setPosition(newPoints[i]);
- }
- symbolGroup.add(symbolPath);
- }
- }
- }
- function getInitialPoints(points) {
- return zrUtil.map(points, function (pt) {
- return [polar.cx, polar.cy];
- });
- }
- data.diff(oldData).add(function (idx) {
- var points = data.getItemLayout(idx);
- if (!points) {
- return;
- }
- var polygon = new graphic.Polygon();
- var polyline = new graphic.Polyline();
- var target = {
- shape: {
- points: points
- }
- };
- polygon.shape.points = getInitialPoints(points);
- polyline.shape.points = getInitialPoints(points);
- graphic.initProps(polygon, target, seriesModel, idx);
- graphic.initProps(polyline, target, seriesModel, idx);
- var itemGroup = new graphic.Group();
- var symbolGroup = new graphic.Group();
- itemGroup.add(polyline);
- itemGroup.add(polygon);
- itemGroup.add(symbolGroup);
- updateSymbols(polyline.shape.points, points, symbolGroup, data, idx, true);
- data.setItemGraphicEl(idx, itemGroup);
- }).update(function (newIdx, oldIdx) {
- var itemGroup = oldData.getItemGraphicEl(oldIdx);
- var polyline = itemGroup.childAt(0);
- var polygon = itemGroup.childAt(1);
- var symbolGroup = itemGroup.childAt(2);
- var target = {
- shape: {
- points: data.getItemLayout(newIdx)
- }
- };
- if (!target.shape.points) {
- return;
- }
- updateSymbols(polyline.shape.points, target.shape.points, symbolGroup, data, newIdx, false);
- saveOldStyle(polygon);
- saveOldStyle(polyline);
- graphic.updateProps(polyline, target, seriesModel);
- graphic.updateProps(polygon, target, seriesModel);
- data.setItemGraphicEl(newIdx, itemGroup);
- }).remove(function (idx) {
- group.remove(oldData.getItemGraphicEl(idx));
- }).execute();
- data.eachItemGraphicEl(function (itemGroup, idx) {
- var itemModel = data.getItemModel(idx);
- var polyline = itemGroup.childAt(0);
- var polygon = itemGroup.childAt(1);
- var symbolGroup = itemGroup.childAt(2);
- // Radar uses the visual encoded from itemStyle.
- var itemStyle = data.getItemVisual(idx, 'style');
- var color = itemStyle.fill;
- group.add(itemGroup);
- polyline.useStyle(zrUtil.defaults(itemModel.getModel('lineStyle').getLineStyle(), {
- fill: 'none',
- stroke: color
- }));
- setStatesStylesFromModel(polyline, itemModel, 'lineStyle');
- setStatesStylesFromModel(polygon, itemModel, 'areaStyle');
- var areaStyleModel = itemModel.getModel('areaStyle');
- var polygonIgnore = areaStyleModel.isEmpty() && areaStyleModel.parentModel.isEmpty();
- polygon.ignore = polygonIgnore;
- zrUtil.each(['emphasis', 'select', 'blur'], function (stateName) {
- var stateModel = itemModel.getModel([stateName, 'areaStyle']);
- var stateIgnore = stateModel.isEmpty() && stateModel.parentModel.isEmpty();
- // Won't be ignore if normal state is not ignore.
- polygon.ensureState(stateName).ignore = stateIgnore && polygonIgnore;
- });
- polygon.useStyle(zrUtil.defaults(areaStyleModel.getAreaStyle(), {
- fill: color,
- opacity: 0.7,
- decal: itemStyle.decal
- }));
- var emphasisModel = itemModel.getModel('emphasis');
- var itemHoverStyle = emphasisModel.getModel('itemStyle').getItemStyle();
- symbolGroup.eachChild(function (symbolPath) {
- if (symbolPath instanceof ZRImage) {
- var pathStyle = symbolPath.style;
- symbolPath.useStyle(zrUtil.extend({
- // TODO other properties like x, y ?
- image: pathStyle.image,
- x: pathStyle.x,
- y: pathStyle.y,
- width: pathStyle.width,
- height: pathStyle.height
- }, itemStyle));
- } else {
- symbolPath.useStyle(itemStyle);
- symbolPath.setColor(color);
- symbolPath.style.strokeNoScale = true;
- }
- var pathEmphasisState = symbolPath.ensureState('emphasis');
- pathEmphasisState.style = zrUtil.clone(itemHoverStyle);
- var defaultText = data.getStore().get(data.getDimensionIndex(symbolPath.__dimIdx), idx);
- (defaultText == null || isNaN(defaultText)) && (defaultText = '');
- setLabelStyle(symbolPath, getLabelStatesModels(itemModel), {
- labelFetcher: data.hostModel,
- labelDataIndex: idx,
- labelDimIndex: symbolPath.__dimIdx,
- defaultText: defaultText,
- inheritColor: color,
- defaultOpacity: itemStyle.opacity
- });
- });
- toggleHoverEmphasis(itemGroup, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled'));
- });
- this._data = data;
- };
- RadarView.prototype.remove = function () {
- this.group.removeAll();
- this._data = null;
- };
- RadarView.type = 'radar';
- return RadarView;
- }(ChartView);
- export default RadarView;
|