From 57303fee2265c7270c6879d92d75b90d89cdada1 Mon Sep 17 00:00:00 2001 From: guy Date: Thu, 22 Jul 2021 19:52:01 +0800 Subject: [PATCH] bugfix --- src/core/controller/controller.bubbles.js | 84 +++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/core/controller/controller.bubbles.js diff --git a/src/core/controller/controller.bubbles.js b/src/core/controller/controller.bubbles.js new file mode 100644 index 000000000..5ad3f6ec7 --- /dev/null +++ b/src/core/controller/controller.bubbles.js @@ -0,0 +1,84 @@ +/** + * 气泡图控制器 + * 控制气泡图的显示方向 + * + * Created by GUY on 2015/8/21. + * @class + */ +BI.BubblesController = BI.inherit(BI.Controller, { + init: function () { + this.storeBubbles = {}; + }, + + /** + * + * @param name + * @param text + * @param context + * @param offsetStyle center, left, right三种类型, 默认left + * @returns {BI.BubblesController} + */ + show: function (name, text, context, opt) { + opt || (opt = {}); + var container = opt.container || context; + var offsetStyle = opt.offsetStyle || "left"; + var level = opt.level || "error"; + var adjustYOffset = opt.adjustYOffset || 0; + var adjustXOffset = opt.adjustXOffset || 0; + // var fixed = opt.fixed !== false; + + if (!this.storeBubbles[name]) { + this.storeBubbles[name] = BI.createWidget({ + type: "bi.label", + cls: "bi-bubble" + " bubble-" + level, + text: text, + hgap: 5, + height: 18 + }); + } + var bubble = this.storeBubbles[name]; + + BI.createWidget({ + type: "bi.default", + element: container, + items: [{ + el: bubble + }] + }); + BI.Popper.createPopper(context.element[0], bubble.element[0], { + placement: ({ + left: "top-start", + center: "top", + right: "top-end" + })[offsetStyle], + strategy: "fixed", + modifiers: [ + { + name: "offset", + options: { + offset: [adjustXOffset, adjustYOffset] + } + } + ] + }); + return this; + }, + + hide: function (name) { + this.remove(name); + return this; + }, + + has: function (name) { + return this.storeBubbles[name] != null; + }, + + remove: function (name) { + if (!this.has(name)) { + return this; + } + this.storeBubbles[name].destroy(); + delete this.storeBubbles[name]; + return this; + } +});