From: Vincent Vanwaelscappel Date: Tue, 20 Jun 2017 15:36:33 +0000 (+0200) Subject: wip #1392 @4 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=cff9cab4475a8e32d2ebc438e68a629e41c61195;p=fluidbook-html5.git wip #1392 @4 --- diff --git a/js/libs/fluidbook/fluidbook.tooltip.js b/js/libs/fluidbook/fluidbook.tooltip.js index 1c5619e8..38839dc6 100644 --- a/js/libs/fluidbook/fluidbook.tooltip.js +++ b/js/libs/fluidbook/fluidbook.tooltip.js @@ -1,6 +1,8 @@ function FluidbookTooltip(fluidbook) { this.fluidbook = fluidbook; this.displaying = false; + this.mouseX = 0; + this.mouseY = 0; this.init(); } @@ -9,7 +11,7 @@ FluidbookTooltip.prototype = { var $this = this; $(window).on('mousemove', function (e) { - $this.updateTooltipPosition(e); + $this.updateMousePosition(e); }); $(window).on('fluidbookzoom', function (e, zoom) { @@ -19,20 +21,56 @@ FluidbookTooltip.prototype = { if (Modernizr.ftouch) { $(document).on('touchstart', 'a[data-tooltip-touch][data-tooltip]', function (e) { - $this.updateTooltipPosition(e); + $this.updateMousePosition(e); return $this.eventTriggered(this); }); } else { $(document).on('mouseover', 'a[data-tooltip]', function (e) { - $this.updateTooltipPosition(e); + $this.updateMousePosition(e); return $this.eventTriggered(this); }); } $("body").append('
'); }, - updateTooltipPosition: function (e) { - $("#tooltip").css({top: e.pageY, left: e.pageX}); + updateMousePosition: function (e) { + this.mouseX = e.pageX; + this.mouseY = e.pageY; + if ($("#tooltip").is(':visible')) { + this.updateTooltipPosition(); + } + }, + + updateTooltipPosition: function () { + + var y = 's'; + if (this.mouseY < (this.fluidbook.resize.hh / 2)) { + y = 'n'; + } + var x = 'e'; + if (this.mouseX < (this.fluidbook.resize.ww / 2)) { + x = 'w'; + } + + var w = $("#tooltip").outerWidth(); + var h = $("#tooltip").outerHeight(); + + if (y == 'n') { + offsetY = 40; + } else { + offsetY = -1 * (h + 16); + } + + if (x == 'w') { + offsetX = -26; + } else { + offsetX = 26 - w; + } + + var top = this.mouseY + offsetY; + var left = this.mouseX + offsetX; + + $("#tooltip").attr('data-pos-x', x).attr('data-pos-y', y).css({top: Math.max(1, top), left: Math.max(1, left)}); }, eventTriggered: function (target) { @@ -40,16 +78,6 @@ FluidbookTooltip.prototype = { return true; } var $this = this; - var maxWidth = 140; - if ($(target).data('tooltip-maxwidth') !== null) { - maxWidth = $(target).data('tooltip-maxwidth'); - } - - maxWidth *= 1.28; - maxWidth = Math.round(maxWidth); - - var position = $(target).offset(); - position.top += $(target).outerHeight(); var text = $(target).data('tooltip'); text = $('