123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317 |
- /*
- * 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 Model from '../../model/Model.js';
- import { isNameSpecified } from '../../util/model.js';
- import ComponentModel from '../../model/Component.js';
- var getDefaultSelectorOptions = function (ecModel, type) {
- if (type === 'all') {
- return {
- type: 'all',
- title: ecModel.getLocaleModel().get(['legend', 'selector', 'all'])
- };
- } else if (type === 'inverse') {
- return {
- type: 'inverse',
- title: ecModel.getLocaleModel().get(['legend', 'selector', 'inverse'])
- };
- }
- };
- var LegendModel = /** @class */function (_super) {
- __extends(LegendModel, _super);
- function LegendModel() {
- var _this = _super !== null && _super.apply(this, arguments) || this;
- _this.type = LegendModel.type;
- _this.layoutMode = {
- type: 'box',
- // legend.width/height are maxWidth/maxHeight actually,
- // whereas real width/height is calculated by its content.
- // (Setting {left: 10, right: 10} does not make sense).
- // So consider the case:
- // `setOption({legend: {left: 10});`
- // then `setOption({legend: {right: 10});`
- // The previous `left` should be cleared by setting `ignoreSize`.
- ignoreSize: true
- };
- return _this;
- }
- LegendModel.prototype.init = function (option, parentModel, ecModel) {
- this.mergeDefaultAndTheme(option, ecModel);
- option.selected = option.selected || {};
- this._updateSelector(option);
- };
- LegendModel.prototype.mergeOption = function (option, ecModel) {
- _super.prototype.mergeOption.call(this, option, ecModel);
- this._updateSelector(option);
- };
- LegendModel.prototype._updateSelector = function (option) {
- var selector = option.selector;
- var ecModel = this.ecModel;
- if (selector === true) {
- selector = option.selector = ['all', 'inverse'];
- }
- if (zrUtil.isArray(selector)) {
- zrUtil.each(selector, function (item, index) {
- zrUtil.isString(item) && (item = {
- type: item
- });
- selector[index] = zrUtil.merge(item, getDefaultSelectorOptions(ecModel, item.type));
- });
- }
- };
- LegendModel.prototype.optionUpdated = function () {
- this._updateData(this.ecModel);
- var legendData = this._data;
- // If selectedMode is single, try to select one
- if (legendData[0] && this.get('selectedMode') === 'single') {
- var hasSelected = false;
- // If has any selected in option.selected
- for (var i = 0; i < legendData.length; i++) {
- var name_1 = legendData[i].get('name');
- if (this.isSelected(name_1)) {
- // Force to unselect others
- this.select(name_1);
- hasSelected = true;
- break;
- }
- }
- // Try select the first if selectedMode is single
- !hasSelected && this.select(legendData[0].get('name'));
- }
- };
- LegendModel.prototype._updateData = function (ecModel) {
- var potentialData = [];
- var availableNames = [];
- ecModel.eachRawSeries(function (seriesModel) {
- var seriesName = seriesModel.name;
- availableNames.push(seriesName);
- var isPotential;
- if (seriesModel.legendVisualProvider) {
- var provider = seriesModel.legendVisualProvider;
- var names = provider.getAllNames();
- if (!ecModel.isSeriesFiltered(seriesModel)) {
- availableNames = availableNames.concat(names);
- }
- if (names.length) {
- potentialData = potentialData.concat(names);
- } else {
- isPotential = true;
- }
- } else {
- isPotential = true;
- }
- if (isPotential && isNameSpecified(seriesModel)) {
- potentialData.push(seriesModel.name);
- }
- });
- /**
- * @type {Array.<string>}
- * @private
- */
- this._availableNames = availableNames;
- // If legend.data is not specified in option, use availableNames as data,
- // which is convenient for user preparing option.
- var rawData = this.get('data') || potentialData;
- var legendNameMap = zrUtil.createHashMap();
- var legendData = zrUtil.map(rawData, function (dataItem) {
- // Can be string or number
- if (zrUtil.isString(dataItem) || zrUtil.isNumber(dataItem)) {
- dataItem = {
- name: dataItem
- };
- }
- if (legendNameMap.get(dataItem.name)) {
- // remove legend name duplicate
- return null;
- }
- legendNameMap.set(dataItem.name, true);
- return new Model(dataItem, this, this.ecModel);
- }, this);
- /**
- * @type {Array.<module:echarts/model/Model>}
- * @private
- */
- this._data = zrUtil.filter(legendData, function (item) {
- return !!item;
- });
- };
- LegendModel.prototype.getData = function () {
- return this._data;
- };
- LegendModel.prototype.select = function (name) {
- var selected = this.option.selected;
- var selectedMode = this.get('selectedMode');
- if (selectedMode === 'single') {
- var data = this._data;
- zrUtil.each(data, function (dataItem) {
- selected[dataItem.get('name')] = false;
- });
- }
- selected[name] = true;
- };
- LegendModel.prototype.unSelect = function (name) {
- if (this.get('selectedMode') !== 'single') {
- this.option.selected[name] = false;
- }
- };
- LegendModel.prototype.toggleSelected = function (name) {
- var selected = this.option.selected;
- // Default is true
- if (!selected.hasOwnProperty(name)) {
- selected[name] = true;
- }
- this[selected[name] ? 'unSelect' : 'select'](name);
- };
- LegendModel.prototype.allSelect = function () {
- var data = this._data;
- var selected = this.option.selected;
- zrUtil.each(data, function (dataItem) {
- selected[dataItem.get('name', true)] = true;
- });
- };
- LegendModel.prototype.inverseSelect = function () {
- var data = this._data;
- var selected = this.option.selected;
- zrUtil.each(data, function (dataItem) {
- var name = dataItem.get('name', true);
- // Initially, default value is true
- if (!selected.hasOwnProperty(name)) {
- selected[name] = true;
- }
- selected[name] = !selected[name];
- });
- };
- LegendModel.prototype.isSelected = function (name) {
- var selected = this.option.selected;
- return !(selected.hasOwnProperty(name) && !selected[name]) && zrUtil.indexOf(this._availableNames, name) >= 0;
- };
- LegendModel.prototype.getOrient = function () {
- return this.get('orient') === 'vertical' ? {
- index: 1,
- name: 'vertical'
- } : {
- index: 0,
- name: 'horizontal'
- };
- };
- LegendModel.type = 'legend.plain';
- LegendModel.dependencies = ['series'];
- LegendModel.defaultOption = {
- // zlevel: 0,
- z: 4,
- show: true,
- orient: 'horizontal',
- left: 'center',
- // right: 'center',
- top: 0,
- // bottom: null,
- align: 'auto',
- backgroundColor: 'rgba(0,0,0,0)',
- borderColor: '#ccc',
- borderRadius: 0,
- borderWidth: 0,
- padding: 5,
- itemGap: 10,
- itemWidth: 25,
- itemHeight: 14,
- symbolRotate: 'inherit',
- symbolKeepAspect: true,
- inactiveColor: '#ccc',
- inactiveBorderColor: '#ccc',
- inactiveBorderWidth: 'auto',
- itemStyle: {
- color: 'inherit',
- opacity: 'inherit',
- borderColor: 'inherit',
- borderWidth: 'auto',
- borderCap: 'inherit',
- borderJoin: 'inherit',
- borderDashOffset: 'inherit',
- borderMiterLimit: 'inherit'
- },
- lineStyle: {
- width: 'auto',
- color: 'inherit',
- inactiveColor: '#ccc',
- inactiveWidth: 2,
- opacity: 'inherit',
- type: 'inherit',
- cap: 'inherit',
- join: 'inherit',
- dashOffset: 'inherit',
- miterLimit: 'inherit'
- },
- textStyle: {
- color: '#333'
- },
- selectedMode: true,
- selector: false,
- selectorLabel: {
- show: true,
- borderRadius: 10,
- padding: [3, 5, 3, 5],
- fontSize: 12,
- fontFamily: 'sans-serif',
- color: '#666',
- borderWidth: 1,
- borderColor: '#666'
- },
- emphasis: {
- selectorLabel: {
- show: true,
- color: '#eee',
- backgroundColor: '#666'
- }
- },
- selectorPosition: 'auto',
- selectorItemGap: 7,
- selectorButtonGap: 10,
- tooltip: {
- show: false
- }
- };
- return LegendModel;
- }(ComponentModel);
- export default LegendModel;
|