Blame view

node_modules/echarts/src/component/legend/ScrollableLegendModel.js 2.88 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
  /*
  * 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 LegendModel from './LegendModel';
  import {
      mergeLayoutParam,
      getLayoutParams
  } from '../../util/layout';
  
  var ScrollableLegendModel = LegendModel.extend({
  
      type: 'legend.scroll',
  
      /**
       * @param {number} scrollDataIndex
       */
      setScrollDataIndex: function (scrollDataIndex) {
          this.option.scrollDataIndex = scrollDataIndex;
      },
  
      defaultOption: {
          scrollDataIndex: 0,
          pageButtonItemGap: 5,
          pageButtonGap: null,
          pageButtonPosition: 'end', // 'start' or 'end'
          pageFormatter: '{current}/{total}', // If null/undefined, do not show page.
          pageIcons: {
              horizontal: ['M0,0L12,-10L12,10z', 'M0,0L-12,-10L-12,10z'],
              vertical: ['M0,0L20,0L10,-20z', 'M0,0L20,0L10,20z']
          },
          pageIconColor: '#2f4554',
          pageIconInactiveColor: '#aaa',
          pageIconSize: 15, // Can be [10, 3], which represents [width, height]
          pageTextStyle: {
              color: '#333'
          },
  
          animationDurationUpdate: 800
      },
  
      /**
       * @override
       */
      init: function (option, parentModel, ecModel, extraOpt) {
          var inputPositionParams = getLayoutParams(option);
  
          ScrollableLegendModel.superCall(this, 'init', option, parentModel, ecModel, extraOpt);
  
          mergeAndNormalizeLayoutParams(this, option, inputPositionParams);
      },
  
      /**
       * @override
       */
      mergeOption: function (option, extraOpt) {
          ScrollableLegendModel.superCall(this, 'mergeOption', option, extraOpt);
  
          mergeAndNormalizeLayoutParams(this, this.option, option);
      },
  
      getOrient: function () {
          return this.get('orient') === 'vertical'
              ? {index: 1, name: 'vertical'}
              : {index: 0, name: 'horizontal'};
      }
  
  });
  
  // Do not `ignoreSize` to enable setting {left: 10, right: 10}.
  function mergeAndNormalizeLayoutParams(legendModel, target, raw) {
      var orient = legendModel.getOrient();
      var ignoreSize = [1, 1];
      ignoreSize[orient.index] = 0;
      mergeLayoutParam(target, raw, {
          type: 'box', ignoreSize: ignoreSize
      });
  }
  
  export default ScrollableLegendModel;