1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

update tabs

This commit is contained in:
Luke Pulverenti 2015-07-01 11:47:41 -04:00
parent c8eb5f2b0c
commit 5bd79b1ab7
18 changed files with 325 additions and 314 deletions

View file

@ -295,6 +295,9 @@
// http://api.jquery.com/jQuery.ajax/ // http://api.jquery.com/jQuery.ajax/
if (enableReconnection && !isUserErrorCode) { if (enableReconnection && !isUserErrorCode) {
logger.log("Attempting reconnection");
tryReconnect().done(function () { tryReconnect().done(function () {
logger.log("Reconnect succeesed"); logger.log("Reconnect succeesed");
@ -309,6 +312,8 @@
}); });
} else { } else {
logger.log("Reporting request failure");
onRetryRequestFail(request); onRetryRequestFail(request);
deferred.reject(); deferred.reject();
} }

View file

@ -12,16 +12,33 @@
margin-left: .5em; margin-left: .5em;
} }
.backdropPage.ui-page-theme-a { .pageWithAbsoluteTabs {
background-color: transparent !important;
}
.backdropPage.ui-page-theme-a:not(.pageWithAbsoluteTabs) {
background-color: rgba(240, 240,240, .94) !important; background-color: rgba(240, 240,240, .94) !important;
} }
.ui-page-theme-b { .backdropPage.ui-page-theme-b:not(.pageWithAbsoluteTabs), .backdropPage.pageWithAbsoluteTabs .pageBackground {
background-color: #1f1f1f; background-color: rgba(20, 20,20, .92) !important;
} }
.backdropPage.ui-page-theme-b { .pageWithAbsoluteTabs .pageBackground {
background-color: rgba(20, 20,20, .92) !important; position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 1;
}
.pageWithAbsoluteTabs neon-animatable {
z-index: 2;
}
.ui-page-theme-b:not(.pageWithAbsoluteTabs), .pageWithAbsoluteTabs .pageBackground {
background-color: #1f1f1f;
} }
.backdropContainer { .backdropContainer {

View file

@ -253,12 +253,12 @@
background-color: #212121; background-color: #212121;
} }
.libraryViewNav .ui-btn-active { .libraryViewNav:not(.paperLibraryViewNav) .ui-btn-active {
border-bottom-color: #38c; border-bottom-color: #38c;
color: #fff !important; color: #fff !important;
} }
.libraryViewNav a { .libraryViewNav:not(.paperLibraryViewNav) a {
display: inline-block; display: inline-block;
padding: 14px 13px 11px; padding: 14px 13px 11px;
color: rgba(255,255,255,.8) !important; color: rgba(255,255,255,.8) !important;
@ -269,9 +269,35 @@
border-bottom: 5px solid transparent; border-bottom: 5px solid transparent;
} }
.libraryViewNav a:not(.ui-btn-active):hover { .paperLibraryViewNav a {
color: #ddd !important;
text-decoration: none;
text-align: center;
vertical-align: middle;
line-height: 48px;
}
.paperLibraryViewNav .iron-selected a {
color: inherit !important;
text-decoration: none;
text-align: center;
}
.basicPaperLibraryTabs .libraryViewNav .tab-content {
border-bottom: 6px solid transparent;
}
.basicPaperLibraryTabs .libraryViewNav .iron-selected .tab-content {
border-bottom: 6px solid #38c;
}
.basicPaperLibraryTabs .libraryViewNav paper-tabs {
display: none;
}
.libraryViewNav:not(.paperLibraryViewNav) a:not(.ui-btn-active):hover {
color: #2ad !important; color: #2ad !important;
} }
@media all and (max-width: 500px) { @media all and (max-width: 500px) {

View file

@ -15,11 +15,6 @@
margin: 0; margin: 0;
text-align: center; text-align: center;
} }
.nowPlayingBar paper-icon-button.mediaButton {
padding: 4px;
}
.mediaButton iron-icon { .mediaButton iron-icon {
height: 40px; height: 40px;
width: 40px; width: 40px;
@ -100,7 +95,7 @@
.nowPlayingBarCenter { .nowPlayingBarCenter {
vertical-align: middle; vertical-align: middle;
text-align: center; text-align: center;
margin-top: 20px; margin-top: 17px;
} }
.nowPlayingBarPositionContainer { .nowPlayingBarPositionContainer {
@ -143,7 +138,7 @@
.nowPlayingBarRight { .nowPlayingBarRight {
position: absolute; position: absolute;
bottom: 22px; bottom: 17px;
right: 10px; right: 10px;
vertical-align: middle; vertical-align: middle;
} }
@ -156,7 +151,7 @@
vertical-align: middle; vertical-align: middle;
font-weight: normal; font-weight: normal;
position: absolute; position: absolute;
bottom: 38px; bottom: 36px;
text-align: center; text-align: center;
display: inline-block; display: inline-block;
margin: 0 auto; margin: 0 auto;
@ -174,7 +169,7 @@
} }
@media all and (max-width: 1200px) { @media all and (max-width: 1300px) {
.nowPlayingBarUserDataButtons { .nowPlayingBarUserDataButtons {
display: none; display: none;
@ -192,14 +187,16 @@
} }
.nowPlayingBarRight { .nowPlayingBarRight {
bottom: 26px; bottom: 22px;
} }
} }
@media all and (max-width: 800px) { @media all and (max-width: 800px) {
.nowPlayingBarCurrentTime { .nowPlayingBarCurrentTime {
display: none; padding-left: 0;
bottom: 30px;
right: 130px;
} }
.nowPlayingBarCenter > *:not(.nowPlayingBarCurrentTime) { .nowPlayingBarCenter > *:not(.nowPlayingBarCurrentTime) {
@ -207,7 +204,7 @@
} }
.nowPlayingBarRight { .nowPlayingBarRight {
bottom: 12px; bottom: 10px;
} }
.nowPlayingBar, .nowPlayingImage img { .nowPlayingBar, .nowPlayingImage img {
@ -237,3 +234,10 @@
display: none; display: none;
} }
} }
@media all and (max-width: 600px) {
.nowPlayingBarCurrentTime {
display: none;
}
}

View file

@ -312,6 +312,8 @@ html {
body { body {
overflow-y: scroll !important; overflow-y: scroll !important;
/* This is needed to prevent a horizontal scrollbar while neon-animated-pages are animating. */
overflow-x: hidden;
font-size: 13px; font-size: 13px;
font-family: Roboto, Arial, Helvetica, sans-serif; font-family: Roboto, Arial, Helvetica, sans-serif;
/*Can't use this with safari or it causes some content to disappear*/ /*Can't use this with safari or it causes some content to disappear*/
@ -330,6 +332,11 @@ body {
background-color: transparent !important; background-color: transparent !important;
} }
/* Undo this from jqm which may cause the page to have it's own scrollbar */
.ui-mobile .ui-page-active {
overflow-x: visible;
}
.bodyWithPopupOpen { .bodyWithPopupOpen {
overflow-y: hidden !important; overflow-y: hidden !important;
} }
@ -752,7 +759,7 @@ h1 .imageLink {
margin-bottom: 30px !important; margin-bottom: 30px !important;
} }
.page > .ui-content { .page > .ui-content, .pageWithAbsoluteTabs .pageTabContent {
/* Need this so that the audio player doesn't cover content, but also for unveil lazy loading. */ /* Need this so that the audio player doesn't cover content, but also for unveil lazy loading. */
padding-bottom: 160px; padding-bottom: 160px;
} }

View file

@ -1,24 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Emby</title>
</head>
<body>
<div id="favoritesPage" data-role="page" class="page libraryPage allLibraryPage backdropPage" data-backdroptype="movie,series,game,book" data-require="scripts/favorites,paperbuttonstyle">
<div class="libraryViewNav scopedLibraryViewNav">
<a href="index.html"><i class="material-icons">home</i>${TabHome}</a>
<a href="homenextup.html"><i class="material-icons">navigate_next</i>${TabNextUp}</a>
<a href="homefavorites.html" class="ui-btn-active"><i class="material-icons">favorite</i>${TabFavorites}</a>
<a href="homeupcoming.html"><i class="material-icons">schedule</i>${TabUpcoming}</a>
</div>
<div data-role="content">
<div class="ehsContent">
<div class="sections"></div>
</div>
</div>
</div>
</body>
</html>

View file

@ -1,41 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Emby</title>
</head>
<body>
<div id="homeNextUpPage" data-role="page" class="page libraryPage backdropPage" data-backdroptype="series" data-require="scripts/homenextup,paperbuttonstyle">
<div class="libraryViewNav globalNav">
<a href="index.html"><i class="material-icons">home</i>${TabHome}</a>
<a href="#" class="ui-btn-active"><i class="material-icons">navigate_next</i>${TabNextUp}</a>
<a href="homefavorites.html"><i class="material-icons">favorite</i>${TabFavorites}</a>
<a href="homeupcoming.html"><i class="material-icons">schedule</i>${TabUpcoming}</a>
</div>
<div data-role="content">
<div class="ehsContent">
<div id="resumableSection" style="display: none;" class="scopedContent homePageSection">
<div>
<h1 class="listHeader" style="display:inline-block;vertical-align:middle;">${HeaderResume}</h1>
<paper-button raised class="submit mini categorySyncButton" data-category="Resume"><iron-icon icon="refresh"></iron-icon><span>${ButtonSync}</span></paper-button>
</div>
<div id="resumableItems" class="itemsContainer">
</div>
</div>
<div class="homePageSection">
<div>
<h1 class="listHeader nextUpHeader" style="display:inline-block;vertical-align:middle;">${HeaderNextUp}</h1>
<paper-button raised class="submit mini categorySyncButton" data-category="NextUp"><iron-icon icon="refresh"></iron-icon><span>${ButtonSync}</span></paper-button>
</div>
<div id="nextUpItems" class="itemsContainer">
</div>
</div>
<p class="noNextUpItems" style="display: none;">${NoNextUpItemsMessage}</p>
</div>
</div>
</div>
</body>
</html>

View file

@ -1,26 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Emby</title>
</head>
<body>
<div id="homeUpcomingPage" data-role="page" class="page libraryPage backdropPage" data-backdroptype="series" data-require="scripts/homeupcoming">
<div class="libraryViewNav globalNav">
<a href="index.html"><i class="material-icons">home</i>${TabHome}</a>
<a href="homenextup.html"><i class="material-icons">navigate_next</i>${TabNextUp}</a>
<a href="homefavorites.html"><i class="material-icons">favorite</i>${TabFavorites}</a>
<a href="#" class="ui-btn-active"><i class="material-icons">schedule</i>${TabUpcoming}</a>
</div>
<div data-role="content">
<div class="ehsContent">
<div id="upcomingItems" class="itemsContainer">
</div>
<div class="noItemsMessage" style="display: none;">
<p>${MessageNothingHere}</p>
<p><a href="metadata.html">${MessagePleaseEnsureInternetMetadata}</a></p>
</div>
</div>
</div>
</div>
</body>
</html>

View file

@ -5,16 +5,22 @@
</head> </head>
<body> <body>
<div id="indexPage" data-role="page" class="page homePage libraryPage allLibraryPage backdropPage" data-backdroptype="movie,series,game,book" data-require="scripts/sections,scripts/indexpage,paperbuttonstyle"> <div id="indexPage" data-role="page" class="page homePage libraryPage allLibraryPage backdropPage pageWithAbsoluteTabs" data-backdroptype="movie,series,game,book" data-require="scripts/sections,scripts/indexpage,scripts/homenextup,scripts/favorites,scripts/homeupcoming,paperbuttonstyle">
<div class="libraryViewNav scopedLibraryViewNav"> <div class="libraryViewNav">
<a href="#" class="ui-btn-active"><i class="material-icons">home</i>${TabHome}</a> <paper-tabs style="display:none;">
<a href="homenextup.html"><i class="material-icons">navigate_next</i>${TabNextUp}</a> <paper-tab><i class="material-icons">home</i>${TabHome}</paper-tab>
<a href="homefavorites.html"><i class="material-icons">favorite</i>${TabFavorites}</a> <paper-tab><i class="material-icons">navigate_next</i>${TabNextUp}</paper-tab>
<a href="homeupcoming.html"><i class="material-icons">schedule</i>${TabUpcoming}</a> <paper-tab><i class="material-icons">favorite</i>${TabFavorites}</paper-tab>
<paper-tab><i class="material-icons">schedule</i>${TabUpcoming}</paper-tab>
</paper-tabs>
<div class="legacyTabs" style="display:none;">
<a href="index.html" class="ui-btn-active">${TabHome}</a>
<a href="index.html?tab=1">${TabNextUp}</a>
<a href="index.html?tab=2">${TabFavorites}</a>
<a href="index.html?tab=3">${TabUpcoming}</a>
</div>
</div> </div>
<div data-role="content">
<div class="ui-bar-b readOnlyContent welcomeMessage" style="display: none; padding: 2em; border-radius: 10px; margin: 2em auto; font-weight: normal;"> <div class="ui-bar-b readOnlyContent welcomeMessage" style="display: none; padding: 2em; border-radius: 10px; margin: 2em auto; font-weight: normal;">
<h1 style="margin-top: 0;" class="tourHeader"></h1> <h1 style="margin-top: 0;" class="tourHeader"></h1>
@ -23,9 +29,46 @@
</p> </p>
</div> </div>
<div class="ehsContent homeEhsContent"> <div class="pageBackground"></div>
<div class="ehsContent">
<neon-animated-pages entry-animation="slide-from-right-animation" exit-animation="slide-left-animation">
<neon-animatable>
<div class="pageTabContent homeTabContent">
<div class="sections"></div> <div class="sections"></div>
</div> </div>
</neon-animatable>
<neon-animatable>
<div class="pageTabContent homeNextUpTabContent">
<div class="homePageSection">
<div>
<h1 class="listHeader nextUpHeader" style="display:inline-block;vertical-align:middle;">${HeaderNextUp}</h1>
<paper-button raised class="submit mini categorySyncButton" data-category="NextUp"><iron-icon icon="refresh"></iron-icon><span>${ButtonSync}</span></paper-button>
</div>
<div id="nextUpItems" class="itemsContainer">
</div>
</div>
<p class="noNextUpItems" style="display: none;">${NoNextUpItemsMessage}</p>
</div>
</neon-animatable>
<neon-animatable>
<div class="pageTabContent homeFavoritesTabContent">
<div class="sections"></div>
</div>
</neon-animatable>
<neon-animatable>
<div class="pageTabContent homeUpcomingTabContent">
<div id="upcomingItems" class="itemsContainer">
</div>
<div class="noItemsMessage" style="display: none;">
<p>${MessageNothingHere}</p>
<p><a href="metadata.html">${MessagePleaseEnsureInternetMetadata}</a></p>
</div>
</div>
</neon-animatable>
</neon-animated-pages>
</div>
<div data-role="content">
</div> </div>
</div> </div>

View file

@ -9,9 +9,9 @@
<div class="itemTabs homeTabs" style="display: none;"> <div class="itemTabs homeTabs" style="display: none;">
<div class="libraryViewNav scopedLibraryViewNav"> <div class="libraryViewNav scopedLibraryViewNav">
<a href="index.html" class="lnkHomeHome"><i class="material-icons">home</i>${TabHome}</a> <a href="index.html" class="lnkHomeHome"><i class="material-icons">home</i>${TabHome}</a>
<a href="homenextup.html" class="lnkHomeNextUp"><i class="material-icons">navigate_next</i>${TabNextUp}</a> <a href="index.html?tab=1" class="lnkHomeNextUp"><i class="material-icons">navigate_next</i>${TabNextUp}</a>
<a href="homefavorites.html" class="lnkHomeFavorites"><i class="material-icons">favorite</i>${TabFavorites}</a> <a href="index.html?tab=2" class="lnkHomeFavorites"><i class="material-icons">favorite</i>${TabFavorites}</a>
<a href="homeupcoming.html" class="lnkHomeUpcoming"><i class="material-icons">schedule</i>${TabUpcoming}</a> <a href="index.html?tab=3" class="lnkHomeUpcoming"><i class="material-icons">schedule</i>${TabUpcoming}</a>
</div> </div>
</div> </div>

View file

@ -54,7 +54,7 @@
html += '</div>'; html += '</div>';
if (result.TotalRecordCount > result.Items.length) { if (result.TotalRecordCount > result.Items.length) {
var href = "homefavorites.html?sectionid=" + section.id; var href = "index.html?tab=2&sectionid=" + section.id;
html += '<a class="clearLink" href="' + href + '"><paper-button raised class="more">' + Globalize.translate('ButtonMoreItems') + '</paper-button></a>'; html += '<a class="clearLink" href="' + href + '"><paper-button raised class="more">' + Globalize.translate('ButtonMoreItems') + '</paper-button></a>';
} }
@ -113,15 +113,20 @@
}); });
} }
$(document).on('pagebeforeshowready', "#favoritesPage", function () { $(document).on('pageinitdepends', "#indexPage", function () {
var page = this; var page = this;
var tabContent = page.querySelector('.homeFavoritesTabContent');
var userId = Dashboard.getCurrentUserId(); $(page.querySelector('neon-animated-pages')).on('iron-select', function () {
if (LibraryBrowser.needsRefresh(page)) { if (parseInt(this.selected) == 2) {
loadSections(page, userId); if (LibraryBrowser.needsRefresh(tabContent)) {
loadSections(tabContent, Dashboard.getCurrentUserId());
}
} }
}); });
});
})(jQuery, document); })(jQuery, document);

