Blame view

node_modules/echarts/src/component/tooltip/TooltipContentManager.js 3.02 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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
  
  /*
  * 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 zrUtil from 'zrender/src/core/util';
  import TooltipContent from './TooltipContent';
  
  // var each = zrUtil.each;
  
  /**
   * @alias module:echarts/component/tooltip/TooltipContentManager
   * @constructor
   */
  function TooltipContentManager(container, api) {
  
      /**
       * @private
       */
      this._contents = {
          // Default tooltip content
          main: new TooltipContent(container, api)
      };
  }
  
  TooltipContentManager.prototype = {
  
      constructor: TooltipContentManager,
  
      /**
       * Update when tooltip is rendered
       */
      update: function () {
          this._each('update');
      },
  
      /**
       * @param {module:echarts/component/tooltip/TooltipModel}
       * @param {string} [key='main']
       */
      show: function (tooltipModel, key) {
          key = key || 'main';
          this._giveContent(key).show(tooltipModel);
      },
  
      /**
       * Create content if not exists.
       */
      _giveContent: function (key) {
          return this._contents[key] || (
              this._contents[key] = new TooltipContent()
          );
      },
  
      setContent: function (content) {
          this.el.innerHTML = content;
      },
  
      setEnterable: function (enterable) {
          this._enterable = enterable;
      },
  
      getSize: function () {
          var el = this.el;
          return [el.clientWidth, el.clientHeight];
      },
  
      moveTo: function (x, y) {
          var style = this.el.style;
          style.left = x + 'px';
          style.top = y + 'px';
  
          this._x = x;
          this._y = y;
      },
  
      hide: function () {
          this.el.style.display = 'none';
          this._show = false;
      },
  
      // showLater: function ()
  
      hideLater: function (time) {
          if (this._show && !(this._inContent && this._enterable)) {
              if (time) {
                  this._hideDelay = time;
                  // Set show false to avoid invoke hideLater mutiple times
                  this._show = false;
                  this._hideTimeout = setTimeout(zrUtil.bind(this.hide, this), time);
              }
              else {
                  this.hide();
              }
          }
      },
  
      _each: function (method, args) {
          zrUtil.each(this._contents, function (content) {
              content[method].apply(content, args);
          });
      }
  };
  
  export default TooltipContentManager;