Blame view

node_modules/echarts/src/component/visualMap/visualEncoding.js 3.79 KB
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
  /*
  * 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 * as echarts from '../../echarts';
  import * as zrUtil from 'zrender/src/core/util';
  import * as visualSolution from '../../visual/visualSolution';
  import VisualMapping from '../../visual/VisualMapping';
  
  var VISUAL_PRIORITY = echarts.PRIORITY.VISUAL.COMPONENT;
  
  echarts.registerVisual(VISUAL_PRIORITY, {
      createOnAllSeries: true,
      reset: function (seriesModel, ecModel) {
          var resetDefines = [];
          ecModel.eachComponent('visualMap', function (visualMapModel) {
              var pipelineContext = seriesModel.pipelineContext;
              if (!visualMapModel.isTargetSeries(seriesModel)
                  || (pipelineContext && pipelineContext.large)
              ) {
                  return;
              }
  
              resetDefines.push(visualSolution.incrementalApplyVisual(
                  visualMapModel.stateList,
                  visualMapModel.targetVisuals,
                  zrUtil.bind(visualMapModel.getValueState, visualMapModel),
                  visualMapModel.getDataDimension(seriesModel.getData())
              ));
          });
  
          return resetDefines;
      }
  });
  
  // Only support color.
  echarts.registerVisual(VISUAL_PRIORITY, {
      createOnAllSeries: true,
      reset: function (seriesModel, ecModel) {
          var data = seriesModel.getData();
          var visualMetaList = [];
  
          ecModel.eachComponent('visualMap', function (visualMapModel) {
              if (visualMapModel.isTargetSeries(seriesModel)) {
                  var visualMeta = visualMapModel.getVisualMeta(
                      zrUtil.bind(getColorVisual, null, seriesModel, visualMapModel)
                  ) || {stops: [], outerColors: []};
  
                  var concreteDim = visualMapModel.getDataDimension(data);
                  var dimInfo = data.getDimensionInfo(concreteDim);
                  if (dimInfo != null) {
                      // visualMeta.dimension should be dimension index, but not concrete dimension.
                      visualMeta.dimension = dimInfo.index;
                      visualMetaList.push(visualMeta);
                  }
              }
          });
  
          // console.log(JSON.stringify(visualMetaList.map(a => a.stops)));
          seriesModel.getData().setVisual('visualMeta', visualMetaList);
      }
  });
  
  // FIXME
  // performance and export for heatmap?
  // value can be Infinity or -Infinity
  function getColorVisual(seriesModel, visualMapModel, value, valueState) {
      var mappings = visualMapModel.targetVisuals[valueState];
      var visualTypes = VisualMapping.prepareVisualTypes(mappings);
      var resultVisual = {
          color: seriesModel.getData().getVisual('color') // default color.
      };
  
      for (var i = 0, len = visualTypes.length; i < len; i++) {
          var type = visualTypes[i];
          var mapping = mappings[
              type === 'opacity' ? '__alphaForOpacity' : type
          ];
          mapping && mapping.applyVisual(value, getVisual, setVisual);
      }
  
      return resultVisual.color;
  
      function getVisual(key) {
          return resultVisual[key];
      }
  
      function setVisual(key, value) {
          resultVisual[key] = value;
      }
  }