Blame view

node_modules/echarts/lib/component/tooltip/TooltipContentManager.js 3.55 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
121
122
123
124
125
126
  
  /*
  * 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 zrUtil = require("zrender/lib/core/util");
  
  var TooltipContent = require("./TooltipContent");
  
  /*
  * 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 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);
      });
    }
  };
  var _default = TooltipContentManager;
  module.exports = _default;