View file

@ -5,33 +5,11 @@
return 'Thumb'; return 'Thumb';
} }
function getResumeView() {
return 'Poster';
}
function reload(page) { function reload(page) {
Dashboard.showLoadingMsg(); Dashboard.showLoadingMsg();
var context = ''; loadNextUp(page, 'home-nextup');
if (LibraryMenu.getTopParentId()) {
$('.scopedLibraryViewNav', page).show();
$('.globalNav', page).hide();
$('.scopedContent', page).show();
context = 'tv';
loadResume(page);
} else {
$('.scopedLibraryViewNav', page).hide();
$('.globalNav', page).show();
$('.scopedContent', page).hide();
}
loadNextUp(page, context || 'home-nextup');
} }
function loadNextUp(page, context) { function loadNextUp(page, context) {
@ -55,11 +33,10 @@
ApiClient.getNextUpEpisodes(query).done(function (result) { ApiClient.getNextUpEpisodes(query).done(function (result) {
if (result.Items.length) { if (result.Items.length) {
$('.noNextUpItems', page).hide(); page.querySelector('.noNextUpItems').classList.add('hide');
} else { } else {
$('.noNextUpItems', page).show(); page.querySelector('.noNextUpItems').classList.remove('hide');
} }
var view = getView(); var view = getView();
var html = ''; var html = '';
@ -101,95 +78,20 @@
}); });
} }
function enableScrollX() { $(document).on('pageinitdepends', "#indexPage", function () {
return $.browser.mobile && AppInfo.enableAppLayouts;
}
function getThumbShape() {
return enableScrollX() ? 'overflowBackdrop' : 'backdrop';
}
function loadResume(page) {
var parentId = LibraryMenu.getTopParentId();
var screenWidth = $(window).width();
var limit = 6;
var options = {
SortBy: "DatePlayed",
SortOrder: "Descending",
IncludeItemTypes: "Episode",
Filters: "IsResumable",
Limit: limit,
Recursive: true,
Fields: "PrimaryImageAspectRatio,SeriesInfo,UserData,SyncInfo",
ExcludeLocationTypes: "Virtual",
ParentId: parentId,
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
};
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
if (result.Items.length) {
$('#resumableSection', page).show();
} else {
$('#resumableSection', page).hide();
}
var view = getResumeView();
var html = '';
if (view == 'PosterCard') {
html += LibraryBrowser.getPosterViewHtml({
items: result.Items,
shape: getThumbShape(),
showTitle: true,
showParentTitle: true,
lazy: true,
cardLayout: true,
context: 'tv',
showDetailsMenu: true
});
} else if (view == 'Poster') {
html += LibraryBrowser.getPosterViewHtml({
items: result.Items,
shape: getThumbShape(),
showTitle: true,
showParentTitle: true,
overlayText: screenWidth >= 800 && !AppInfo.hasLowImageBandwidth,
lazy: true,
context: 'tv',
showDetailsMenu: true
});
}
var elem = page.querySelector('#resumableItems');
elem.innerHTML = html;
ImageLoader.lazyChildren(elem);
});
}
$(document).on('pagebeforeshowready', "#homeNextUpPage", function () {
var page = this; var page = this;
var tabContent = page.querySelector('.homeNextUpTabContent');
if (enableScrollX()) { $(page.querySelector('neon-animated-pages')).on('iron-select', function () {
page.querySelector('#resumableItems').classList.add('hiddenScrollX');
} else { if (parseInt(this.selected) == 1) {
page.querySelector('#resumableItems').classList.remove('hiddenScrollX'); if (LibraryBrowser.needsRefresh(tabContent)) {
reload(tabContent);
} }
if (LibraryBrowser.needsRefresh(page)) {
reload(page);
} }
}); });
});
})(jQuery, document); })(jQuery, document);

