diff --git a/js/shared.js b/js/shared.js index 21a341fdbcdbe..b27adb4cc6846 100644 --- a/js/shared.js +++ b/js/shared.js @@ -299,6 +299,17 @@ } return sortedObj; }; + + kbn.query_color_dot = function (color, diameter) { + return '
'; + }; }).call(this); /* @@ -310,19 +321,13 @@ _.mixin({ array.splice(toIndex, 0, array.splice(fromIndex, 1)[0] ); return array; - } -}); - -_.mixin({ + }, remove: function (array, index) { 'use strict'; array.splice(index, 1); return array; - } -}); - -_.mixin({ + }, toggleInOut: function(array,value) { 'use strict'; if(_.contains(array,value)) { @@ -333,3 +338,47 @@ _.mixin({ return array; } }); + +/** + * jQuery plugins + */ +(function () { + 'use strict'; + + var $win = $(window); + + $.fn.place_tt = (function () { + var defaults = { + offset: 5, + css: { + position : 'absolute', + top : -1000, + left : 0, + color : "#c8c8c8", + padding : '10px', + 'font-size': '11pt', + 'font-weight' : 200, + 'background-color': '#1f1f1f', + 'border-radius': '5px', + } + }; + + return function (x, y, opts) { + opts = $.extend(true, {}, defaults, opts); + return this.each(function () { + var $tooltip = $(this), width, height; + + $tooltip.css(opts.css); + if (!$.contains(document.body, $tooltip[0])) { + $tooltip.appendTo(document.body); + } + + width = $tooltip.outerWidth(true); + height = $tooltip.outerHeight(true); + + $tooltip.css('left', x + opts.offset + width > $win.width() ? x - opts.offset - width : x + opts.offset); + $tooltip.css('top', y + opts.offset + height > $win.height() ? y - opts.offset - height : y + opts.offset); + }); + }; + })(); +}()); \ No newline at end of file diff --git a/panels/histogram/module.js b/panels/histogram/module.js index e8b3a9c71b70b..d364b9e64ee71 100644 --- a/panels/histogram/module.js +++ b/panels/histogram/module.js @@ -424,32 +424,18 @@ angular.module('kibana.histogram', []) return "%H:%M:%S"; } - function tt(x, y, contents) { - // If the tool tip already exists, don't recreate it, just update it - var tooltip = $('#pie-tooltip').length ? $('#pie-tooltip') : $('
'); - - tooltip.html(contents).css({ - position: 'absolute', - top : y + 5, - left : x + 5, - color : "#c8c8c8", - padding : '10px', - 'font-size': '11pt', - 'font-weight' : 200, - 'background-color': '#1f1f1f', - 'border-radius': '5px', - }).appendTo("body"); - } - + var $tooltip = $('
'); elem.bind("plothover", function (event, pos, item) { if (item) { - tt(pos.pageX, pos.pageY, - "
"+ - item.datapoint[1].toFixed(0) + " @ " + - moment(item.datapoint[0]).format('MM/DD HH:mm:ss')); + $tooltip + .html( + kbn.query_color_dot(item.series.color, 15) + ' ' + + item.datapoint[1].toFixed(0) + " @ " + + moment(item.datapoint[0]).format('MM/DD HH:mm:ss') + ) + .place_tt(pos.pageX, pos.pageY); } else { - $("#pie-tooltip").remove(); + $tooltip.detach(); } }); diff --git a/panels/hits/module.js b/panels/hits/module.js index 0a8bc7da0c013..959a79ec48a6e 100644 --- a/panels/hits/module.js +++ b/panels/hits/module.js @@ -246,32 +246,16 @@ angular.module('kibana.hits', []) }); } - function tt(x, y, contents) { - var tooltip = $('#pie-tooltip').length ? - $('#pie-tooltip') : $('
'); - //var tooltip = $('#pie-tooltip') - tooltip.html(contents).css({ - position: 'absolute', - top : y + 5, - left : x + 5, - color : "#c8c8c8", - padding : '10px', - 'font-size': '11pt', - 'font-weight' : 200, - 'background-color': '#1f1f1f', - 'border-radius': '5px', - }).appendTo("body"); - } - + var $tooltip = $('
'); elem.bind("plothover", function (event, pos, item) { if (item) { var value = scope.panel.chart === 'bar' ? item.datapoint[1] : item.datapoint[1][0][1]; - tt(pos.pageX, pos.pageY, - "
"+value.toFixed(0)); + $tooltip + .html(kbn.query_color_dot(item.series.color, 20) + ' ' + value.toFixed(0)) + .place_tt(pos.pageX, pos.pageY); } else { - $("#pie-tooltip").remove(); + $tooltip.remove(); } }); diff --git a/panels/pie/module.js b/panels/pie/module.js index 2a19cfca2ba1e..9158f4bf34dfe 100644 --- a/panels/pie/module.js +++ b/panels/pie/module.js @@ -262,24 +262,7 @@ angular.module('kibana.pie', []) } - function tt(x, y, contents) { - var tooltip = $('#pie-tooltip').length ? - $('#pie-tooltip') : $('
'); - - tooltip.html(contents).css({ - position: 'absolute', - top : y + 10, - left : x + 10, - color : "#c8c8c8", - padding : '10px', - 'font-size': '11pt', - 'font-weight' : 200, - 'background-color': '#1f1f1f', - 'border-radius': '5px', - }).appendTo("body"); - } - - elem.bind("plotclick", function (event, pos, object) { + elem.bind('plotclick', function (event, pos, object) { if (!object) { return; } @@ -289,14 +272,20 @@ angular.module('kibana.pie', []) } }); - elem.bind("plothover", function (event, pos, item) { + var $tooltip = $('
'); + elem.bind('plothover', function (event, pos, item) { if (item) { - var percent = parseFloat(item.series.percent).toFixed(1) + "%"; - tt(pos.pageX, pos.pageY, "
"+ - (item.series.label||"")+ " " + percent); + $tooltip + .html([ + kbn.query_color_dot(item.series.color, 15), + (item.series.label || ''), + parseFloat(item.series.percent).toFixed(1) + '%' + ].join(' ')) + .place_tt(pos.pageX, pos.pageY, { + offset: 10 + }); } else { - $("#pie-tooltip").remove(); + $tooltip.remove(); } }); diff --git a/panels/terms/module.js b/panels/terms/module.js index ab13b8b424beb..40728805da40f 100644 --- a/panels/terms/module.js +++ b/panels/terms/module.js @@ -268,39 +268,24 @@ angular.module('kibana.terms', []) }); } - function tt(x, y, contents) { - var tooltip = $('#pie-tooltip').length ? - $('#pie-tooltip') : $('
'); - //var tooltip = $('#pie-tooltip') - tooltip.html(contents).css({ - position: 'absolute', - top : y + 5, - left : x + 5, - color : "#c8c8c8", - padding : '10px', - 'font-size': '11pt', - 'font-weight' : 200, - 'background-color': '#1f1f1f', - 'border-radius': '5px', - }).appendTo("body"); - } - elem.bind("plotclick", function (event, pos, object) { if(object) { scope.build_search(scope.data[object.seriesIndex]); } }); + var $tooltip = $('
'); elem.bind("plothover", function (event, pos, item) { if (item) { - var value = scope.panel.chart === 'bar' ? - item.datapoint[1] : item.datapoint[1][0][1]; - tt(pos.pageX, pos.pageY, - "
"+item.series.label+ - " ("+value.toFixed(0)+")"); + var value = scope.panel.chart === 'bar' ? item.datapoint[1] : item.datapoint[1][0][1]; + $tooltip + .html( + kbn.query_color_dot(item.series.color, 20) + ' ' + + item.series.label + " (" + value.toFixed(0)+")" + ) + .place_tt(pos.pageX, pos.pageY); } else { - $("#pie-tooltip").remove(); + $tooltip.remove(); } });