From 30124f384e8c36b41eb7c9a09e1a687d9c75848f Mon Sep 17 00:00:00 2001 From: Eric Lippmann Date: Fri, 4 Dec 2015 10:49:35 +0100 Subject: [PATCH] JS: Improve selector used in the selectable behavior --- public/js/icinga/behavior/selectable.js | 47 ++++++++++++++++--------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/public/js/icinga/behavior/selectable.js b/public/js/icinga/behavior/selectable.js index a628ed729..1dde66058 100644 --- a/public/js/icinga/behavior/selectable.js +++ b/public/js/icinga/behavior/selectable.js @@ -5,6 +5,34 @@ Icinga.Behaviors = Icinga.Behaviors || {}; + /** + * Select all contents from the target of the given event + * + * @param {object} e Event + */ + function onSelect(e) { + var b = document.body, + r; + if (b.createTextRange) { + r = b.createTextRange(); + r.moveToElementText(e.target); + r.select(); + } else if (window.getSelection) { + var s = window.getSelection(); + r = document.createRange(); + r.selectNodeContents(e.target); + s.removeAllRanges(); + s.addRange(r); + } + } + + /** + * Behavior for text that is selectable via double click + * + * @param {Icinga} icinga + * + * @constructor + */ var Selectable = function(icinga) { Icinga.EventListener.call(this, icinga); this.on('rendered', this.onRendered, this); @@ -12,25 +40,10 @@ $.extend(Selectable.prototype, new Icinga.EventListener(), { onRendered: function(e) { - $('.selectable', e.target).on('dblclick', e.data.self.selectText); - }, - - selectText: function(e) { - var b = document.body, - r; - if (b.createTextRange) { - r = b.createTextRange(); - r.moveToElementText(e.target); - r.select(); - } else if (window.getSelection) { - var s = window.getSelection(); - r = document.createRange(); - r.selectNodeContents(e.target); - s.removeAllRanges(); - s.addRange(r); - } + $(e.target).find('.selectable').on('dblclick', onSelect); } }); Icinga.Behaviors.Selectable = Selectable; + })(Icinga, jQuery);