mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-16 02:02:58 -07:00
Lock scroller on statistics cards
This commit is contained in:
parent
d77696be59
commit
2873d8bba3
4 changed files with 51 additions and 20 deletions
|
@ -9,7 +9,7 @@ a {
|
||||||
}
|
}
|
||||||
a:hover,
|
a:hover,
|
||||||
a:focus {
|
a:focus {
|
||||||
color: #f9be03;
|
color: #e9a049;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
|
@ -1050,8 +1050,8 @@ a .dashboard-activity-metadata-user-thumb:hover {
|
||||||
-webkit-filter: blur(3px);
|
-webkit-filter: blur(3px);
|
||||||
-moz-filter: blur(3px);
|
-moz-filter: blur(3px);
|
||||||
filter: blur(3px);
|
filter: blur(3px);
|
||||||
-webkit-transition: background .2s linear;
|
-webkit-transition: background .2s ease-in-out;
|
||||||
transition: background .2s linear;
|
transition: background .2s ease-in-out;
|
||||||
-webkit-backface-visibility: hidden;
|
-webkit-backface-visibility: hidden;
|
||||||
backface-visibility: hidden;
|
backface-visibility: hidden;
|
||||||
z-index: -1;
|
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);
|
box-shadow: 0 0 4px rgba(0,0,0,.3), inset 0 0 0 1px rgba(255,255,255,.1);
|
||||||
-webkit-flex-shrink: 0;
|
-webkit-flex-shrink: 0;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
-webkit-transition: background .2s linear;
|
-webkit-transition: background .2s ease-in-out;
|
||||||
transition: background .2s linear;
|
transition: background .2s ease-in-out;
|
||||||
-webkit-backface-visibility: hidden;
|
-webkit-backface-visibility: hidden;
|
||||||
backface-visibility: hidden;
|
backface-visibility: hidden;
|
||||||
z-index: 1;
|
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);
|
box-shadow: 0 0 4px rgba(0,0,0,.3), inset 0 0 0 1px rgba(255,255,255,.1);
|
||||||
-webkit-flex-shrink: 0;
|
-webkit-flex-shrink: 0;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
-webkit-transition: background .2s linear;
|
-webkit-transition: background .2s ease-in-out;
|
||||||
transition: background .2s linear;
|
transition: background .2s ease-in-out;
|
||||||
-webkit-backface-visibility: hidden;
|
-webkit-backface-visibility: hidden;
|
||||||
backface-visibility: hidden;
|
backface-visibility: hidden;
|
||||||
z-index: 1;
|
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);
|
box-shadow: 0 0 4px rgba(0,0,0,.3), inset 0 0 0 1px rgba(255,255,255,.1);
|
||||||
-webkit-flex-shrink: 0;
|
-webkit-flex-shrink: 0;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
-webkit-transition: background .2s linear;
|
-webkit-transition: background .2s ease-in-out;
|
||||||
transition: background .2s linear;
|
transition: background .2s ease-in-out;
|
||||||
-webkit-backface-visibility: hidden;
|
-webkit-backface-visibility: hidden;
|
||||||
backface-visibility: hidden;
|
backface-visibility: hidden;
|
||||||
z-index: 1;
|
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);
|
box-shadow: 0 0 4px rgba(0,0,0,.3), inset 0 0 0 1px rgba(255,255,255,.1);
|
||||||
-webkit-flex-shrink: 0;
|
-webkit-flex-shrink: 0;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
-webkit-transition: background .2s linear;
|
-webkit-transition: background .2s ease-in-out;
|
||||||
transition: background .2s linear;
|
transition: background .2s ease-in-out;
|
||||||
-webkit-backface-visibility: hidden;
|
-webkit-backface-visibility: hidden;
|
||||||
backface-visibility: hidden;
|
backface-visibility: hidden;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
|
@ -1152,8 +1152,8 @@ a .dashboard-activity-metadata-user-thumb:hover {
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
align-items: baseline;
|
align-items: baseline;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
width: 385px;
|
width: 100%;
|
||||||
padding: 5px 5px 5px 15px;
|
padding: 5px;
|
||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
border-bottom: 1px solid rgba(255,255,255,.1);
|
border-bottom: 1px solid rgba(255,255,255,.1);
|
||||||
-webkit-flex-grow: 1;
|
-webkit-flex-grow: 1;
|
||||||
|
@ -1173,7 +1173,7 @@ a .dashboard-activity-metadata-user-thumb:hover {
|
||||||
}
|
}
|
||||||
.dashboard-stats-info-scroller {
|
.dashboard-stats-info-scroller {
|
||||||
height: 120px;
|
height: 120px;
|
||||||
width: 385px;
|
width: 100%;
|
||||||
-webkit-flex-grow: 1;
|
-webkit-flex-grow: 1;
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
|
@ -1212,15 +1212,16 @@ a .dashboard-activity-metadata-user-thumb:hover {
|
||||||
}
|
}
|
||||||
.dashboard-stats-info-item .sub-heading {
|
.dashboard-stats-info-item .sub-heading {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 6px;
|
width: 15px;
|
||||||
color: #aaa;
|
color: #aaa;
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
text-align: right;
|
text-align: left;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
|
-webkit-flex-shrink: 0;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
.dashboard-stats-info-item .sub-value {
|
.dashboard-stats-info-item .sub-value {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
margin-left: 10px;
|
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
@ -1237,6 +1238,8 @@ a .dashboard-activity-metadata-user-thumb:hover {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
-webkit-flex-shrink: 0;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
.dashboard-stats-info-item:first-of-type {
|
.dashboard-stats-info-item:first-of-type {
|
||||||
padding: 5px 5px;
|
padding: 5px 5px;
|
||||||
|
@ -3095,6 +3098,9 @@ pre::-webkit-scrollbar-thumb {
|
||||||
.dashboard-activity-instance {
|
.dashboard-activity-instance {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
.dashboard-stats-instance {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#search_form {
|
#search_form {
|
||||||
width: 300px;
|
width: 300px;
|
||||||
|
|
|
@ -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>
|
<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>
|
</a>
|
||||||
% elif stat_id == 'top_platforms':
|
% 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>
|
<script>
|
||||||
$("#stats-thumb-${stat_id}").css("background-image", "url(" + getPlatformImagePath("${top_stat['rows'][0]['platform_type']}") + ")");
|
$("#stats-thumb-${stat_id}").css("background-image", "url(" + getPlatformImagePath("${top_stat['rows'][0]['platform_type']}") + ")");
|
||||||
</script>
|
</script>
|
||||||
</div>
|
</div>
|
||||||
% elif stat_id == 'most_concurrent':
|
% 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
|
% endif
|
||||||
<div class="dashboard-stats-info-container">
|
<div class="dashboard-stats-info-container">
|
||||||
<div id="stats-title-${stat_id}" class="dashboard-stats-info-title">
|
<div id="stats-title-${stat_id}" class="dashboard-stats-info-title">
|
||||||
|
@ -114,7 +114,6 @@ DOCUMENTATION :: END
|
||||||
% for row in top_stat['rows']:
|
% 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')}">
|
<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">${loop.index + 1}</div>
|
||||||
<!--<div class="sub-heading"></div>-->
|
|
||||||
<div class="sub-value">
|
<div class="sub-value">
|
||||||
% if stat_id in ('top_movies', 'popular_movies', 'top_tv', 'popular_tv', 'top_music', 'popular_music', 'last_watched'):
|
% 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']:
|
% if top_stat['rows'][loop.index]['rating_key']:
|
||||||
|
|
|
@ -203,6 +203,7 @@
|
||||||
<%def name="javascriptIncludes()">
|
<%def name="javascriptIncludes()">
|
||||||
<script src="${http_root}js/moment-with-locale.js"></script>
|
<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.scrollbar.min.js"></script>
|
||||||
|
<script src="${http_root}js/jquery.mousewheel.min.js"></script>
|
||||||
<script>
|
<script>
|
||||||
var date_format = 'YYYY-MM-DD';
|
var date_format = 'YYYY-MM-DD';
|
||||||
var time_format = 'hh:mm a';
|
var time_format = 'hh:mm a';
|
||||||
|
@ -609,6 +610,7 @@
|
||||||
complete: function (xhr, status) {
|
complete: function (xhr, status) {
|
||||||
$("#home-stats").html(xhr.responseText);
|
$("#home-stats").html(xhr.responseText);
|
||||||
$('#ajaxMsg').fadeOut();
|
$('#ajaxMsg').fadeOut();
|
||||||
|
lockScroll();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -638,6 +640,22 @@
|
||||||
|
|
||||||
$('#watched-stats-days').tooltip({ container: 'body', placement: 'top', html: true });
|
$('#watched-stats-days').tooltip({ container: 'body', placement: 'top', html: true });
|
||||||
$('#watched-stats-count').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>
|
</script>
|
||||||
% endif
|
% endif
|
||||||
% if 'library_stats' in config['home_sections']:
|
% if 'library_stats' in config['home_sections']:
|
||||||
|
|
8
data/interfaces/default/js/jquery.mousewheel.min.js
vendored
Normal file
8
data/interfaces/default/js/jquery.mousewheel.min.js
vendored
Normal 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)}})});
|
Loading…
Add table
Add a link
Reference in a new issue