mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
commit
a844f251f3
24 changed files with 130 additions and 207 deletions
|
@ -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",
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
.recordingDialog .btnSubmit {
|
.recordingDialog .btnSubmit iron-icon {
|
||||||
background-color: #cc3333;
|
color: #cc3333;
|
||||||
}
|
}
|
||||||
|
|
||||||
.layout-tv .btnHeaderSave {
|
.layout-tv .btnHeaderSave {
|
||||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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"
|
||||||
}
|
}
|
|
@ -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"
|
||||||
}
|
}
|
|
@ -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) {
|
if (index != -1) {
|
||||||
|
var page = allPages[index];
|
||||||
|
var view = page.querySelector(".page-view");
|
||||||
|
|
||||||
var index = -1;
|
if (view) {
|
||||||
var pages = allPages;
|
|
||||||
for (var i = 0, length = pages.length; i < length; i++) {
|
|
||||||
if (pages[i] == page) {
|
|
||||||
index = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (index != -1) {
|
|
||||||
|
|
||||||
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) {
|
||||||
|
require(['webAnimations']);
|
||||||
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']);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
loadView: loadView,
|
loadView: loadView,
|
||||||
tryRestoreView: tryRestoreView,
|
tryRestoreView: tryRestoreView,
|
||||||
reset: reset,
|
reset: reset,
|
||||||
setOnBeforeChange: setOnBeforeChange,
|
setOnBeforeChange: setOnBeforeChange
|
||||||
init: init
|
|
||||||
};
|
};
|
||||||
});
|
});
|
|
@ -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) {
|
||||||
|
|
||||||
|
|
|
@ -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));
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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 = [];
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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'));
|
||||||
tabs.dispatchEvent(new CustomEvent("tabchange", {
|
var newPanel = panels[index];
|
||||||
detail: {
|
|
||||||
selectedTabIndex: index
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
|
|
||||||
panels[index].classList.add('is-active');
|
if (animateTabs && animateTabs.indexOf(index) != -1 && /*browserInfo.animate &&*/ newPanel.animate) {
|
||||||
|
fadeInRight(newPanel);
|
||||||
if (browserInfo.animate && animate) {
|
|
||||||
fadeInRight(panels[index]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If toCenter is called syncronously within the click event, it sometimes ends up canceling it
|
// If toCenter is called syncronously within the click event, it sometimes ends up canceling it
|
||||||
//setTimeout(function() {
|
setTimeout(function () {
|
||||||
// scrollHelper.toCenter(tabs, link, true);
|
|
||||||
//}, 10);
|
tabs.dispatchEvent(new CustomEvent("tabchange", {
|
||||||
|
detail: {
|
||||||
|
selectedTabIndex: index
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
|
newPanel.classList.add('is-active');
|
||||||
|
|
||||||
|
//scrollHelper.toCenter(tabs, link, true);
|
||||||
|
}, 100);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
|
|
@ -737,12 +737,14 @@
|
||||||
|
|
||||||
var html = title;
|
var html = title;
|
||||||
|
|
||||||
var page = $.mobile.activePage;
|
if (window.$ && $.mobile) {
|
||||||
if (page) {
|
var page = $.mobile.activePage;
|
||||||
var helpUrl = page.getAttribute('data-helpurl');
|
if (page) {
|
||||||
|
var helpUrl = page.getAttribute('data-helpurl');
|
||||||
|
|
||||||
if (helpUrl) {
|
if (helpUrl) {
|
||||||
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>';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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));
|
||||||
|
|
|
@ -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 = [];
|
||||||
|
|
|
@ -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));
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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));
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue