Blame view

node_modules/echarts/lib/chart/helper/whiskerBoxCommon.js 3.88 KB
2a09d1a4   liuqimichale   添加宜春 天水 宣化
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
  var createListSimply = require("../helper/createListSimply");
  
  var zrUtil = require("zrender/lib/core/util");
  
  var _dimensionHelper = require("../../data/helper/dimensionHelper");
  
  var getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;
  
  /*
  * 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.
  */
  var seriesModelMixin = {
    /**
     * @private
     * @type {string}
     */
    _baseAxisDim: null,
  
    /**
     * @override
     */
    getInitialData: function (option, ecModel) {
      // When both types of xAxis and yAxis are 'value', layout is
      // needed to be specified by user. Otherwise, layout can be
      // judged by which axis is category.
      var ordinalMeta;
      var xAxisModel = ecModel.getComponent('xAxis', this.get('xAxisIndex'));
      var yAxisModel = ecModel.getComponent('yAxis', this.get('yAxisIndex'));
      var xAxisType = xAxisModel.get('type');
      var yAxisType = yAxisModel.get('type');
      var addOrdinal; // FIXME
      // 考虑时间轴
  
      if (xAxisType === 'category') {
        option.layout = 'horizontal';
        ordinalMeta = xAxisModel.getOrdinalMeta();
        addOrdinal = true;
      } else if (yAxisType === 'category') {
        option.layout = 'vertical';
        ordinalMeta = yAxisModel.getOrdinalMeta();
        addOrdinal = true;
      } else {
        option.layout = option.layout || 'horizontal';
      }
  
      var coordDims = ['x', 'y'];
      var baseAxisDimIndex = option.layout === 'horizontal' ? 0 : 1;
      var baseAxisDim = this._baseAxisDim = coordDims[baseAxisDimIndex];
      var otherAxisDim = coordDims[1 - baseAxisDimIndex];
      var axisModels = [xAxisModel, yAxisModel];
      var baseAxisType = axisModels[baseAxisDimIndex].get('type');
      var otherAxisType = axisModels[1 - baseAxisDimIndex].get('type');
      var data = option.data; // ??? FIXME make a stage to perform data transfrom.
      // MUST create a new data, consider setOption({}) again.
  
      if (data && addOrdinal) {
        var newOptionData = [];
        zrUtil.each(data, function (item, index) {
          var newItem;
  
          if (item.value && zrUtil.isArray(item.value)) {
            newItem = item.value.slice();
            item.value.unshift(index);
          } else if (zrUtil.isArray(item)) {
            newItem = item.slice();
            item.unshift(index);
          } else {
            newItem = item;
          }
  
          newOptionData.push(newItem);
        });
        option.data = newOptionData;
      }
  
      var defaultValueDimensions = this.defaultValueDimensions;
      return createListSimply(this, {
        coordDimensions: [{
          name: baseAxisDim,
          type: getDimensionTypeByAxis(baseAxisType),
          ordinalMeta: ordinalMeta,
          otherDims: {
            tooltip: false,
            itemName: 0
          },
          dimsDef: ['base']
        }, {
          name: otherAxisDim,
          type: getDimensionTypeByAxis(otherAxisType),
          dimsDef: defaultValueDimensions.slice()
        }],
        dimensionsCount: defaultValueDimensions.length + 1
      });
    },
  
    /**
     * If horizontal, base axis is x, otherwise y.
     * @override
     */
    getBaseAxis: function () {
      var dim = this._baseAxisDim;
      return this.ecModel.getComponent(dim + 'Axis', this.get(dim + 'AxisIndex')).axis;
    }
  };
  exports.seriesModelMixin = seriesModelMixin;