From 1435812436943b115bdcc2e29987a5d3b2c2e199 Mon Sep 17 00:00:00 2001
From: Vince Valenti <vince@blue-box.net>
Date: Sat, 28 Nov 2015 20:15:31 -0800
Subject: [PATCH] When posters are small, display a hover popout

---
 gui/slick/js/core.js     |  60 +++++++++++++++++++++++++++++++++++++++
 gui/slick/js/core.min.js | Bin 67169 -> 67962 bytes
 2 files changed, 60 insertions(+)

diff --git a/gui/slick/js/core.js b/gui/slick/js/core.js
index 373adf47b..ca1c24557 100644
--- a/gui/slick/js/core.js
+++ b/gui/slick/js/core.js
@@ -1810,6 +1810,9 @@ var SICKRAGE = {
                     borderWidth = 6;
                 }
 
+                // If there's a poster popup, remove it before resizing
+                $('#posterPopup').remove();
+
                 if (fontSize === undefined) {
                     $('.show-details').hide();
                 } else {
@@ -1976,6 +1979,63 @@ var SICKRAGE = {
                         }
                     }
                 });
+
+                // When posters are small enough to not display the .show-details
+                // table, display a larger poster when hovering.
+                var posterHoverTimer = null;
+                $('.show-container').on('mouseenter', function () {
+                    var poster = $(this);
+                    if (poster.find('.show-details').css('display') !== 'none') {
+                        return;
+                    }
+                    posterHoverTimer = setTimeout(function () {
+                        posterHoverTimer = null;
+                        $('#posterPopup').remove();
+                        var popup = poster.clone().attr({
+                            id: 'posterPopup'
+                        });
+                        var origLeft = poster.offset().left;
+                        var origTop  = poster.offset().top;
+                        popup.css({
+                            position: 'absolute',
+                            margin: 0,
+                            top: origTop,
+                            left: origLeft
+                        });
+                        popup.find('.show-details').show();
+                        popup.on('mouseleave', function () {
+                            $(this).remove();
+                        });
+                        popup.zIndex(9999);
+                        popup.appendTo('body');
+
+                        var height = 438, width = 250;
+                        var newTop = (origTop+poster.height()/2)-(height/2);
+                        var newLeft = (origLeft+poster.width()/2)-(width/2);
+
+                        // Make sure the popup isn't outside the viewport
+                        var margin = 5;
+                        var scrollTop = $(window).scrollTop();
+                        var scrollLeft = $(window).scrollLeft();
+                        var scrollBottom = scrollTop + $(window).innerHeight();
+                        var scrollRight = scrollLeft + $(window).innerWidth();
+                        if (newTop < scrollTop+margin) { newTop = scrollTop+margin; }
+                        if (newLeft < scrollLeft+margin) { newLeft = scrollLeft+margin; }
+                        if (newTop+height+margin > scrollBottom) { newTop = scrollBottom-height-margin; }
+                        if (newLeft+width+margin > scrollRight) { newLeft = scrollRight-width-margin; }
+
+                        popup.animate({
+                            top: newTop,
+                            left: newLeft,
+                            width: 250,
+                            height: 438
+                        });
+                    }, 300);
+                }).on('mouseleave', function () {
+                    if (posterHoverTimer !== null) {
+                        clearTimeout(posterHoverTimer);
+                    }
+                });
             });
 
             $('#postersort').on('change', function(){
diff --git a/gui/slick/js/core.min.js b/gui/slick/js/core.min.js
index 9490f62aa9fe1b7a577df56357361d78cc49f332..01fceaea955eaee788560d372e33a918b79d996f 100644
GIT binary patch
delta 772
zcmaFZ!}4nq%Lehqk}4WX$_4qwC8<RL`30o~N}75_sk!-OsT!L_7f18fTbCskDJ0tF
zmFDDFt7s_c6=&p^>n7*tl_X~7r4}h^>gDHYDCOpt7N@4>m82Fa>7<qBC6{F8=V@qG
zgR~~us%VsCWEN{$E9K?qr7GFl+9v6xW#*;8%t}cuNzBYCR?^f<E-uzkO35rP$VseJ
z(o|E^NVF}U+#oDk53ybcr%N@#j!d>q(o4?C&r8+N)JrTWDblFUOtDfz_FAo`PKs@k
zUVd6yacYT%re02JT8U07vPemOfps$2A=L%>#hD;~SSe{FCKc!Bl$N9_>EtFBrDx_@
z8R(Sc7g(k0fDEuosnyg;2776;-C{|BWJHMMq$ZZ7P8Q%7o!rmNR<EH6R#@ekmy%kc
zVQFb;3DTEXP>`CJ5|Xc>l$4)RsRZ##nyrbkg-*Jyk*R@BhHa{Ll3qq?W_m`6hNixe
zZkoQ4PNr>&c9LFsW=cs0SS(%NNGHqIR43b3MWZ}3FD1WRQ?EF=C_g7BB)>pIQzyq(
zr5;VfCpE1^LsKW$Hd`B^Co?ZEwa5c%mrkB-4!T@8#7gUI?JT<tH8qV4+idMDO`RO=
zEW1oKHH}Q$91u4{J54*wE*C7HtDB~qrKyuyubr-)WtRt5l&6~x5=+)g%*)J8EJ@X<
z28Cw^Bs?>9!2YrVdmii*D-&ajTFqJ=V*>+C&03@+2M%DABnL{Ting|iYHG<jsfk4)
inYpR?r6n4PnzftrH@LbpS#xdP^8Fdp=GniFaRUH)ApvLr

delta 31
ocmex0iREDr%Lehqn~fGn@^0?f?Bc%p+^=U$j9i<y{5{4E0QK?@b^rhX

-- 
GitLab