diff --git a/.gitignore b/.gitignore
index 39bbcd3..17beaae 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,8 @@
# Builded docs
docs/site/
+vendor/npm
+src/vendor/npm
node_modules
npm-debug.log
coverage/
diff --git a/Gruntfile.js b/Gruntfile.js
index a5b8b72..548f742 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -15,12 +15,34 @@ module.exports = function(grunt) {
test: {
src: ["dist/test"]
},
+ vendor: {
+ src: ["vendor"]
+ },
tmp: {
src: ["tmp"]
}
},
copy: {
+ node_modules: {
+ cwd: './node_modules',
+ expand: true,
+ flatten: true,
+ filter: 'isFile',
+ src: [
+ 'tether-drop/dist/js/drop.min.js',
+ 'tether/dist/js/tether.min.js',
+ ],
+ dest: 'vendor/npm'
+ },
+ vendor_to_dist: {
+ cwd: 'vendor',
+ expand: true,
+ src: [
+ '**/*'
+ ],
+ dest: 'dist/vendor'
+ },
src_to_dist: {
cwd: 'src',
expand: true,
@@ -29,6 +51,7 @@ module.exports = function(grunt) {
'!datasource-zabbix/*.js',
'!panel-triggers/*.js',
'!components/*.js',
+ '!vendor/*.js',
'!module.js',
'!**/*.scss'
],
@@ -65,6 +88,7 @@ module.exports = function(grunt) {
'datasource-zabbix/*.js',
'panel-triggers/*.js',
'components/*.js',
+ 'vendor/*.js',
'module.js',
],
dest: 'dist/'
@@ -149,10 +173,9 @@ module.exports = function(grunt) {
});
grunt.registerTask('default', [
- 'clean:dist',
+ 'clean',
'sass',
- 'copy:src_to_dist',
- 'copy:pluginDef',
+ 'copy',
'jshint',
'jscs',
'babel',
@@ -162,6 +185,7 @@ module.exports = function(grunt) {
grunt.registerTask('watchTask', [
'clean:dist',
'sass',
+ 'copy:vendor_to_dist',
'copy:src_to_dist',
'copy:pluginDef',
'babel',
diff --git a/dist/panel-triggers/ack-tooltip.directive.js b/dist/panel-triggers/ack-tooltip.directive.js
index 614da93..569603b 100644
--- a/dist/panel-triggers/ack-tooltip.directive.js
+++ b/dist/panel-triggers/ack-tooltip.directive.js
@@ -1,6 +1,6 @@
'use strict';
-System.register(['angular', 'jquery', 'tether-drop'], function (_export, _context) {
+System.register(['angular', 'jquery'], function (_export, _context) {
"use strict";
var angular, $, Drop;
@@ -9,11 +9,21 @@ System.register(['angular', 'jquery', 'tether-drop'], function (_export, _contex
angular = _angular.default;
}, function (_jquery) {
$ = _jquery.default;
- }, function (_tetherDrop) {
- Drop = _tetherDrop.default;
}],
execute: function () {
+ System.config({
+ paths: {
+ tether: System.getConfig().baseURL + "plugins/alexanderzobnin-zabbix-app/vendor/npm/tether.min.js"
+ }
+ });
+
+ Drop = void 0;
+
+ System.amdRequire(["plugins/alexanderzobnin-zabbix-app/vendor/npm/drop.min.js"], function (drop) {
+ Drop = drop;
+ });
+
/** @ngInject */
angular.module('grafana.directives').directive('ackTooltip', function ($sanitize, $compile) {
var buttonTemplate = '';
diff --git a/dist/panel-triggers/ack-tooltip.directive.js.map b/dist/panel-triggers/ack-tooltip.directive.js.map
index 0281afe..f88df57 100644
--- a/dist/panel-triggers/ack-tooltip.directive.js.map
+++ b/dist/panel-triggers/ack-tooltip.directive.js.map
@@ -1 +1 @@
-{"version":3,"sources":["../../src/panel-triggers/ack-tooltip.directive.js"],"names":["angular","$","Drop","module","directive","$sanitize","$compile","buttonTemplate","scope","ack","trigger","onAck","context","link","element","acknowledges","$button","appendTo","click","tooltip","length","time","user","message","addAckButtonTemplate","drop","target","content","position","classes","openOn","hoverCloseDelay","tetherOptions","constraints","to","pin","attachment","open","on","closeDrop","onAddAckButtonClick","inputTemplate","$input","$addAckButton","replaceWith","onAckCancelButtonClick","onAckSendlButtonClick","value","bind","then","setTimeout","destroy","contents"],"mappings":"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","file":"ack-tooltip.directive.js","sourcesContent":["import angular from 'angular';\nimport $ from 'jquery';\nimport Drop from 'tether-drop';\n\n/** @ngInject */\nangular\n .module('grafana.directives')\n .directive('ackTooltip', function($sanitize, $compile) {\n let buttonTemplate = '';\n\n return {\n scope: {\n ack: \"=\",\n trigger: \"=\",\n onAck: \"=\",\n context: \"=\"\n },\n link: function(scope, element) {\n let acknowledges = scope.ack;\n let $button = $(buttonTemplate);\n $button.appendTo(element);\n\n $button.click(function() {\n let tooltip = '
';\n\n if (acknowledges && acknowledges.length) {\n tooltip += '
' +\n '| Time | ' +\n 'User | ' +\n '' +\n '
';\n for (let ack of acknowledges) {\n tooltip += '| ' + ack.time + ' | ' +\n '' + ack.user + ' | ' +\n '' + ack.message + ' |
';\n }\n tooltip += '
';\n } else {\n tooltip += 'Add acknowledge';\n }\n\n let addAckButtonTemplate = '
' +\n '
';\n tooltip += addAckButtonTemplate;\n tooltip += '
';\n\n let drop = new Drop({\n target: element[0],\n content: tooltip,\n position: \"bottom left\",\n classes: 'drop-popover ack-tooltip',\n openOn: 'hover',\n hoverCloseDelay: 500,\n tetherOptions: {\n constraints: [{to: 'window', pin: true, attachment: \"both\"}]\n }\n });\n\n drop.open();\n drop.on('close', closeDrop);\n\n $('#add-acknowledge-btn').on('click', onAddAckButtonClick);\n\n function onAddAckButtonClick() {\n let inputTemplate = '' +\n '' +\n '' +\n '
';\n\n let $input = $(inputTemplate);\n let $addAckButton = $('.ack-tooltip .ack-add-button');\n $addAckButton.replaceWith($input);\n $('.ack-tooltip #cancel-ack-button').on('click', onAckCancelButtonClick);\n $('.ack-tooltip #send-ack-button').on('click', onAckSendlButtonClick);\n }\n\n function onAckCancelButtonClick() {\n $('.ack-tooltip .ack-input-group').replaceWith(addAckButtonTemplate);\n $('#add-acknowledge-btn').on('click', onAddAckButtonClick);\n }\n\n function onAckSendlButtonClick() {\n let message = $('.ack-tooltip #ack-message')[0].value;\n let onAck = scope.onAck.bind(scope.context);\n onAck(scope.trigger, message).then(() => {\n closeDrop();\n });\n }\n\n function closeDrop() {\n setTimeout(function() {\n drop.destroy();\n });\n }\n\n });\n\n $compile(element.contents())(scope);\n }\n };\n });\n"]}
\ No newline at end of file
+{"version":3,"sources":["../../src/panel-triggers/ack-tooltip.directive.js"],"names":["angular","$","System","config","paths","tether","getConfig","baseURL","Drop","amdRequire","drop","module","directive","$sanitize","$compile","buttonTemplate","scope","ack","trigger","onAck","context","link","element","acknowledges","$button","appendTo","click","tooltip","length","time","user","message","addAckButtonTemplate","target","content","position","classes","openOn","hoverCloseDelay","tetherOptions","constraints","to","pin","attachment","open","on","closeDrop","onAddAckButtonClick","inputTemplate","$input","$addAckButton","replaceWith","onAckCancelButtonClick","onAckSendlButtonClick","value","bind","then","setTimeout","destroy","contents"],"mappings":"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","file":"ack-tooltip.directive.js","sourcesContent":["import angular from 'angular';\nimport $ from 'jquery';\n\nSystem.config({\n paths: {\n tether: System.getConfig().baseURL + \"plugins/alexanderzobnin-zabbix-app/vendor/npm/tether.min.js\"\n }\n});\n\nlet Drop;\nSystem.amdRequire([\"plugins/alexanderzobnin-zabbix-app/vendor/npm/drop.min.js\"], (drop) => {\n Drop = drop;\n});\n\n/** @ngInject */\nangular\n .module('grafana.directives')\n .directive('ackTooltip', function($sanitize, $compile) {\n let buttonTemplate = '';\n\n return {\n scope: {\n ack: \"=\",\n trigger: \"=\",\n onAck: \"=\",\n context: \"=\"\n },\n link: function(scope, element) {\n let acknowledges = scope.ack;\n let $button = $(buttonTemplate);\n $button.appendTo(element);\n\n $button.click(function() {\n let tooltip = '';\n\n if (acknowledges && acknowledges.length) {\n tooltip += '
' +\n '| Time | ' +\n 'User | ' +\n '' +\n '
';\n for (let ack of acknowledges) {\n tooltip += '| ' + ack.time + ' | ' +\n '' + ack.user + ' | ' +\n '' + ack.message + ' |
';\n }\n tooltip += '
';\n } else {\n tooltip += 'Add acknowledge';\n }\n\n let addAckButtonTemplate = '
' +\n '
';\n tooltip += addAckButtonTemplate;\n tooltip += '
';\n\n let drop = new Drop({\n target: element[0],\n content: tooltip,\n position: \"bottom left\",\n classes: 'drop-popover ack-tooltip',\n openOn: 'hover',\n hoverCloseDelay: 500,\n tetherOptions: {\n constraints: [{to: 'window', pin: true, attachment: \"both\"}]\n }\n });\n\n drop.open();\n drop.on('close', closeDrop);\n\n $('#add-acknowledge-btn').on('click', onAddAckButtonClick);\n\n function onAddAckButtonClick() {\n let inputTemplate = '' +\n '' +\n '' +\n '
';\n\n let $input = $(inputTemplate);\n let $addAckButton = $('.ack-tooltip .ack-add-button');\n $addAckButton.replaceWith($input);\n $('.ack-tooltip #cancel-ack-button').on('click', onAckCancelButtonClick);\n $('.ack-tooltip #send-ack-button').on('click', onAckSendlButtonClick);\n }\n\n function onAckCancelButtonClick() {\n $('.ack-tooltip .ack-input-group').replaceWith(addAckButtonTemplate);\n $('#add-acknowledge-btn').on('click', onAddAckButtonClick);\n }\n\n function onAckSendlButtonClick() {\n let message = $('.ack-tooltip #ack-message')[0].value;\n let onAck = scope.onAck.bind(scope.context);\n onAck(scope.trigger, message).then(() => {\n closeDrop();\n });\n }\n\n function closeDrop() {\n setTimeout(function() {\n drop.destroy();\n });\n }\n\n });\n\n $compile(element.contents())(scope);\n }\n };\n });\n"]}
\ No newline at end of file
diff --git a/dist/test/panel-triggers/ack-tooltip.directive.js b/dist/test/panel-triggers/ack-tooltip.directive.js
index e74683e..59e9c8d 100644
--- a/dist/test/panel-triggers/ack-tooltip.directive.js
+++ b/dist/test/panel-triggers/ack-tooltip.directive.js
@@ -8,12 +8,19 @@ var _jquery = require('jquery');
var _jquery2 = _interopRequireDefault(_jquery);
-var _tetherDrop = require('tether-drop');
-
-var _tetherDrop2 = _interopRequireDefault(_tetherDrop);
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+System.config({
+ paths: {
+ tether: System.getConfig().baseURL + "plugins/alexanderzobnin-zabbix-app/vendor/npm/tether.min.js"
+ }
+});
+
+var Drop = void 0;
+System.amdRequire(["plugins/alexanderzobnin-zabbix-app/vendor/npm/drop.min.js"], function (drop) {
+ Drop = drop;
+});
+
/** @ngInject */
_angular2.default.module('grafana.directives').directive('ackTooltip', function ($sanitize, $compile) {
var buttonTemplate = '';
@@ -69,7 +76,7 @@ _angular2.default.module('grafana.directives').directive('ackTooltip', function
tooltip += addAckButtonTemplate;
tooltip += '';
- var drop = new _tetherDrop2.default({
+ var drop = new Drop({
target: element[0],
content: tooltip,
position: "bottom left",
diff --git a/dist/vendor/npm/drop.min.js b/dist/vendor/npm/drop.min.js
new file mode 100644
index 0000000..1eb6ce6
--- /dev/null
+++ b/dist/vendor/npm/drop.min.js
@@ -0,0 +1 @@
+!function(t,e){"function"==typeof define&&define.amd?define(["tether"],e):"object"==typeof exports?module.exports=e(require("tether")):t.Drop=e(t.Tether)}(this,function(t){"use strict";function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function o(t){var e=t.split(" "),n=a(e,2),o=n[0],i=n[1];if(["left","right"].indexOf(o)>=0){var s=[i,o];o=s[0],i=s[1]}return[o,i].join(" ")}function i(t,e){for(var n=void 0,o=[];-1!==(n=t.indexOf(e));)o.push(t.splice(n,1));return o}function s(){var a=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],h=function(){for(var t=arguments.length,e=Array(t),n=0;t>n;n++)e[n]=arguments[n];return new(r.apply(b,[null].concat(e)))};p(h,{createContext:s,drops:[],defaults:{}});var g={classPrefix:"drop",defaults:{position:"bottom left",openOn:"click",beforeClose:null,constrainToScrollParent:!0,constrainToWindow:!0,classes:"",remove:!1,openDelay:0,closeDelay:50,focusDelay:null,blurDelay:null,hoverOpenDelay:null,hoverCloseDelay:null,tetherOptions:{}}};p(h,g,a),p(h.defaults,g.defaults,a.defaults),"undefined"==typeof x[h.classPrefix]&&(x[h.classPrefix]=[]),h.updateBodyClasses=function(){for(var t=!1,e=x[h.classPrefix],n=e.length,o=0;n>o;++o)if(e[o].isOpened()){t=!0;break}t?d(document.body,h.classPrefix+"-open"):c(document.body,h.classPrefix+"-open")};var b=function(s){function r(t){if(e(this,r),u(Object.getPrototypeOf(r.prototype),"constructor",this).call(this),this.options=p({},h.defaults,t),this.target=this.options.target,"undefined"==typeof this.target)throw new Error("Drop Error: You must provide a target.");var n="data-"+h.classPrefix,o=this.target.getAttribute(n);o&&null==this.options.content&&(this.options.content=o);for(var i=["position","openOn"],s=0;s=0)for(var n=function(e){t.toggle(e),e.preventDefault()},o=function(e){t.isOpened()&&(e.target===t.drop||t.drop.contains(e.target)||e.target===t.target||t.target.contains(e.target)||t.close(e))},i=0;i=0&&(this._on(this.target,"mouseover",l),this._on(this.drop,"mouseover",l),this._on(this.target,"mouseout",u),this._on(this.drop,"mouseout",u)),e.indexOf("focus")>=0&&(this._on(this.target,"focus",l),this._on(this.drop,"focus",l),this._on(this.target,"blur",u),this._on(this.drop,"blur",u))}}},{key:"isOpened",value:function(){return this.drop?f(this.drop,h.classPrefix+"-open"):void 0}},{key:"toggle",value:function(t){this.isOpened()?this.close(t):this.open(t)}},{key:"open",value:function(t){var e=this;this.isOpened()||(this.drop.parentNode||document.body.appendChild(this.drop),"undefined"!=typeof this.tether&&this.tether.enable(),d(this.drop,h.classPrefix+"-open"),d(this.drop,h.classPrefix+"-open-transitionend"),setTimeout(function(){e.drop&&d(e.drop,h.classPrefix+"-after-open")}),"undefined"!=typeof this.tether&&this.tether.position(),this.trigger("open"),h.updateBodyClasses())}},{key:"_transitionEndHandler",value:function(t){t.target===t.currentTarget&&(f(this.drop,h.classPrefix+"-open")||c(this.drop,h.classPrefix+"-open-transitionend"),this.drop.removeEventListener(m,this.transitionEndHandler))}},{key:"beforeCloseHandler",value:function(t){var e=!0;return this.isClosing||"function"!=typeof this.options.beforeClose||(this.isClosing=!0,e=this.options.beforeClose(t,this)!==!1),this.isClosing=!1,e}},{key:"close",value:function(t){this.isOpened()&&this.beforeCloseHandler(t)&&(c(this.drop,h.classPrefix+"-open"),c(this.drop,h.classPrefix+"-after-open"),this.drop.addEventListener(m,this.transitionEndHandler),this.trigger("close"),"undefined"!=typeof this.tether&&this.tether.disable(),h.updateBodyClasses(),this.options.remove&&this.remove(t))}},{key:"remove",value:function(t){this.close(t),this.drop.parentNode&&this.drop.parentNode.removeChild(this.drop)}},{key:"position",value:function(){this.isOpened()&&"undefined"!=typeof this.tether&&this.tether.position()}},{key:"destroy",value:function(){this.remove(),"undefined"!=typeof this.tether&&this.tether.destroy();for(var t=0;t=0)&&i.push(n)}return i.push(t.ownerDocument.body),t.ownerDocument!==document&&i.push(t.ownerDocument.defaultView),i}function s(){A&&document.body.removeChild(A),A=null}function a(t){var e=void 0;t===document?(e=document,t=document.documentElement):e=t.ownerDocument;var o=e.documentElement,i=n(t),r=P();return i.top-=r.top,i.left-=r.left,"undefined"==typeof i.width&&(i.width=document.body.scrollWidth-i.left-i.right),"undefined"==typeof i.height&&(i.height=document.body.scrollHeight-i.top-i.bottom),i.top=i.top-o.clientTop,i.left=i.left-o.clientLeft,i.right=e.body.clientWidth-i.width-i.left,i.bottom=e.body.clientHeight-i.height-i.top,i}function f(t){return t.offsetParent||document.documentElement}function l(){if(M)return M;var t=document.createElement("div");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");h(e.style,{position:"absolute",top:0,left:0,pointerEvents:"none",visibility:"hidden",width:"200px",height:"150px",overflow:"hidden"}),e.appendChild(t),document.body.appendChild(e);var o=t.offsetWidth;e.style.overflow="scroll";var i=t.offsetWidth;o===i&&(i=e.clientWidth),document.body.removeChild(e);var n=o-i;return M={width:n,height:n}}function h(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=[];return Array.prototype.push.apply(e,arguments),e.slice(1).forEach(function(e){if(e)for(var o in e)({}).hasOwnProperty.call(e,o)&&(t[o]=e[o])}),t}function d(t,e){if("undefined"!=typeof t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.remove(e)});else{var o=new RegExp("(^| )"+e.split(" ").join("|")+"( |$)","gi"),i=c(t).replace(o," ");g(t,i)}}function p(t,e){if("undefined"!=typeof t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.add(e)});else{d(t,e);var o=c(t)+(" "+e);g(t,o)}}function u(t,e){if("undefined"!=typeof t.classList)return t.classList.contains(e);var o=c(t);return new RegExp("(^| )"+e+"( |$)","gi").test(o)}function c(t){return t.className instanceof t.ownerDocument.defaultView.SVGAnimatedString?t.className.baseVal:t.className}function g(t,e){t.setAttribute("class",e)}function m(t,e,o){o.forEach(function(o){e.indexOf(o)===-1&&u(t,o)&&d(t,o)}),e.forEach(function(e){u(t,e)||p(t,e)})}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function v(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function y(t,e){var o=arguments.length<=2||void 0===arguments[2]?1:arguments[2];return t+o>=e&&e>=t-o}function b(){return"undefined"!=typeof performance&&"undefined"!=typeof performance.now?performance.now():+new Date}function w(){for(var t={top:0,left:0},e=arguments.length,o=Array(e),i=0;i1?o-1:0),n=1;n16?(e=Math.min(e-16,250),void(o=setTimeout(n,250))):void("undefined"!=typeof t&&b()-t<10||(null!=o&&(clearTimeout(o),o=null),t=b(),X(),e=b()-t))};"undefined"!=typeof window&&"undefined"!=typeof window.addEventListener&&["resize","scroll","touchmove"].forEach(function(t){window.addEventListener(t,i)})}();var F={center:"center",left:"right",right:"left"},H={middle:"middle",top:"bottom",bottom:"top"},N={top:0,left:0,middle:"50%",center:"50%",bottom:"100%",right:"100%"},U=function(t,e){var o=t.left,i=t.top;return"auto"===o&&(o=F[e.left]),"auto"===i&&(i=H[e.top]),{left:o,top:i}},V=function(t){var e=t.left,o=t.top;return"undefined"!=typeof N[t.left]&&(e=N[t.left]),"undefined"!=typeof N[t.top]&&(o=N[t.top]),{left:e,top:o}},R=function(t){var e=t.split(" "),o=z(e,2),i=o[0],n=o[1];return{top:i,left:n}},q=R,I=function(t){function e(t){var o=this;i(this,e),j(Object.getPrototypeOf(e.prototype),"constructor",this).call(this),this.position=this.position.bind(this),D.push(this),this.history=[],this.setOptions(t,!1),x.modules.forEach(function(t){"undefined"!=typeof t.initialize&&t.initialize.call(o)}),this.position()}return v(e,t),E(e,[{key:"getClass",value:function(){var t=arguments.length<=0||void 0===arguments[0]?"":arguments[0],e=this.options.classes;return"undefined"!=typeof e&&e[t]?this.options.classes[t]:this.options.classPrefix?this.options.classPrefix+"-"+t:t}},{key:"setOptions",value:function(t){var e=this,o=arguments.length<=1||void 0===arguments[1]||arguments[1],i={offset:"0 0",targetOffset:"0 0",targetAttachment:"auto auto",classPrefix:"tether"};this.options=h(i,t);var n=this.options,s=n.element,a=n.target,f=n.targetModifier;if(this.element=s,this.target=a,this.targetModifier=f,"viewport"===this.target?(this.target=document.body,this.targetModifier="visible"):"scroll-handle"===this.target&&(this.target=document.body,this.targetModifier="scroll-handle"),["element","target"].forEach(function(t){if("undefined"==typeof e[t])throw new Error("Tether Error: Both element and target must be defined");"undefined"!=typeof e[t].jquery?e[t]=e[t][0]:"string"==typeof e[t]&&(e[t]=document.querySelector(e[t]))}),p(this.element,this.getClass("element")),this.options.addTargetClasses!==!1&&p(this.target,this.getClass("target")),!this.options.attachment)throw new Error("Tether Error: You must provide an attachment");this.targetAttachment=q(this.options.targetAttachment),this.attachment=q(this.options.attachment),this.offset=R(this.options.offset),this.targetOffset=R(this.options.targetOffset),"undefined"!=typeof this.scrollParents&&this.disable(),"scroll-handle"===this.targetModifier?this.scrollParents=[this.target]:this.scrollParents=r(this.target),this.options.enabled!==!1&&this.enable(o)}},{key:"getTargetBounds",value:function(){if("undefined"==typeof this.targetModifier)return a(this.target);if("visible"===this.targetModifier){if(this.target===document.body)return{top:pageYOffset,left:pageXOffset,height:innerHeight,width:innerWidth};var t=a(this.target),e={height:t.height,width:t.width,top:t.top,left:t.left};return e.height=Math.min(e.height,t.height-(pageYOffset-t.top)),e.height=Math.min(e.height,t.height-(t.top+t.height-(pageYOffset+innerHeight))),e.height=Math.min(innerHeight,e.height),e.height-=2,e.width=Math.min(e.width,t.width-(pageXOffset-t.left)),e.width=Math.min(e.width,t.width-(t.left+t.width-(pageXOffset+innerWidth))),e.width=Math.min(innerWidth,e.width),e.width-=2,e.topo.clientWidth||[i.overflow,i.overflowX].indexOf("scroll")>=0||this.target!==document.body,r=0;n&&(r=15);var s=t.height-parseFloat(i.borderTopWidth)-parseFloat(i.borderBottomWidth)-r,e={width:15,height:.975*s*(s/o.scrollHeight),left:t.left+t.width-parseFloat(i.borderLeftWidth)-15},f=0;s<408&&this.target===document.body&&(f=-11e-5*Math.pow(s,2)-.00727*s+22.58),this.target!==document.body&&(e.height=Math.max(e.height,24));var l=this.target.scrollTop/(o.scrollHeight-s);return e.top=l*(s-e.height-f)+t.top+parseFloat(i.borderTopWidth),this.target===document.body&&(e.height=Math.max(e.height,24)),e}}},{key:"clearCache",value:function(){this._cache={}}},{key:"cache",value:function(t,e){return"undefined"==typeof this._cache&&(this._cache={}),"undefined"==typeof this._cache[t]&&(this._cache[t]=e.call(this)),this._cache[t]}},{key:"enable",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]||arguments[0];this.options.addTargetClasses!==!1&&p(this.target,this.getClass("enabled")),p(this.element,this.getClass("enabled")),this.enabled=!0,this.scrollParents.forEach(function(e){e!==t.target.ownerDocument&&e.addEventListener("scroll",t.position)}),e&&this.position()}},{key:"disable",value:function(){var t=this;d(this.target,this.getClass("enabled")),d(this.element,this.getClass("enabled")),this.enabled=!1,"undefined"!=typeof this.scrollParents&&this.scrollParents.forEach(function(e){e.removeEventListener("scroll",t.position)})}},{key:"destroy",value:function(){var t=this;this.disable(),D.forEach(function(e,o){e===t&&D.splice(o,1)}),0===D.length&&s()}},{key:"updateAttachClasses",value:function(t,e){var o=this;t=t||this.attachment,e=e||this.targetAttachment;var i=["left","top","bottom","right","middle","center"];"undefined"!=typeof this._addAttachClasses&&this._addAttachClasses.length&&this._addAttachClasses.splice(0,this._addAttachClasses.length),"undefined"==typeof this._addAttachClasses&&(this._addAttachClasses=[]);var n=this._addAttachClasses;t.top&&n.push(this.getClass("element-attached")+"-"+t.top),t.left&&n.push(this.getClass("element-attached")+"-"+t.left),e.top&&n.push(this.getClass("target-attached")+"-"+e.top),e.left&&n.push(this.getClass("target-attached")+"-"+e.left);var r=[];i.forEach(function(t){r.push(o.getClass("element-attached")+"-"+t),r.push(o.getClass("target-attached")+"-"+t)}),k(function(){"undefined"!=typeof o._addAttachClasses&&(m(o.element,o._addAttachClasses,r),o.options.addTargetClasses!==!1&&m(o.target,o._addAttachClasses,r),delete o._addAttachClasses)})}},{key:"position",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]||arguments[0];if(this.enabled){this.clearCache();var o=U(this.targetAttachment,this.attachment);this.updateAttachClasses(this.attachment,o);var i=this.cache("element-bounds",function(){return a(t.element)}),n=i.width,r=i.height;if(0===n&&0===r&&"undefined"!=typeof this.lastSize){var s=this.lastSize;n=s.width,r=s.height}else this.lastSize={width:n,height:r};var h=this.cache("target-bounds",function(){return t.getTargetBounds()}),d=h,p=C(V(this.attachment),{width:n,height:r}),u=C(V(o),d),c=C(this.offset,{width:n,height:r}),g=C(this.targetOffset,d);p=w(p,c),u=w(u,g);for(var m=h.left+u.left-p.left,v=h.top+u.top-p.top,y=0;yA.documentElement.clientHeight&&(S=this.cache("scrollbar-size",l),E.viewport.bottom-=S.height),T.innerWidth>A.documentElement.clientWidth&&(S=this.cache("scrollbar-size",l),E.viewport.right-=S.width),["","static"].indexOf(A.body.style.position)!==-1&&["","static"].indexOf(A.body.parentElement.style.position)!==-1||(E.page.bottom=A.body.scrollHeight-v-r,E.page.right=A.body.scrollWidth-m-n),"undefined"!=typeof this.options.optimizations&&this.options.optimizations.moveElement!==!1&&"undefined"==typeof this.targetModifier&&!function(){var e=t.cache("target-offsetparent",function(){return f(t.target)}),o=t.cache("target-offsetparent-bounds",function(){return a(e)}),i=getComputedStyle(e),n=o,r={};if(["Top","Left","Bottom","Right"].forEach(function(t){r[t.toLowerCase()]=parseFloat(i["border"+t+"Width"])}),o.right=A.body.scrollWidth-o.left-n.width+r.right,o.bottom=A.body.scrollHeight-o.top-n.height+r.bottom,E.page.top>=o.top+r.top&&E.page.bottom>=o.bottom&&E.page.left>=o.left+r.left&&E.page.right>=o.right){var s=e.scrollTop,l=e.scrollLeft;E.offset={top:E.page.top-o.top+s-r.top,left:E.page.left-o.left+l-r.left}}}(),this.move(E),this.history.unshift(E),this.history.length>3&&this.history.pop(),e&&_(),!0}}},{key:"move",value:function(t){var e=this;if("undefined"!=typeof this.element.parentNode){var o={};for(var i in t){o[i]={};for(var n in t[i]){for(var r=!1,s=0;s=0){var c=a.split(" "),m=z(c,2);d=m[0],h=m[1]}else h=d=a;var b=O(e,r);"target"!==d&&"both"!==d||(ob[3]&&"bottom"===v.top&&(o-=p,v.top="top")),"together"===d&&("top"===v.top&&("bottom"===y.top&&ob[3]&&o-(s-p)>=b[1]&&(o-=s-p,v.top="bottom",y.top="bottom")),"bottom"===v.top&&("top"===y.top&&o+s>b[3]?(o-=p,v.top="top",o-=s,y.top="bottom"):"bottom"===y.top&&ob[3]&&"top"===y.top?(o-=s,y.top="bottom"):ob[2]&&"right"===v.left&&(i-=u,v.left="left")),"together"===h&&(ib[2]&&"right"===v.left?"left"===y.left?(i-=u,v.left="left",i-=f,y.left="right"):"right"===y.left&&(i-=u,v.left="left",i+=f,y.left="left"):"center"===v.left&&(i+f>b[2]&&"left"===y.left?(i-=f,y.left="right"):ib[3]&&"top"===y.top&&(o-=s,y.top="bottom")),"element"!==h&&"both"!==h||(ib[2]&&("left"===y.left?(i-=f,y.left="right"):"center"===y.left&&(i-=f/2,y.left="right"))),"string"==typeof l?l=l.split(",").map(function(t){return t.trim()}):l===!0&&(l=["top","left","right","bottom"]),l=l||[];var w=[],C=[];o=0?(o=b[1],w.push("top")):C.push("top")),o+s>b[3]&&(l.indexOf("bottom")>=0?(o=b[3]-s,w.push("bottom")):C.push("bottom")),i=0?(i=b[0],w.push("left")):C.push("left")),i+f>b[2]&&(l.indexOf("right")>=0?(i=b[2]-f,w.push("right")):C.push("right")),w.length&&!function(){var t=void 0;t="undefined"!=typeof e.options.pinnedClass?e.options.pinnedClass:e.getClass("pinned"),g.push(t),w.forEach(function(e){g.push(t+"-"+e)})}(),C.length&&!function(){var t=void 0;t="undefined"!=typeof e.options.outOfBoundsClass?e.options.outOfBoundsClass:e.getClass("out-of-bounds"),g.push(t),C.forEach(function(e){g.push(t+"-"+e)})}(),(w.indexOf("left")>=0||w.indexOf("right")>=0)&&(y.left=v.left=!1),(w.indexOf("top")>=0||w.indexOf("bottom")>=0)&&(y.top=v.top=!1),v.top===n.top&&v.left===n.left&&y.top===e.attachment.top&&y.left===e.attachment.left||(e.updateAttachClasses(y,v),e.trigger("update",{attachment:y,targetAttachment:v}))}),k(function(){e.options.addTargetClasses!==!1&&m(e.target,g,c),m(e.element,g,c)}),{top:o,left:i}}});var Y=x.Utils,a=Y.getBounds,m=Y.updateClasses,k=Y.defer;x.modules.push({position:function(t){var e=this,o=t.top,i=t.left,n=this.cache("element-bounds",function(){return a(e.element)}),r=n.height,s=n.width,f=this.getTargetBounds(),l=o+r,h=i+s,d=[];o<=f.bottom&&l>=f.top&&["left","right"].forEach(function(t){var e=f[t];e!==i&&e!==h||d.push(t)}),i<=f.right&&h>=f.left&&["top","bottom"].forEach(function(t){var e=f[t];e!==o&&e!==l||d.push(t)});var p=[],u=[],c=["left","top","right","bottom"];return p.push(this.getClass("abutted")),c.forEach(function(t){p.push(e.getClass("abutted")+"-"+t)}),d.length&&u.push(this.getClass("abutted")),d.forEach(function(t){u.push(e.getClass("abutted")+"-"+t)}),k(function(){e.options.addTargetClasses!==!1&&m(e.target,u,p),m(e.element,u,p)}),!0}});var z=function(){function t(t,e){var o=[],i=!0,n=!1,r=void 0;try{for(var s,a=t[Symbol.iterator]();!(i=(s=a.next()).done)&&(o.push(s.value),!e||o.length!==e);i=!0);}catch(f){n=!0,r=f}finally{try{!i&&a["return"]&&a["return"]()}finally{if(n)throw r}}return o}return function(e,o){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();return x.modules.push({position:function(t){var e=t.top,o=t.left;if(this.options.shift){var i=this.options.shift;"function"==typeof this.options.shift&&(i=this.options.shift.call(this,{top:e,left:o}));var n=void 0,r=void 0;if("string"==typeof i){i=i.split(" "),i[1]=i[1]||i[0];var s=i,a=z(s,2);n=a[0],r=a[1],n=parseFloat(n,10),r=parseFloat(r,10)}else n=i.top,r=i.left;return e+=n,o+=r,{top:e,left:o}}}}),$});
\ No newline at end of file
diff --git a/package.json b/package.json
index 04251ff..ca7c7f0 100644
--- a/package.json
+++ b/package.json
@@ -42,7 +42,8 @@
"moment": "~2.14.1",
"prunk": "~1.2.1",
"q": "~1.4.1",
- "sinon-chai": "~2.8.0"
+ "sinon-chai": "~2.8.0",
+ "tether-drop": "^1.4.2"
},
"dependencies": {
"lodash": "~4.0.0"
diff --git a/src/panel-triggers/ack-tooltip.directive.js b/src/panel-triggers/ack-tooltip.directive.js
index 3622db4..3ad0481 100644
--- a/src/panel-triggers/ack-tooltip.directive.js
+++ b/src/panel-triggers/ack-tooltip.directive.js
@@ -1,6 +1,16 @@
import angular from 'angular';
import $ from 'jquery';
-import Drop from 'tether-drop';
+
+System.config({
+ paths: {
+ tether: System.getConfig().baseURL + "plugins/alexanderzobnin-zabbix-app/vendor/npm/tether.min.js"
+ }
+});
+
+let Drop;
+System.amdRequire(["plugins/alexanderzobnin-zabbix-app/vendor/npm/drop.min.js"], (drop) => {
+ Drop = drop;
+});
/** @ngInject */
angular