123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- /*
- * 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 echarts from '../../../core/echarts.js';
- import * as zrUtil from 'zrender/lib/core/util.js';
- import { ToolboxFeature } from '../featureManager.js';
- import { SINGLE_REFERRING } from '../../../util/model.js';
- var INNER_STACK_KEYWORD = '__ec_magicType_stack__';
- var ICON_TYPES = ['line', 'bar', 'stack']; // stack and tiled appears in pair for the title
- var TITLE_TYPES = ['line', 'bar', 'stack', 'tiled'];
- var radioTypes = [['line', 'bar'], ['stack']];
- var MagicType =
- /** @class */
- function (_super) {
- __extends(MagicType, _super);
- function MagicType() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- MagicType.prototype.getIcons = function () {
- var model = this.model;
- var availableIcons = model.get('icon');
- var icons = {};
- zrUtil.each(model.get('type'), function (type) {
- if (availableIcons[type]) {
- icons[type] = availableIcons[type];
- }
- });
- return icons;
- };
- MagicType.getDefaultOption = function (ecModel) {
- var defaultOption = {
- show: true,
- type: [],
- // Icon group
- icon: {
- line: 'M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4',
- bar: 'M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7',
- // eslint-disable-next-line
- stack: 'M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z' // jshint ignore:line
- },
- // `line`, `bar`, `stack`, `tiled`
- title: ecModel.getLocaleModel().get(['toolbox', 'magicType', 'title']),
- option: {},
- seriesIndex: {}
- };
- return defaultOption;
- };
- MagicType.prototype.onclick = function (ecModel, api, type) {
- var model = this.model;
- var seriesIndex = model.get(['seriesIndex', type]); // Not supported magicType
- if (!seriesOptGenreator[type]) {
- return;
- }
- var newOption = {
- series: []
- };
- var generateNewSeriesTypes = function (seriesModel) {
- var seriesType = seriesModel.subType;
- var seriesId = seriesModel.id;
- var newSeriesOpt = seriesOptGenreator[type](seriesType, seriesId, seriesModel, model);
- if (newSeriesOpt) {
- // PENDING If merge original option?
- zrUtil.defaults(newSeriesOpt, seriesModel.option);
- newOption.series.push(newSeriesOpt);
- } // Modify boundaryGap
- var coordSys = seriesModel.coordinateSystem;
- if (coordSys && coordSys.type === 'cartesian2d' && (type === 'line' || type === 'bar')) {
- var categoryAxis = coordSys.getAxesByScale('ordinal')[0];
- if (categoryAxis) {
- var axisDim = categoryAxis.dim;
- var axisType = axisDim + 'Axis';
- var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0];
- var axisIndex = axisModel.componentIndex;
- newOption[axisType] = newOption[axisType] || [];
- for (var i = 0; i <= axisIndex; i++) {
- newOption[axisType][axisIndex] = newOption[axisType][axisIndex] || {};
- }
- newOption[axisType][axisIndex].boundaryGap = type === 'bar';
- }
- }
- };
- zrUtil.each(radioTypes, function (radio) {
- if (zrUtil.indexOf(radio, type) >= 0) {
- zrUtil.each(radio, function (item) {
- model.setIconStatus(item, 'normal');
- });
- }
- });
- model.setIconStatus(type, 'emphasis');
- ecModel.eachComponent({
- mainType: 'series',
- query: seriesIndex == null ? null : {
- seriesIndex: seriesIndex
- }
- }, generateNewSeriesTypes);
- var newTitle;
- var currentType = type; // Change title of stack
- if (type === 'stack') {
- // use titles in model instead of ecModel
- // as stack and tiled appears in pair, just flip them
- // no need of checking stack state
- newTitle = zrUtil.merge({
- stack: model.option.title.tiled,
- tiled: model.option.title.stack
- }, model.option.title);
- if (model.get(['iconStatus', type]) !== 'emphasis') {
- currentType = 'tiled';
- }
- }
- api.dispatchAction({
- type: 'changeMagicType',
- currentType: currentType,
- newOption: newOption,
- newTitle: newTitle,
- featureName: 'magicType'
- });
- };
- return MagicType;
- }(ToolboxFeature);
- var seriesOptGenreator = {
- 'line': function (seriesType, seriesId, seriesModel, model) {
- if (seriesType === 'bar') {
- return zrUtil.merge({
- id: seriesId,
- type: 'line',
- // Preserve data related option
- data: seriesModel.get('data'),
- stack: seriesModel.get('stack'),
- markPoint: seriesModel.get('markPoint'),
- markLine: seriesModel.get('markLine')
- }, model.get(['option', 'line']) || {}, true);
- }
- },
- 'bar': function (seriesType, seriesId, seriesModel, model) {
- if (seriesType === 'line') {
- return zrUtil.merge({
- id: seriesId,
- type: 'bar',
- // Preserve data related option
- data: seriesModel.get('data'),
- stack: seriesModel.get('stack'),
- markPoint: seriesModel.get('markPoint'),
- markLine: seriesModel.get('markLine')
- }, model.get(['option', 'bar']) || {}, true);
- }
- },
- 'stack': function (seriesType, seriesId, seriesModel, model) {
- var isStack = seriesModel.get('stack') === INNER_STACK_KEYWORD;
- if (seriesType === 'line' || seriesType === 'bar') {
- model.setIconStatus('stack', isStack ? 'normal' : 'emphasis');
- return zrUtil.merge({
- id: seriesId,
- stack: isStack ? '' : INNER_STACK_KEYWORD
- }, model.get(['option', 'stack']) || {}, true);
- }
- }
- }; // TODO: SELF REGISTERED.
- echarts.registerAction({
- type: 'changeMagicType',
- event: 'magicTypeChanged',
- update: 'prepareAndUpdate'
- }, function (payload, ecModel) {
- ecModel.mergeOption(payload.newOption);
- });
- export default MagicType;
|