View file

@ -59,14 +59,19 @@
}); });
} }
$(document).on('pagebeforeshowready', "#homeUpcomingPage", function () { $(document).on('pageinitdepends', "#indexPage", function () {
var page = this; var page = this;
var tabContent = page.querySelector('.homeUpcomingTabContent');
if (LibraryBrowser.needsRefresh(page)) { $(page.querySelector('neon-animated-pages')).on('iron-select', function () {
loadUpcoming(page);
if (parseInt(this.selected) == 3) {
if (LibraryBrowser.needsRefresh(tabContent)) {
loadUpcoming(tabContent);
}
} }
}); });
});
})(jQuery, document); })(jQuery, document);

View file

@ -164,19 +164,11 @@
}); });
} }
$(document).on('pageinitdepends', "#indexPage", function () { function loadHomeTab(page) {
var page = this; var tabContent = page.querySelector('.homeTabContent');
Events.on(page.querySelector('.btnTakeTour'), 'click', function () { if (LibraryBrowser.needsRefresh(tabContent)) {
takeTour(page, Dashboard.getCurrentUserId());
});
}).on('pagebeforeshowready', "#indexPage", function () {
var page = this;
if (LibraryBrowser.needsRefresh(page)) {
if (window.ApiClient) { if (window.ApiClient) {
var userId = Dashboard.getCurrentUserId(); var userId = Dashboard.getCurrentUserId();
@ -186,20 +178,76 @@
Dashboard.getCurrentUser().done(function (user) { Dashboard.getCurrentUser().done(function (user) {
loadSections(page, user, result).done(function () { loadSections(tabContent, user, result).done(function () {
if (!AppInfo.isNativeApp) { if (!AppInfo.isNativeApp) {
showWelcomeIfNeeded(page, result); showWelcomeIfNeeded(page, result);
} }
Dashboard.hideLoadingMsg(); Dashboard.hideLoadingMsg();
LibraryBrowser.setLastRefreshed(page); LibraryBrowser.setLastRefreshed(tabContent);
}); });
}); });
}); });
} }
} }
}
function loadTab(page, index) {
switch (index) {
case 0:
loadHomeTab(page);
break;
default:
break;
}
}
$(document).on('pageinitdepends', "#indexPage", function () {
var page = this;
Events.on(page.querySelector('.btnTakeTour'), 'click', function () {
takeTour(page, Dashboard.getCurrentUserId());
});
var tabs = page.querySelector('paper-tabs');
LibraryBrowser.configurePaperLibraryTabs(page, page.querySelectorAll('paper-tabs')[0], page.querySelectorAll('neon-animated-pages')[0]);
$(tabs).on('iron-select', function () {
var selected = this.selected;
if (LibraryBrowser.navigateOnLibraryTabSelect()) {
if (selected) {
Dashboard.navigate('index.html?tab=' + selected);
} else {
Dashboard.navigate('index.html');
}
} else {
page.querySelector('neon-animated-pages').selected = selected;
}
});
$(page.querySelector('neon-animated-pages')).on('iron-select', function () {
loadTab(page, parseInt(this.selected));
});
}).on('pagebeforeshowready', "#indexPage", function () {
var page = this;
var tabs = page.querySelector('paper-tabs');
var selected = tabs.selected;
if (selected == null) {
selected = parseInt(getParameterByName('tab') || '0');
tabs.selected = selected;
page.querySelector('neon-animated-pages').selected = selected;
}
}); });
function getDisplayPreferencesAppName() { function getDisplayPreferencesAppName() {

View file

@ -112,6 +112,87 @@
elem.classList.add('hasrefreshtime'); elem.classList.add('hasrefreshtime');
}, },
configureSwipeTabs: function (ownerpage, tabs, pages) {
var pageCount = pages.querySelectorAll('neon-animatable').length;
function allowSwipe(e) {
var target = e.target;
if (target.classList.contains('noSwipe')) {
return false;
}
if ($(target).parents('.noSwipe').length) {
return false;
}
return true;
}
$(ownerpage).on('swipeleft', function (e) {
if (allowSwipe(e)) {
var selected = parseInt(pages.selected || '0');
if (selected < (pageCount - 1)) {
pages.entryAnimation = 'slide-from-right-animation';
pages.exitAnimation = 'slide-left-animation';
tabs.selectNext();
}
}
});
$(ownerpage).on('swiperight', function (e) {
if (allowSwipe(e)) {
var selected = parseInt(pages.selected || '0');
if (selected > 0) {
pages.entryAnimation = 'slide-from-left-animation';
pages.exitAnimation = 'slide-right-animation';
tabs.selectPrevious();
}
}
});
},
enableFullPaperTabs: function () {
return AppInfo.isNativeApp;
},
navigateOnLibraryTabSelect: function () {
return !LibraryBrowser.enableFullPaperTabs();
},
configurePaperLibraryTabs: function (ownerpage, tabs, pages) {
tabs.hideScrollButtons = true;
if (LibraryBrowser.enableFullPaperTabs()) {
$(tabs).show();
LibraryBrowser.configureSwipeTabs(ownerpage, tabs, pages);
$('.libraryViewNav', ownerpage).addClass('paperLibraryViewNav');
} else {
tabs.noSlide = true;
tabs.noink = true;
tabs.noBar = true;
tabs.scrollable = true;
var legacyTabs = $('.legacyTabs', ownerpage).show();
document.body.classList.add('basicPaperLibraryTabs');
$(pages).on('iron-select', function (e) {
var selected = this.selected;
$('a', legacyTabs).removeClass('ui-btn-active')[selected].classList.add('ui-btn-active');
});
}
},
getDateParamValue: function (date) { getDateParamValue: function (date) {
function formatDigit(i) { function formatDigit(i) {

View file

@ -713,20 +713,6 @@
} }
} }
function allowSwipe(e) {
var target = $(e.target);
if (target.is('.noSwipe')) {
return false;
}
if (target.parents('.noSwipe').length) {
return false;
}
return true;
}
function onPlayerChange() { function onPlayerChange() {
bindToPlayer($($.mobile.activePage)[0], MediaController.getCurrentPlayer()); bindToPlayer($($.mobile.activePage)[0], MediaController.getCurrentPlayer());
} }
@ -742,42 +728,14 @@
$('.requiresJqmCreate', this).trigger('create'); $('.requiresJqmCreate', this).trigger('create');
$(page).on('swipeleft', function (e) { LibraryBrowser.configureSwipeTabs(page, page.querySelectorAll('paper-tabs')[0], page.querySelectorAll('neon-animated-pages')[0]);
if (allowSwipe(e)) {
var pages = this.querySelectorAll('neon-animated-pages')[0];
var tabs = this.querySelectorAll('paper-tabs')[0];
var selected = parseInt(pages.selected || '0');
if (selected < 2) {
pages.entryAnimation = 'slide-from-right-animation';
pages.exitAnimation = 'slide-left-animation';
tabs.selectNext();
}
}
});
$(page).on('swiperight', function (e) {
if (allowSwipe(e)) {
var pages = this.querySelectorAll('neon-animated-pages')[0];
var tabs = this.querySelectorAll('paper-tabs')[0];
var selected = parseInt(pages.selected || '0');
if (selected > 0) {
pages.entryAnimation = 'slide-from-left-animation';
pages.exitAnimation = 'slide-right-animation';
tabs.selectPrevious();
}
}
});
$(MediaController).on('playerchange', function () { $(MediaController).on('playerchange', function () {
updateCastIcon(page); updateCastIcon(page);
}); });
$('paper-tabs').on('iron-select', function () { $('paper-tabs').on('iron-select', function () {
page.querySelectorAll('neon-animated-pages')[0].selected = this.selected; page.querySelector('neon-animated-pages').selected = this.selected;
}); });
}).on('pagebeforeshowready', "#nowPlayingPage", function () { }).on('pagebeforeshowready', "#nowPlayingPage", function () {

View file

@ -305,7 +305,7 @@
if (result.Items.length) { if (result.Items.length) {
html += '<h1 class="listHeader">' + Globalize.translate('HeaderResume') + '</h1>'; html += '<h1 class="listHeader">' + Globalize.translate('HeaderResume') + '</h1>';
if (enableScrollX()) { if (enableScrollX()) {
html += '<div class="hiddenScrollX itemsContainer">'; html += '<div class="hiddenScrollX itemsContainer noSwipe">';
} else { } else {
html += '<div class="itemsContainer">'; html += '<div class="itemsContainer">';
} }

View file

@ -266,6 +266,7 @@ paper-tabs, paper-toolbar {
paper-tab { paper-tab {
text-transform: uppercase; text-transform: uppercase;
font-weight: 400;
} }
paper-tabs:not([alignbottom]) #selectionBar { paper-tabs:not([alignbottom]) #selectionBar {