Lock scroller on statistics cards

This commit is contained in:
JonnyWong16 2017-11-05 13:28:27 -08:00
parent d77696be59
commit 2873d8bba3
4 changed files with 51 additions and 20 deletions

View file

@ -9,7 +9,7 @@ a {
}
a:hover,
a:focus {
color: #f9be03;
color: #e9a049;
text-decoration: none;
outline: none;
}
@ -1050,8 +1050,8 @@ a .dashboard-activity-metadata-user-thumb:hover {
-webkit-filter: blur(3px);
-moz-filter: blur(3px);
filter: blur(3px);
-webkit-transition: background .2s linear;
transition: background .2s linear;
-webkit-transition: background .2s ease-in-out;
transition: background .2s ease-in-out;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
z-index: -1;
@ -1070,8 +1070,8 @@ a .dashboard-activity-metadata-user-thumb:hover {
box-shadow: 0 0 4px rgba(0,0,0,.3), inset 0 0 0 1px rgba(255,255,255,.1);
-webkit-flex-shrink: 0;
flex-shrink: 0;
-webkit-transition: background .2s linear;
transition: background .2s linear;
-webkit-transition: background .2s ease-in-out;
transition: background .2s ease-in-out;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
z-index: 1;
@ -1088,8 +1088,8 @@ a .dashboard-activity-metadata-user-thumb:hover {
box-shadow: 0 0 4px rgba(0,0,0,.3), inset 0 0 0 1px rgba(255,255,255,.1);
-webkit-flex-shrink: 0;
flex-shrink: 0;
-webkit-transition: background .2s linear;
transition: background .2s linear;
-webkit-transition: background .2s ease-in-out;
transition: background .2s ease-in-out;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
z-index: 1;
@ -1106,8 +1106,8 @@ a .dashboard-activity-metadata-user-thumb:hover {
box-shadow: 0 0 4px rgba(0,0,0,.3), inset 0 0 0 1px rgba(255,255,255,.1);
-webkit-flex-shrink: 0;
flex-shrink: 0;
-webkit-transition: background .2s linear;
transition: background .2s linear;
-webkit-transition: background .2s ease-in-out;
transition: background .2s ease-in-out;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
z-index: 1;
@ -1128,8 +1128,8 @@ a .dashboard-activity-metadata-user-thumb:hover {
box-shadow: 0 0 4px rgba(0,0,0,.3), inset 0 0 0 1px rgba(255,255,255,.1);
-webkit-flex-shrink: 0;
flex-shrink: 0;
-webkit-transition: background .2s linear;
transition: background .2s linear;
-webkit-transition: background .2s ease-in-out;
transition: background .2s ease-in-out;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
z-index: 1;
@ -1152,8 +1152,8 @@ a .dashboard-activity-metadata-user-thumb:hover {
flex-wrap: nowrap;
align-items: baseline;
height: 30px;
width: 385px;
padding: 5px 5px 5px 15px;
width: 100%;
padding: 5px;
line-height: 20px;
border-bottom: 1px solid rgba(255,255,255,.1);
-webkit-flex-grow: 1;
@ -1173,7 +1173,7 @@ a .dashboard-activity-metadata-user-thumb:hover {
}
.dashboard-stats-info-scroller {
height: 120px;
width: 385px;
width: 100%;
-webkit-flex-grow: 1;
flex-grow: 1;
z-index: 1;
@ -1212,15 +1212,16 @@ a .dashboard-activity-metadata-user-thumb:hover {
}
.dashboard-stats-info-item .sub-heading {
height: 100%;
width: 6px;
width: 15px;
color: #aaa;
font-size: 10px;
text-align: right;
text-align: left;
text-transform: uppercase;
-webkit-flex-shrink: 0;
flex-shrink: 0;
}
.dashboard-stats-info-item .sub-value {
height: 100%;
margin-left: 10px;
font-size: 12px;
text-align: left;
white-space: nowrap;
@ -1237,6 +1238,8 @@ a .dashboard-activity-metadata-user-thumb:hover {
text-align: right;
white-space: nowrap;
overflow: hidden;
-webkit-flex-shrink: 0;
flex-shrink: 0;
}
.dashboard-stats-info-item:first-of-type {
padding: 5px 5px;
@ -3095,6 +3098,9 @@ pre::-webkit-scrollbar-thumb {
.dashboard-activity-instance {
width: 100%;
}
.dashboard-stats-instance {
width: 100%;
}
}
#search_form {
width: 300px;

View file

@ -87,13 +87,13 @@ DOCUMENTATION :: END
<div id="stats-thumb-${stat_id}" class="dashboard-stats-circle" style="background-image: url(${top_stat['rows'][0]['user_thumb'] or http_root + 'images/gravatar-default.png'})"></div>
</a>
% elif stat_id == 'top_platforms':
<div id="stats-thumb-${stat_id}" class="dashboard-stats-square">
<div id="stats-thumb-${stat_id}" class="dashboard-stats-square hidden-xs">
<script>
$("#stats-thumb-${stat_id}").css("background-image", "url(" + getPlatformImagePath("${top_stat['rows'][0]['platform_type']}") + ")");
</script>
</div>
% elif stat_id == 'most_concurrent':
<div id="stats-thumb-${stat_id}" class="dashboard-stats-square" style="background-image: url(${http_root}images/home-stat_most-concurrent.png)"></div>
<div id="stats-thumb-${stat_id}" class="dashboard-stats-square hidden-xs" style="background-image: url(${http_root}images/home-stat_most-concurrent.png)"></div>
% endif
<div class="dashboard-stats-info-container">
<div id="stats-title-${stat_id}" class="dashboard-stats-info-title">
@ -114,7 +114,6 @@ DOCUMENTATION :: END
% for row in top_stat['rows']:
<li class="dashboard-stats-info-item" data-stat_id="${stat_id}" data-art="${row.get('art')}" data-thumb="${row.get('thumb')}" data-platform="${row.get('platform_type')}">
<div class="sub-heading">${loop.index + 1}</div>
<!--<div class="sub-heading"></div>-->
<div class="sub-value">
% if stat_id in ('top_movies', 'popular_movies', 'top_tv', 'popular_tv', 'top_music', 'popular_music', 'last_watched'):
% if top_stat['rows'][loop.index]['rating_key']:

View file

@ -203,6 +203,7 @@
<%def name="javascriptIncludes()">
<script src="${http_root}js/moment-with-locale.js"></script>
<script src="${http_root}js/jquery.scrollbar.min.js"></script>
<script src="${http_root}js/jquery.mousewheel.min.js"></script>
<script>
var date_format = 'YYYY-MM-DD';
var time_format = 'hh:mm a';
@ -609,6 +610,7 @@
complete: function (xhr, status) {
$("#home-stats").html(xhr.responseText);
$('#ajaxMsg').fadeOut();
lockScroll();
}
});
}
@ -638,6 +640,22 @@
$('#watched-stats-days').tooltip({ container: 'body', placement: 'top', html: true });
$('#watched-stats-count').tooltip({ container: 'body', placement: 'top', html: true });
function lockScroll() {
$('#home-stats .dashboard-stats-info-scroller.scroll-content').each(function (i, instance) {
var childHeight = $(instance).children('.dashboard-stats-info').height();
var height = $(instance).height();
var scrollHeight = $(instance).get(0).scrollHeight;
if (childHeight > height) {
$(instance).on('mousewheel', function(e, d) {
if(($(instance).scrollTop() >= (scrollHeight - height)) && d < 0 || ($(instance).scrollTop() <= 0) && d > 0) {
e.preventDefault();
}
});
}
});
};
</script>
% endif
% if 'library_stats' in config['home_sections']:

View file

@ -0,0 +1,8 @@
/*!
* jQuery Mousewheel 3.1.13
*
* Copyright 2015 jQuery Foundation and other contributors
* Released under the MIT license.
* http://jquery.org/license
*/
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})});