diff --git a/bitbake/lib/toaster/toastergui/static/js/main.js b/bitbake/lib/toaster/toastergui/static/js/main.js index 3710e59e92..dc96564b17 100644 --- a/bitbake/lib/toaster/toastergui/static/js/main.js +++ b/bitbake/lib/toaster/toastergui/static/js/main.js @@ -21,8 +21,25 @@ $(document).ready(function() { }); // enable popovers in any table cells that contain an anchor with the - // .btn class applied - $('td > a.btn').popover({html:true, container:'body', placement:'left'}); + // .btn class applied, and make sure popovers work on click, are mutually + // exclusive and they close when your click outside their area + + $('html').click(function(e){ + $('td > a.btn').popover('hide'); + }); + + $('td > a.btn').popover({ + html:true, + placement:'left', + container:'body', + trigger:'manual' + }).click(function(e){ + $('td > a.btn').not(this).popover('hide'); + // ideally we would use 'toggle' here + // but it seems buggy in our Bootstrap version + $(this).popover('show'); + e.stopPropagation(); + }); // enable tooltips for applied filters $('th a.btn-primary').tooltip({container:'body', html:true, placement:'bottom', delay:{hide:1500}}); @@ -53,38 +70,4 @@ $(document).ready(function() { }); }); - /* Make help tooltip and popovers work on click, mutually exclusive and dismiss them when clicking outside their area - from http://fuzzytolerance.info/blog/quick-hack-one-bootstarp-popover-at-a-time/ */ - - // Global variables - cringe - var visibleTooltip; - var visiblePopover; - - //only allow 1 popover at a time - $('.depends > a , .brought_in_by > a, .layer_commit > a').on('click', function(e) { - // don't fall through - e.stopPropagation(); - var $this = $(this); - // check if the one hovered over is now shown - if ($this.data('popover').tip().hasClass('in')) { - // if another was showing, hide it - visiblePopover && visiblePopover.popover('hide'); - // then store the current popover - visiblePopover = $this; - } else { - // if it was hidden, then nothing must be showing - visiblePopover = ''; - } - // dismiss popovers when you click outside them - $('body').on("click", function (e) { - var $target = $(e.target), - inPopover = $(e.target).closest('.popover').length > 0 - //hide only if clicked on button or inside popover - if (!inPopover) { - visiblePopover.popover('hide'); - visiblePopover = ''; - } - }); - }); - });