123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- /*
- * 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.
- */
- /**
- * @file Visual solution, for consistent option specification.
- */
- import * as zrUtil from 'zrender/lib/core/util.js';
- import VisualMapping from './VisualMapping.js';
- import { getItemVisualFromData, setItemVisualFromData } from './helper.js';
- var each = zrUtil.each;
- function hasKeys(obj) {
- if (obj) {
- for (var name_1 in obj) {
- if (obj.hasOwnProperty(name_1)) {
- return true;
- }
- }
- }
- }
- export function createVisualMappings(option, stateList, supplementVisualOption) {
- var visualMappings = {};
- each(stateList, function (state) {
- var mappings = visualMappings[state] = createMappings();
- each(option[state], function (visualData, visualType) {
- if (!VisualMapping.isValidType(visualType)) {
- return;
- }
- var mappingOption = {
- type: visualType,
- visual: visualData
- };
- supplementVisualOption && supplementVisualOption(mappingOption, state);
- mappings[visualType] = new VisualMapping(mappingOption);
- // Prepare a alpha for opacity, for some case that opacity
- // is not supported, such as rendering using gradient color.
- if (visualType === 'opacity') {
- mappingOption = zrUtil.clone(mappingOption);
- mappingOption.type = 'colorAlpha';
- mappings.__hidden.__alphaForOpacity = new VisualMapping(mappingOption);
- }
- });
- });
- return visualMappings;
- function createMappings() {
- var Creater = function () {};
- // Make sure hidden fields will not be visited by
- // object iteration (with hasOwnProperty checking).
- Creater.prototype.__hidden = Creater.prototype;
- var obj = new Creater();
- return obj;
- }
- }
- export function replaceVisualOption(thisOption, newOption, keys) {
- // Visual attributes merge is not supported, otherwise it
- // brings overcomplicated merge logic. See #2853. So if
- // newOption has anyone of these keys, all of these keys
- // will be reset. Otherwise, all keys remain.
- var has;
- zrUtil.each(keys, function (key) {
- if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {
- has = true;
- }
- });
- has && zrUtil.each(keys, function (key) {
- if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {
- thisOption[key] = zrUtil.clone(newOption[key]);
- } else {
- delete thisOption[key];
- }
- });
- }
- /**
- * @param stateList
- * @param visualMappings
- * @param list
- * @param getValueState param: valueOrIndex, return: state.
- * @param scope Scope for getValueState
- * @param dimension Concrete dimension, if used.
- */
- // ???! handle brush?
- export function applyVisual(stateList, visualMappings, data, getValueState, scope, dimension) {
- var visualTypesMap = {};
- zrUtil.each(stateList, function (state) {
- var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);
- visualTypesMap[state] = visualTypes;
- });
- var dataIndex;
- function getVisual(key) {
- return getItemVisualFromData(data, dataIndex, key);
- }
- function setVisual(key, value) {
- setItemVisualFromData(data, dataIndex, key, value);
- }
- if (dimension == null) {
- data.each(eachItem);
- } else {
- data.each([dimension], eachItem);
- }
- function eachItem(valueOrIndex, index) {
- dataIndex = dimension == null ? valueOrIndex // First argument is index
- : index;
- var rawDataItem = data.getRawDataItem(dataIndex);
- // Consider performance
- // @ts-ignore
- if (rawDataItem && rawDataItem.visualMap === false) {
- return;
- }
- var valueState = getValueState.call(scope, valueOrIndex);
- var mappings = visualMappings[valueState];
- var visualTypes = visualTypesMap[valueState];
- for (var i = 0, len = visualTypes.length; i < len; i++) {
- var type = visualTypes[i];
- mappings[type] && mappings[type].applyVisual(valueOrIndex, getVisual, setVisual);
- }
- }
- }
- /**
- * @param data
- * @param stateList
- * @param visualMappings <state, Object.<visualType, module:echarts/visual/VisualMapping>>
- * @param getValueState param: valueOrIndex, return: state.
- * @param dim dimension or dimension index.
- */
- export function incrementalApplyVisual(stateList, visualMappings, getValueState, dim) {
- var visualTypesMap = {};
- zrUtil.each(stateList, function (state) {
- var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);
- visualTypesMap[state] = visualTypes;
- });
- return {
- progress: function progress(params, data) {
- var dimIndex;
- if (dim != null) {
- dimIndex = data.getDimensionIndex(dim);
- }
- function getVisual(key) {
- return getItemVisualFromData(data, dataIndex, key);
- }
- function setVisual(key, value) {
- setItemVisualFromData(data, dataIndex, key, value);
- }
- var dataIndex;
- var store = data.getStore();
- while ((dataIndex = params.next()) != null) {
- var rawDataItem = data.getRawDataItem(dataIndex);
- // Consider performance
- // @ts-ignore
- if (rawDataItem && rawDataItem.visualMap === false) {
- continue;
- }
- var value = dim != null ? store.get(dimIndex, dataIndex) : dataIndex;
- var valueState = getValueState(value);
- var mappings = visualMappings[valueState];
- var visualTypes = visualTypesMap[valueState];
- for (var i = 0, len = visualTypes.length; i < len; i++) {
- var type = visualTypes[i];
- mappings[type] && mappings[type].applyVisual(value, getVisual, setVisual);
- }
- }
- }
- };
- }
|