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

Merge pull request #1741 from MediaBrowser/dev

Dev
This commit is contained in:
Luke 2016-05-16 14:21:08 -04:00
commit a844f251f3
24 changed files with 130 additions and 207 deletions

View file

@ -16,12 +16,12 @@
}, },
"devDependencies": {}, "devDependencies": {},
"ignore": [], "ignore": [],
"version": "1.3.37", "version": "1.3.39",
"_release": "1.3.37", "_release": "1.3.39",
"_resolution": { "_resolution": {
"type": "version", "type": "version",
"tag": "1.3.37", "tag": "1.3.39",
"commit": "43c74d495f1fbdae6d86ac6608e934d396069806" "commit": "51bc3e7758132f864fa17488be6f233a55537087"
}, },
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git", "_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
"_target": "^1.2.0", "_target": "^1.2.0",

View file

@ -35,6 +35,10 @@
max-width: 700px; max-width: 700px;
} }
.formDialog .dialogContentTitle {
margin-top: 1em;
}
@media all and (min-width: 1000px) { @media all and (min-width: 1000px) {
.layout-tv .formDialog .centeredContent { .layout-tv .formDialog .centeredContent {
@ -42,6 +46,13 @@
} }
} }
@media all and (max-height: 1400px) {
.itemOverview {
display: none;
}
}
.layout-tv .formDialog .dialogHeader { .layout-tv .formDialog .dialogHeader {
padding-top: 1.5em; padding-top: 1.5em;
padding-bottom: 1.5em; padding-bottom: 1.5em;

View file

@ -1,5 +1,5 @@
.recordingDialog .btnSubmit { .recordingDialog .btnSubmit iron-icon {
background-color: #cc3333; color: #cc3333;
} }
.layout-tv .btnHeaderSave { .layout-tv .btnHeaderSave {

View file

@ -7,7 +7,7 @@
<div class="dialogContent smoothScrollY"> <div class="dialogContent smoothScrollY">
<form class="dialogContentInner centeredContent"> <form class="dialogContentInner centeredContent">
<h1 class="itemName"></h1> <h1 class="itemName dialogContentTitle"></h1>
<p class="itemEpisodeName"></p> <p class="itemEpisodeName"></p>
<p class="itemMiscInfoPrimary" style="display: flex; align-items: center;"></p> <p class="itemMiscInfoPrimary" style="display: flex; align-items: center;"></p>
<p class="itemMiscInfoSecondary" style="display: flex; align-items: center;"></p> <p class="itemMiscInfoSecondary" style="display: flex; align-items: center;"></p>
@ -68,10 +68,7 @@
<p class="supporterTrial hide">${HeaderEnjoyDayTrial}</p> <p class="supporterTrial hide">${HeaderEnjoyDayTrial}</p>
<a class="clearLink btnSupporter hide" href="http://emby.media/premiere" target="_blank"><paper-button raised class="accent block"><iron-icon icon="nav:check"></iron-icon><span>${HeaderBecomeProjectSupporter}</span></paper-button></a> <a class="clearLink btnSupporter hide" href="http://emby.media/premiere" target="_blank"><paper-button raised class="accent block"><iron-icon icon="nav:check"></iron-icon><span>${HeaderBecomeProjectSupporter}</span></paper-button></a>
</div> </div>
<paper-button raised class="btnSubmit block"><iron-icon icon="mediainfo:fiber-manual-record"></iron-icon><span>${Record}</span></paper-button> <paper-button raised class="btnSubmit block" autofocus><iron-icon icon="mediainfo:fiber-manual-record"></iron-icon><span>${Record}</span></paper-button>
</div> </div>
<br />
<br />
<br />
</form> </form>
</div> </div>

View file

@ -13,7 +13,7 @@
<div class="dialogContent smoothScrollY"> <div class="dialogContent smoothScrollY">
<div class="dialogContentInner centeredContent"> <div class="dialogContentInner centeredContent">
<h1 class="itemName"></h1> <h1 class="itemName dialogContentTitle"></h1>
<p class="itemEpisodeName"></p> <p class="itemEpisodeName"></p>
<p class="itemMiscInfoPrimary" style="display: flex; align-items: center;"></p> <p class="itemMiscInfoPrimary" style="display: flex; align-items: center;"></p>
<p class="itemMiscInfoSecondary" style="display: flex; align-items: center;"></p> <p class="itemMiscInfoSecondary" style="display: flex; align-items: center;"></p>
@ -24,7 +24,6 @@
</p> </p>
<form> <form>
<br />
<div> <div>
<paper-input type="number" id="txtPrePaddingMinutes" pattern="[0-9]*" required="required" min="0" step="1" label="${LabelPrePaddingMinutes}"></paper-input> <paper-input type="number" id="txtPrePaddingMinutes" pattern="[0-9]*" required="required" min="0" step="1" label="${LabelPrePaddingMinutes}"></paper-input>
</div> </div>
@ -33,11 +32,7 @@
<paper-input type="number" id="txtPostPaddingMinutes" pattern="[0-9]*" required="required" min="0" step="1" label="${LabelPostPaddingMinutes}"></paper-input> <paper-input type="number" id="txtPostPaddingMinutes" pattern="[0-9]*" required="required" min="0" step="1" label="${LabelPostPaddingMinutes}"></paper-input>
</div> </div>
<br /> <br />
<br /> <paper-button raised class="btnSubmit block" autofocus><iron-icon icon="mediainfo:fiber-manual-record"></iron-icon><span>${Save}</span></paper-button>
<paper-button raised class="btnSubmit block"><iron-icon icon="mediainfo:fiber-manual-record"></iron-icon><span>${Save}</span></paper-button>
<br />
<br />
<br />
</form> </form>
</div> </div>
</div> </div>

View file

@ -30,14 +30,14 @@
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0" "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
}, },
"ignore": [], "ignore": [],
"homepage": "https://github.com/polymerelements/iron-a11y-keys-behavior", "homepage": "https://github.com/PolymerElements/iron-a11y-keys-behavior",
"_release": "1.1.2", "_release": "1.1.2",
"_resolution": { "_resolution": {
"type": "version", "type": "version",
"tag": "v1.1.2", "tag": "v1.1.2",
"commit": "0c2330c229a6fd3d200e2b84147ec6f94f17c22d" "commit": "0c2330c229a6fd3d200e2b84147ec6f94f17c22d"
}, },
"_source": "git://github.com/polymerelements/iron-a11y-keys-behavior.git", "_source": "git://github.com/PolymerElements/iron-a11y-keys-behavior.git",
"_target": "^1.0.0", "_target": "^1.0.0",
"_originalSource": "polymerelements/iron-a11y-keys-behavior" "_originalSource": "PolymerElements/iron-a11y-keys-behavior"
} }

