From 5717deeb91b87f69ef1aab935d3b5aa949c6c8a2 Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Mon, 11 Dec 2017 12:56:50 +0300 Subject: [PATCH] triggers panel: catch drop error --- dist/panel-triggers/ack-tooltip.directive.js | 6 +++++- dist/panel-triggers/ack-tooltip.directive.js.map | 2 +- src/panel-triggers/ack-tooltip.directive.js | 6 +++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/dist/panel-triggers/ack-tooltip.directive.js b/dist/panel-triggers/ack-tooltip.directive.js index 569603b..718dda5 100644 --- a/dist/panel-triggers/ack-tooltip.directive.js +++ b/dist/panel-triggers/ack-tooltip.directive.js @@ -121,7 +121,11 @@ System.register(['angular', 'jquery'], function (_export, _context) { function closeDrop() { setTimeout(function () { - drop.destroy(); + try { + drop.destroy(); + } catch (err) { + console.log('drop.destroy() error: ', err.message); + } }); } }); diff --git a/dist/panel-triggers/ack-tooltip.directive.js.map b/dist/panel-triggers/ack-tooltip.directive.js.map index f88df57..781c9fc 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","$","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 '' +\n '' +\n '' +\n '';\n for (let ack of acknowledges) {\n tooltip += '' +\n '' +\n '';\n }\n tooltip += '
TimeUserComments
' + ack.time + '' + ack.user + '' + ack.message + '
';\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","err","console","log","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 '' +\n '' +\n '' +\n '';\n for (let ack of acknowledges) {\n tooltip += '' +\n '' +\n '';\n }\n tooltip += '
TimeUserComments
' + ack.time + '' + ack.user + '' + ack.message + '
';\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 try {\n drop.destroy();\n } catch (err) {\n console.log('drop.destroy() error: ', err.message);\n }\n });\n }\n\n });\n\n $compile(element.contents())(scope);\n }\n };\n });\n"]} \ No newline at end of file diff --git a/src/panel-triggers/ack-tooltip.directive.js b/src/panel-triggers/ack-tooltip.directive.js index 3ad0481..bef3ce0 100644 --- a/src/panel-triggers/ack-tooltip.directive.js +++ b/src/panel-triggers/ack-tooltip.directive.js @@ -111,7 +111,11 @@ angular function closeDrop() { setTimeout(function() { - drop.destroy(); + try { + drop.destroy(); + } catch (err) { + console.log('drop.destroy() error: ', err.message); + } }); }