View file

@ -34,6 +34,6 @@
"commit": "11c987b2eb3c73b388a79fc8aaea8ca01624f514" "commit": "11c987b2eb3c73b388a79fc8aaea8ca01624f514"
}, },
"_source": "git://github.com/Polymer/polymer.git", "_source": "git://github.com/Polymer/polymer.git",
"_target": "^1.0.0", "_target": "^1.2.0",
"_originalSource": "Polymer/polymer" "_originalSource": "Polymer/polymer"
} }

View file

@ -1,8 +1,8 @@
define(['browser'], function (browser) { define(['browser'], function (browser) {
var allPages = document.querySelectorAll('.mainAnimatedPage'); var allPages = document.querySelectorAll('.mainAnimatedPage');
var currentUrls = [];
var pageContainerCount = allPages.length; var pageContainerCount = allPages.length;
var animationDuration = 500;
var allowAnimation = true; var allowAnimation = true;
var selectedPageIndex = -1; var selectedPageIndex = -1;
@ -98,10 +98,16 @@ define(['browser'], function (browser) {
animate(animatable, previousAnimatable, options.transition, options.isBack).then(function () { animate(animatable, previousAnimatable, options.transition, options.isBack).then(function () {
selectedPageIndex = pageIndex; selectedPageIndex = pageIndex;
currentUrls[pageIndex] = options.url;
if (!options.cancel && previousAnimatable) { if (!options.cancel && previousAnimatable) {
afterAnimate(allPages, pageIndex); afterAnimate(allPages, pageIndex);
} }
// Temporary hack
// If a view renders UI in viewbeforeshow the lazy image loader will think the images aren't visible and won't load images
// The views need to be updated to start loading data in beforeshow, but not render until show
document.dispatchEvent(new CustomEvent('scroll', {}));
$.mobile = $.mobile || {}; $.mobile = $.mobile || {};
$.mobile.activePage = view; $.mobile.activePage = view;
@ -147,7 +153,7 @@ define(['browser'], function (browser) {
function normalizeNewView(options) { function normalizeNewView(options) {
if (options.view.indexOf('data-role="page"') == -1) { if (options.view.indexOf('data-role="page"') == -1) {
var html = '<div class="page-view" data-type="' + (options.type || '') + '" data-url="' + options.url + '">'; var html = '<div class="page-view" data-type="' + (options.type || '') + '">';
html += options.view; html += options.view;
html += '</div>'; html += '</div>';
return html; return html;
@ -158,7 +164,7 @@ define(['browser'], function (browser) {
var elem = parseHtml(options.view, hasScript); var elem = parseHtml(options.view, hasScript);
elem.classList.add('page-view'); elem.classList.add('page-view');
elem.setAttribute('data-type', options.type || ''); elem.setAttribute('data-type', options.type || '');
elem.setAttribute('data-url', options.url);
return { return {
elem: elem, elem: elem,
hasScript: hasScript hasScript: hasScript
@ -247,7 +253,7 @@ define(['browser'], function (browser) {
function fade(newAnimatedPage, oldAnimatedPage, transition, isBack) { function fade(newAnimatedPage, oldAnimatedPage, transition, isBack) {
var timings = { var timings = {
duration: animationDuration, duration: 140,
iterations: 1, iterations: 1,
easing: 'ease-out', easing: 'ease-out',
fill: 'both' fill: 'both'
@ -303,16 +309,6 @@ define(['browser'], function (browser) {
onBeforeChange = fn; onBeforeChange = fn;
} }
function sendResolve(resolve, view) {
// Don't report completion until the animation has finished, otherwise rendering may not perform well
setTimeout(function () {
resolve(view);
}, animationDuration);
}
function getSelectedIndex(allPages) { function getSelectedIndex(allPages) {
return selectedPageIndex; return selectedPageIndex;
@ -321,21 +317,13 @@ define(['browser'], function (browser) {
function tryRestoreView(options) { function tryRestoreView(options) {
var url = options.url; var url = options.url;
var view = document.querySelector(".page-view[data-url='" + url + "']"); var index = currentUrls.indexOf(url);
var page = parentWithClass(view, 'mainAnimatedPage');
if (view) {
var index = -1;
var pages = allPages;
for (var i = 0, length = pages.length; i < length; i++) {
if (pages[i] == page) {
index = i;
break;
}
}
if (index != -1) { if (index != -1) {
var page = allPages[index];
var view = page.querySelector(".page-view");
if (view) {
if (options.cancel) { if (options.cancel) {
return; return;
@ -360,6 +348,11 @@ define(['browser'], function (browser) {
afterAnimate(allPages, index); afterAnimate(allPages, index);
} }
// Temporary hack
// If a view renders UI in viewbeforeshow the lazy image loader will think the images aren't visible and won't load images
// The views need to be updated to start loading data in beforeshow, but not render until show
document.dispatchEvent(new CustomEvent('scroll', {}));
$.mobile = $.mobile || {}; $.mobile = $.mobile || {};
$.mobile.activePage = view; $.mobile.activePage = view;
@ -377,41 +370,17 @@ define(['browser'], function (browser) {
function reset() { function reset() {
var views = document.querySelectorAll(".mainAnimatedPage.hide .page-view"); currentUrls = [];
for (var i = 0, length = views.length; i < length; i++) {
var view = views[i];
triggerDestroy(view);
view.parentNode.removeChild(view);
}
} }
function parentWithClass(elem, className) { if (enableAnimation() && !browser.animate) {
while (!elem.classList || !elem.classList.contains(className)) {
elem = elem.parentNode;
if (!elem) {
return null;
}
}
return elem;
}
function init(isAnimationAllowed) {
if (allowAnimation && enableAnimation() && !browser.animate) {
require(['webAnimations']); require(['webAnimations']);
} }
}
return { return {
loadView: loadView, loadView: loadView,
tryRestoreView: tryRestoreView, tryRestoreView: tryRestoreView,
reset: reset, reset: reset,
setOnBeforeChange: setOnBeforeChange, setOnBeforeChange: setOnBeforeChange
init: init
}; };
}); });

View file

@ -10,9 +10,9 @@
font-weight: bold !important; font-weight: bold !important;
} }
/*.libraryViewNav { .libraryViewNav {
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.2); box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.2);
}*/ }
@media all and (min-width: 300px) { @media all and (min-width: 300px) {

View file

@ -76,7 +76,7 @@
var mdlTabs = page.querySelector('.libraryViewNav'); var mdlTabs = page.querySelector('.libraryViewNav');
libraryBrowser.configurePaperLibraryTabs(page, mdlTabs, page.querySelectorAll('.pageTabContent'), true); libraryBrowser.configurePaperLibraryTabs(page, mdlTabs, page.querySelectorAll('.pageTabContent'), [0, 1]);
mdlTabs.addEventListener('tabchange', function (e) { mdlTabs.addEventListener('tabchange', function (e) {
loadTab(page, parseInt(e.detail.selectedTabIndex)); loadTab(page, parseInt(e.detail.selectedTabIndex));

View file

@ -9,13 +9,9 @@
function loadNextUp(page) { function loadNextUp(page) {
var limit = AppInfo.hasLowImageBandwidth ?
16 :
24;
var query = { var query = {
Limit: limit, Limit: 24,
Fields: "PrimaryImageAspectRatio,SeriesInfo,DateCreated,SyncInfo", Fields: "PrimaryImageAspectRatio,SeriesInfo,DateCreated,SyncInfo",
UserId: Dashboard.getCurrentUserId(), UserId: Dashboard.getCurrentUserId(),
ImageTypeLimit: 1, ImageTypeLimit: 1,

View file

@ -3,13 +3,9 @@
function loadUpcoming(page) { function loadUpcoming(page) {
Dashboard.showLoadingMsg(); Dashboard.showLoadingMsg();
var limit = AppInfo.hasLowImageBandwidth && !enableScrollX() ?
24 :
40;
var query = { var query = {
Limit: limit, Limit: 40,
Fields: "AirTime,UserData,SeriesStudio,SyncInfo", Fields: "AirTime,UserData,SeriesStudio,SyncInfo",
UserId: Dashboard.getCurrentUserId(), UserId: Dashboard.getCurrentUserId(),
ImageTypeLimit: 1, ImageTypeLimit: 1,

View file

@ -249,7 +249,7 @@
var mdlTabs = view.querySelector('.libraryViewNav'); var mdlTabs = view.querySelector('.libraryViewNav');
libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), true); libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), [0,1,2,3]);
var tabControllers = []; var tabControllers = [];
var renderedTabs = []; var renderedTabs = [];

View file

@ -63,6 +63,8 @@
Dashboard.getCurrentUser().then(function (user) { Dashboard.getCurrentUser().then(function (user) {
window.scrollTo(0, 0);
renderImage(page, item, user); renderImage(page, item, user);
setInitialCollapsibleState(page, item, context, user); setInitialCollapsibleState(page, item, context, user);

View file

@ -13,6 +13,21 @@
return elem; return elem;
} }
function fadeInRight(elem) {
var pct = browserInfo.mobile ? '2%' : '1%';
var keyframes = [
{ opacity: '0', transform: 'translate3d(' + pct + ', 0, 0)', offset: 0 },
{ opacity: '1', transform: 'none', offset: 1 }];
elem.animate(keyframes, {
duration: 300,
iterations: 1,
easing: 'ease-out'
});
}
var libraryBrowser = (function (window, document, screen) { var libraryBrowser = (function (window, document, screen) {
// Regular Expressions for parsing tags and attributes // Regular Expressions for parsing tags and attributes
@ -225,7 +240,7 @@
}); });
}, },
configurePaperLibraryTabs: function (ownerpage, tabs, panels, animate) { configurePaperLibraryTabs: function (ownerpage, tabs, panels, animateTabs) {
if (!browserInfo.safari) { if (!browserInfo.safari) {
LibraryBrowser.configureSwipeTabs(ownerpage, tabs); LibraryBrowser.configureSwipeTabs(ownerpage, tabs);
@ -241,21 +256,6 @@
tabs.classList.add('hiddenScrollX'); tabs.classList.add('hiddenScrollX');
function fadeInRight(elem) {
var pct = browserInfo.mobile ? '1.5%' : '0.5%';
var keyframes = [
{ opacity: '0', transform: 'translate3d(' + pct + ', 0, 0)', offset: 0 },
{ opacity: '1', transform: 'none', offset: 1 }];
elem.animate(keyframes, {
duration: 300,
iterations: 1,
easing: 'ease-out'
});
}
tabs.addEventListener('click', function (e) { tabs.addEventListener('click', function (e) {
var current = tabs.querySelector('.is-active'); var current = tabs.querySelector('.is-active');
@ -267,24 +267,28 @@
current.classList.remove('is-active'); current.classList.remove('is-active');
panels[parseInt(current.getAttribute('data-index'))].classList.remove('is-active'); panels[parseInt(current.getAttribute('data-index'))].classList.remove('is-active');
} }
link.classList.add('is-active'); link.classList.add('is-active');
var index = parseInt(link.getAttribute('data-index')); var index = parseInt(link.getAttribute('data-index'));
var newPanel = panels[index];
if (animateTabs && animateTabs.indexOf(index) != -1 && /*browserInfo.animate &&*/ newPanel.animate) {
fadeInRight(newPanel);
}
// If toCenter is called syncronously within the click event, it sometimes ends up canceling it
setTimeout(function () {
tabs.dispatchEvent(new CustomEvent("tabchange", { tabs.dispatchEvent(new CustomEvent("tabchange", {
detail: { detail: {
selectedTabIndex: index selectedTabIndex: index
} }
})); }));
panels[index].classList.add('is-active'); newPanel.classList.add('is-active');
if (browserInfo.animate && animate) { //scrollHelper.toCenter(tabs, link, true);
fadeInRight(panels[index]); }, 100);
}
// If toCenter is called syncronously within the click event, it sometimes ends up canceling it
//setTimeout(function() {
// scrollHelper.toCenter(tabs, link, true);
//}, 10);
} }
}); });
@ -1722,7 +1726,7 @@
if (AppInfo.hasLowImageBandwidth) { if (AppInfo.hasLowImageBandwidth) {
if (!AppInfo.isNativeApp) { if (!AppInfo.isNativeApp) {
screenWidth *= .7; screenWidth *= .75;
} }
} else { } else {
screenWidth *= 1.2; screenWidth *= 1.2;

View file

@ -737,6 +737,7 @@
var html = title; var html = title;
if (window.$ && $.mobile) {
var page = $.mobile.activePage; var page = $.mobile.activePage;
if (page) { if (page) {
var helpUrl = page.getAttribute('data-helpurl'); var helpUrl = page.getAttribute('data-helpurl');
@ -745,6 +746,7 @@
html += '<a href="' + helpUrl + '" target="_blank" class="clearLink" style="margin-left:2em;" title="' + Globalize.translate('ButtonHelp') + '"><paper-button class="accent" style="margin:0;font-weight:normal;font-size:13px;padding:.25em;display:flex;align-items:center;"><iron-icon icon="info"></iron-icon><span>Help</span></paper-button></a>'; html += '<a href="' + helpUrl + '" target="_blank" class="clearLink" style="margin-left:2em;" title="' + Globalize.translate('ButtonHelp') + '"><paper-button class="accent" style="margin:0;font-weight:normal;font-size:13px;padding:.25em;display:flex;align-items:center;"><iron-icon icon="info"></iron-icon><span>Help</span></paper-button></a>';
} }
} }
}
document.querySelector('.libraryMenuButtonText').innerHTML = html; document.querySelector('.libraryMenuButtonText').innerHTML = html;
}, },

View file

@ -204,7 +204,7 @@
baseUrl += '?topParentId=' + topParentId; baseUrl += '?topParentId=' + topParentId;
} }
libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), true); libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), [0, 2, 3, 4]);
mdlTabs.addEventListener('tabchange', function (e) { mdlTabs.addEventListener('tabchange', function (e) {
loadTab(view, parseInt(e.detail.selectedTabIndex)); loadTab(view, parseInt(e.detail.selectedTabIndex));

View file

@ -303,7 +303,7 @@
baseUrl += '?topParentId=' + topParentId; baseUrl += '?topParentId=' + topParentId;
} }
libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent')); libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), [0, 4, 5]);
var tabControllers = []; var tabControllers = [];
var renderedTabs = []; var renderedTabs = [];

View file

@ -331,7 +331,7 @@
baseUrl += '?topParentId=' + topParentId; baseUrl += '?topParentId=' + topParentId;
} }
libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent')); libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), [0, 4, 5, 6]);
mdlTabs.addEventListener('tabchange', function (e) { mdlTabs.addEventListener('tabchange', function (e) {
loadTab(view, parseInt(e.detail.selectedTabIndex)); loadTab(view, parseInt(e.detail.selectedTabIndex));

View file

@ -246,13 +246,9 @@
function loadRecentlyAdded(elem, user) { function loadRecentlyAdded(elem, user) {
var limit = AppInfo.hasLowImageBandwidth ?
16 :
20;
var options = { var options = {
Limit: limit, Limit: 20,
Fields: "PrimaryImageAspectRatio,SyncInfo", Fields: "PrimaryImageAspectRatio,SyncInfo",
ImageTypeLimit: 1, ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Thumb" EnableImageTypes: "Primary,Backdrop,Thumb"

View file

@ -1183,11 +1183,6 @@ var Dashboard = {
options.enableImageEnhancers = false; options.enableImageEnhancers = false;
} }
if (AppInfo.forcedImageFormat && options.type != 'Logo') {
options.format = AppInfo.forcedImageFormat;
options.backgroundColor = '#1c1c1c';
}
}, },
loadExternalPlayer: function () { loadExternalPlayer: function () {
@ -1472,8 +1467,6 @@ var AppInfo = {};
AppInfo.enableDetailPageChapters = false; AppInfo.enableDetailPageChapters = false;
AppInfo.enableDetailsMenuImages = false; AppInfo.enableDetailsMenuImages = false;
AppInfo.enableMovieHomeSuggestions = false; AppInfo.enableMovieHomeSuggestions = false;
AppInfo.forcedImageFormat = 'jpg';
} }
} }
@ -1642,39 +1635,6 @@ var AppInfo = {};
}); });
} }
function initFastClick() {
require(["fastclick"], function (FastClick) {
FastClick.attach(document.body, {
tapDelay: 0
});
function parentWithClass(elem, className) {
while (!elem.classList || !elem.classList.contains(className)) {
elem = elem.parentNode;
if (!elem) {
return null;
}
}
return elem;
}
// Have to work around this issue of fast click breaking the panel dismiss
document.body.addEventListener('touchstart', function (e) {
var tgt = parentWithClass(e.target, 'ui-panel-dismiss');
if (tgt) {
$(tgt).click();
}
});
});
}
function setDocumentClasses(browser) { function setDocumentClasses(browser) {
var elem = document.documentElement; var elem = document.documentElement;
@ -1792,7 +1752,8 @@ var AppInfo = {};
globalize: embyWebComponentsBowerPath + "/globalize", globalize: embyWebComponentsBowerPath + "/globalize",
itemHelper: embyWebComponentsBowerPath + '/itemhelper', itemHelper: embyWebComponentsBowerPath + '/itemhelper',
itemShortcuts: embyWebComponentsBowerPath + "/shortcuts", itemShortcuts: embyWebComponentsBowerPath + "/shortcuts",
imageLoader: embyWebComponentsBowerPath + "/images/imagehelper" imageLoader: embyWebComponentsBowerPath + "/images/imagehelper",
webAnimations: bowerPath + '/web-animations-js/web-animations-next-lite.min'
}; };
if (navigator.webkitPersistentStorage) { if (navigator.webkitPersistentStorage) {
@ -2388,13 +2349,15 @@ var AppInfo = {};
defineRoute({ defineRoute({
path: '/channelitems.html', path: '/channelitems.html',
dependencies: [], dependencies: [],
autoFocus: false autoFocus: false,
transition: 'fade'
}); });
defineRoute({ defineRoute({
path: '/channels.html', path: '/channels.html',
dependencies: [], dependencies: [],
autoFocus: false autoFocus: false,
transition: 'fade'
}); });
defineRoute({ defineRoute({
@ -2562,7 +2525,8 @@ var AppInfo = {};
path: '/home.html', path: '/home.html',
dependencies: [], dependencies: [],
autoFocus: false, autoFocus: false,
controller: 'scripts/indexpage' controller: 'scripts/indexpage',
transition: 'fade'
}); });
defineRoute({ defineRoute({
@ -2575,14 +2539,16 @@ var AppInfo = {};
defineRoute({ defineRoute({
path: '/itemdetails.html', path: '/itemdetails.html',
dependencies: ['paper-button'], dependencies: ['paper-button'],
autoFocus: false autoFocus: false,
transition: 'fade'
}); });
defineRoute({ defineRoute({
path: '/itemlist.html', path: '/itemlist.html',
dependencies: ['paper-checkbox', 'scripts/alphapicker'], dependencies: ['paper-checkbox', 'scripts/alphapicker'],
autoFocus: false, autoFocus: false,
controller: 'scripts/itemlistpage' controller: 'scripts/itemlistpage',
transition: 'fade'
}); });
defineRoute({ defineRoute({
@ -2616,7 +2582,8 @@ var AppInfo = {};
path: '/livetv.html', path: '/livetv.html',
dependencies: ['paper-button', 'livetvcss'], dependencies: ['paper-button', 'livetvcss'],
controller: 'scripts/livetvsuggested', controller: 'scripts/livetvsuggested',
autoFocus: false autoFocus: false,
transition: 'fade'
}); });
defineRoute({ defineRoute({
@ -2732,14 +2699,16 @@ var AppInfo = {};
path: '/movies.html', path: '/movies.html',
dependencies: ['paper-checkbox', 'paper-fab', 'scripts/alphapicker', 'paper-button'], dependencies: ['paper-checkbox', 'paper-fab', 'scripts/alphapicker', 'paper-button'],
autoFocus: false, autoFocus: false,
controller: 'scripts/moviesrecommended' controller: 'scripts/moviesrecommended',
transition: 'fade'
}); });
defineRoute({ defineRoute({
path: '/music.html', path: '/music.html',
dependencies: ['scripts/alphapicker'], dependencies: ['scripts/alphapicker'],
controller: 'scripts/musicrecommended', controller: 'scripts/musicrecommended',
autoFocus: false autoFocus: false,
transition: 'fade'
}); });
defineRoute({ defineRoute({
@ -2821,7 +2790,8 @@ var AppInfo = {};
defineRoute({ defineRoute({
path: '/photos.html', path: '/photos.html',
dependencies: [], dependencies: [],
autoFocus: false autoFocus: false,
transition: 'fade'
}); });
defineRoute({ defineRoute({
@ -2834,7 +2804,8 @@ var AppInfo = {};
defineRoute({ defineRoute({
path: '/playlists.html', path: '/playlists.html',
dependencies: [], dependencies: [],
autoFocus: false autoFocus: false,
transition: 'fade'
}); });
defineRoute({ defineRoute({
@ -2948,7 +2919,8 @@ var AppInfo = {};
path: '/tv.html', path: '/tv.html',
dependencies: ['paper-checkbox', 'paper-icon-button-light', 'paper-button'], dependencies: ['paper-checkbox', 'paper-icon-button-light', 'paper-button'],
autoFocus: false, autoFocus: false,
controller: 'scripts/tvrecommended' controller: 'scripts/tvrecommended',
transition: 'fade'
}); });
defineRoute({ defineRoute({
@ -3282,6 +3254,7 @@ pageClassOn('viewinit', "page", function () {
page.classList.add("ui-page"); page.classList.add("ui-page");
page.classList.add("ui-page-theme-" + current); page.classList.add("ui-page-theme-" + current);
page.classList.add("ui-body-" + current);
var contents = page.querySelectorAll("div[data-role='content']"); var contents = page.querySelectorAll("div[data-role='content']");
@ -3309,13 +3282,9 @@ pageClassOn('viewshow', "page", function () {
if (currentTheme == 'a') { if (currentTheme == 'a') {
docElem.classList.add('background-theme-a'); docElem.classList.add('background-theme-a');
docElem.classList.remove('background-theme-b'); docElem.classList.remove('background-theme-b');
page.classList.add('ui-body-a');
page.classList.remove('ui-body-b');
} else { } else {
docElem.classList.add('background-theme-b'); docElem.classList.add('background-theme-b');
docElem.classList.remove('background-theme-a'); docElem.classList.remove('background-theme-a');
page.classList.add('ui-body-b');
page.classList.remove('ui-body-a');
} }
var apiClient = window.ApiClient; var apiClient = window.ApiClient;

View file

@ -13,16 +13,10 @@
var parentId = params.topParentId; var parentId = params.topParentId;
var limit = 30;
if (AppInfo.hasLowImageBandwidth) {
limit = 16;
}
var options = { var options = {
IncludeItemTypes: "Episode", IncludeItemTypes: "Episode",
Limit: limit, Limit: 30,
Fields: "PrimaryImageAspectRatio,SyncInfo", Fields: "PrimaryImageAspectRatio,SyncInfo",
ParentId: parentId, ParentId: parentId,
ImageTypeLimit: 1, ImageTypeLimit: 1,

View file

@ -24,13 +24,9 @@
function loadNextUp() { function loadNextUp() {
var limit = AppInfo.hasLowImageBandwidth ?
16 :
24;
var query = { var query = {
Limit: limit, Limit: 24,
Fields: "PrimaryImageAspectRatio,SeriesInfo,DateCreated,SyncInfo", Fields: "PrimaryImageAspectRatio,SeriesInfo,DateCreated,SyncInfo",
UserId: Dashboard.getCurrentUserId(), UserId: Dashboard.getCurrentUserId(),
ImageTypeLimit: 1, ImageTypeLimit: 1,
@ -258,7 +254,7 @@
view.querySelector('#resumableItems').classList.remove('hiddenScrollX'); view.querySelector('#resumableItems').classList.remove('hiddenScrollX');
} }
libraryBrowser.createCardMenus(view.querySelector('#resumableItems')); libraryBrowser.createCardMenus(view.querySelector('#resumableItems'));
libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent')); libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), [0, 1, 2, 4, 5, 6]);
mdlTabs.addEventListener('tabchange', function (e) { mdlTabs.addEventListener('tabchange', function (e) {
loadTab(view, parseInt(e.detail.selectedTabIndex)); loadTab(view, parseInt(e.detail.selectedTabIndex));

View file

@ -4,13 +4,9 @@
Dashboard.showLoadingMsg(); Dashboard.showLoadingMsg();
var limit = AppInfo.hasLowImageBandwidth && !enableScrollX() ?
24 :
40;
var query = { var query = {
Limit: limit, Limit: 40,
Fields: "AirTime,UserData,SeriesStudio,SyncInfo", Fields: "AirTime,UserData,SeriesStudio,SyncInfo",
UserId: Dashboard.getCurrentUserId(), UserId: Dashboard.getCurrentUserId(),
ImageTypeLimit: 1, ImageTypeLimit: 1,