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

Merge remote-tracking branch 'upstream/master' into lazyloader

This commit is contained in:
MrTimscampi 2020-05-07 11:01:14 +02:00
commit 7dc1cf771d
315 changed files with 10374 additions and 9194 deletions

View file

@ -1,5 +1,5 @@
define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardBuilder", "userSettings", "globalize", "emby-itemscontainer"], function (loading, events, libraryBrowser, imageLoader, listView, cardBuilder, userSettings, globalize) {
"use strict";
define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardBuilder', 'userSettings', 'globalize', 'emby-itemscontainer'], function (loading, events, libraryBrowser, imageLoader, listView, cardBuilder, userSettings, globalize) {
'use strict';
return function (view, params, tabContent) {
function getPageData(context) {
@ -9,17 +9,17 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
if (!pageData) {
pageData = data[key] = {
query: {
SortBy: "SeriesSortName,SortName",
SortOrder: "Ascending",
IncludeItemTypes: "Episode",
SortBy: 'SeriesSortName,SortName',
SortOrder: 'Ascending',
IncludeItemTypes: 'Episode',
Recursive: true,
Fields: "PrimaryImageAspectRatio,MediaSourceCount,UserData",
Fields: 'PrimaryImageAspectRatio,MediaSourceCount,UserData',
IsMissing: false,
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Thumb",
EnableImageTypes: 'Primary,Backdrop,Thumb',
StartIndex: 0
},
view: libraryBrowser.getSavedView(key) || "Poster"
view: libraryBrowser.getSavedView(key) || 'Poster'
};
if (userSettings.libraryPageSize() > 0) {
@ -39,7 +39,7 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
function getSavedQueryKey(context) {
if (!context.savedQueryKey) {
context.savedQueryKey = libraryBrowser.getSavedQueryKey("episodes");
context.savedQueryKey = libraryBrowser.getSavedQueryKey('episodes');
}
return context.savedQueryKey;
@ -47,17 +47,17 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
function onViewStyleChange() {
var viewStyle = self.getCurrentViewStyle();
var itemsContainer = tabContent.querySelector(".itemsContainer");
var itemsContainer = tabContent.querySelector('.itemsContainer');
if ("List" == viewStyle) {
itemsContainer.classList.add("vertical-list");
itemsContainer.classList.remove("vertical-wrap");
if ('List' == viewStyle) {
itemsContainer.classList.add('vertical-list');
itemsContainer.classList.remove('vertical-wrap');
} else {
itemsContainer.classList.remove("vertical-list");
itemsContainer.classList.add("vertical-wrap");
itemsContainer.classList.remove('vertical-list');
itemsContainer.classList.add('vertical-wrap');
}
itemsContainer.innerHTML = "";
itemsContainer.innerHTML = '';
}
function reloadItems(page) {
@ -100,17 +100,17 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
filterButton: false
});
var viewStyle = self.getCurrentViewStyle();
var itemsContainer = tabContent.querySelector(".itemsContainer");
if (viewStyle == "List") {
var itemsContainer = tabContent.querySelector('.itemsContainer');
if (viewStyle == 'List') {
html = listView.getListViewHtml({
items: result.Items,
sortBy: query.SortBy,
showParentTitle: true
});
} else if (viewStyle == "PosterCard") {
} else if (viewStyle == 'PosterCard') {
html = cardBuilder.getCardsHtml({
items: result.Items,
shape: "backdrop",
shape: 'backdrop',
showTitle: true,
showParentTitle: true,
scalable: true,
@ -119,7 +119,7 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
} else {
html = cardBuilder.getCardsHtml({
items: result.Items,
shape: "backdrop",
shape: 'backdrop',
showTitle: true,
showParentTitle: true,
overlayText: false,
@ -132,19 +132,19 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
var length;
var elems;
elems = tabContent.querySelectorAll(".paging");
elems = tabContent.querySelectorAll('.paging');
for (i = 0, length = elems.length; i < length; i++) {
elems[i].innerHTML = pagingHtml;
}
elems = tabContent.querySelectorAll(".btnNextPage");
elems = tabContent.querySelectorAll('.btnNextPage');
for (i = 0, length = elems.length; i < length; i++) {
elems[i].addEventListener("click", onNextPageClick);
elems[i].addEventListener('click', onNextPageClick);
}
elems = tabContent.querySelectorAll(".btnPreviousPage");
elems = tabContent.querySelectorAll('.btnPreviousPage');
for (i = 0, length = elems.length; i < length; i++) {
elems[i].addEventListener("click", onPreviousPageClick);
elems[i].addEventListener('click', onPreviousPageClick);
}
itemsContainer.innerHTML = html;
@ -153,7 +153,7 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
loading.hide();
isLoading = false;
require(["autoFocuser"], function (autoFocuser) {
require(['autoFocuser'], function (autoFocuser) {
autoFocuser.autoFocus(page);
});
});
@ -164,13 +164,13 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
var isLoading = false;
self.showFilterMenu = function () {
require(["components/filterdialog/filterdialog"], function (filterDialogFactory) {
require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
var filterDialog = new filterDialogFactory({
query: getQuery(tabContent),
mode: "episodes",
mode: 'episodes',
serverId: ApiClient.serverId()
});
events.on(filterDialog, "filterchange", function () {
events.on(filterDialog, 'filterchange', function () {
reloadItems(tabContent);
});
filterDialog.show();
@ -182,35 +182,35 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
};
function initPage(tabContent) {
tabContent.querySelector(".btnFilter").addEventListener("click", function () {
tabContent.querySelector('.btnFilter').addEventListener('click', function () {
self.showFilterMenu();
});
tabContent.querySelector(".btnSort").addEventListener("click", function (e) {
tabContent.querySelector('.btnSort').addEventListener('click', function (e) {
libraryBrowser.showSortMenu({
items: [{
name: globalize.translate("OptionNameSort"),
id: "SeriesSortName,SortName"
name: globalize.translate('OptionNameSort'),
id: 'SeriesSortName,SortName'
}, {
name: globalize.translate("OptionTvdbRating"),
id: "CommunityRating,SeriesSortName,SortName"
name: globalize.translate('OptionTvdbRating'),
id: 'CommunityRating,SeriesSortName,SortName'
}, {
name: globalize.translate("OptionDateAdded"),
id: "DateCreated,SeriesSortName,SortName"
name: globalize.translate('OptionDateAdded'),
id: 'DateCreated,SeriesSortName,SortName'
}, {
name: globalize.translate("OptionPremiereDate"),
id: "PremiereDate,SeriesSortName,SortName"
name: globalize.translate('OptionPremiereDate'),
id: 'PremiereDate,SeriesSortName,SortName'
}, {
name: globalize.translate("OptionDatePlayed"),
id: "DatePlayed,SeriesSortName,SortName"
name: globalize.translate('OptionDatePlayed'),
id: 'DatePlayed,SeriesSortName,SortName'
}, {
name: globalize.translate("OptionParentalRating"),
id: "OfficialRating,SeriesSortName,SortName"
name: globalize.translate('OptionParentalRating'),
id: 'OfficialRating,SeriesSortName,SortName'
}, {
name: globalize.translate("OptionPlayCount"),
id: "PlayCount,SeriesSortName,SortName"
name: globalize.translate('OptionPlayCount'),
id: 'PlayCount,SeriesSortName,SortName'
}, {
name: globalize.translate("OptionRuntime"),
id: "Runtime,SeriesSortName,SortName"
name: globalize.translate('OptionRuntime'),
id: 'Runtime,SeriesSortName,SortName'
}],
callback: function () {
reloadItems(tabContent);
@ -219,11 +219,11 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
button: e.target
});
});
var btnSelectView = tabContent.querySelector(".btnSelectView");
btnSelectView.addEventListener("click", function (e) {
libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), "List,Poster,PosterCard".split(","));
var btnSelectView = tabContent.querySelector('.btnSelectView');
btnSelectView.addEventListener('click', function (e) {
libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(','));
});
btnSelectView.addEventListener("layoutchange", function (e) {
btnSelectView.addEventListener('layoutchange', function (e) {
var viewStyle = e.detail.viewStyle;
getPageData(tabContent).view = viewStyle;
libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle);

View file

@ -1,5 +1,5 @@
define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader", "apphost", "globalize", "appRouter", "dom", "emby-button"], function (layoutManager, loading, libraryBrowser, cardBuilder, lazyLoader, appHost, globalize, appRouter, dom) {
"use strict";
define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader', 'apphost', 'globalize', 'appRouter', 'dom', 'emby-button'], function (layoutManager, loading, libraryBrowser, cardBuilder, lazyLoader, appHost, globalize, appRouter, dom) {
'use strict';
return function (view, params, tabContent) {
function getPageData() {
@ -9,13 +9,13 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader
if (!pageData) {
pageData = data[key] = {
query: {
SortBy: "SortName",
SortOrder: "Ascending",
IncludeItemTypes: "Series",
SortBy: 'SortName',
SortOrder: 'Ascending',
IncludeItemTypes: 'Series',
Recursive: true,
EnableTotalRecordCount: false
},
view: "Poster"
view: 'Poster'
};
pageData.query.ParentId = params.topParentId;
libraryBrowser.loadSavedQueryValues(key, pageData.query);
@ -29,7 +29,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader
}
function getSavedQueryKey() {
return libraryBrowser.getSavedQueryKey("seriesgenres");
return libraryBrowser.getSavedQueryKey('seriesgenres');
}
function getPromise() {
@ -43,30 +43,30 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader
}
function getThumbShape() {
return enableScrollX() ? "overflowBackdrop" : "backdrop";
return enableScrollX() ? 'overflowBackdrop' : 'backdrop';
}
function getPortraitShape() {
return enableScrollX() ? "overflowPortrait" : "portrait";
return enableScrollX() ? 'overflowPortrait' : 'portrait';
}
function fillItemsContainer(entry) {
var elem = entry.target;
var id = elem.getAttribute("data-id");
var id = elem.getAttribute('data-id');
var viewStyle = self.getCurrentViewStyle();
var limit = "Thumb" == viewStyle || "ThumbCard" == viewStyle ? 5 : 9;
var limit = 'Thumb' == viewStyle || 'ThumbCard' == viewStyle ? 5 : 9;
if (enableScrollX()) {
limit = 10;
}
var enableImageTypes = "Thumb" == viewStyle || "ThumbCard" == viewStyle ? "Primary,Backdrop,Thumb" : "Primary";
var enableImageTypes = 'Thumb' == viewStyle || 'ThumbCard' == viewStyle ? 'Primary,Backdrop,Thumb' : 'Primary';
var query = {
SortBy: "SortName",
SortOrder: "Ascending",
IncludeItemTypes: "Series",
SortBy: 'SortName',
SortOrder: 'Ascending',
IncludeItemTypes: 'Series',
Recursive: true,
Fields: "PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo",
Fields: 'PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo',
ImageTypeLimit: 1,
EnableImageTypes: enableImageTypes,
Limit: limit,
@ -75,9 +75,9 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader
ParentId: params.topParentId
};
ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function (result) {
var supportsImageAnalysis = appHost.supports("imageanalysis");
var supportsImageAnalysis = appHost.supports('imageanalysis');
if (viewStyle == "Thumb") {
if (viewStyle == 'Thumb') {
cardBuilder.buildCards(result.Items, {
itemsContainer: elem,
shape: getThumbShape(),
@ -88,7 +88,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader
overlayMoreButton: true,
allowBottomPadding: false
});
} else if (viewStyle == "ThumbCard") {
} else if (viewStyle == 'ThumbCard') {
cardBuilder.buildCards(result.Items, {
itemsContainer: elem,
shape: getThumbShape(),
@ -99,7 +99,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader
cardLayout: true,
showYear: true
});
} else if (viewStyle == "PosterCard") {
} else if (viewStyle == 'PosterCard') {
cardBuilder.buildCards(result.Items, {
itemsContainer: elem,
shape: getPortraitShape(),
@ -109,7 +109,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader
cardLayout: true,
showYear: true
});
} else if (viewStyle == "Poster") {
} else if (viewStyle == 'Poster') {
cardBuilder.buildCards(result.Items, {
itemsContainer: elem,
shape: getPortraitShape(),
@ -122,7 +122,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader
});
}
if (result.Items.length >= query.Limit) {
tabContent.querySelector(".btnMoreFromGenre" + id + " i").classList.remove("hide");
tabContent.querySelector('.btnMoreFromGenre' + id + ' .material-icons').classList.remove('hide');
}
});
}
@ -130,8 +130,8 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader
function reloadItems(context, promise) {
var query = getQuery();
promise.then(function (result) {
var elem = context.querySelector("#items");
var html = "";
var elem = context.querySelector('#items');
var html = '';
var items = result.Items;
for (var i = 0, length = items.length; i < length; i++) {
@ -139,26 +139,26 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader
html += '<div class="verticalSection">';
html += '<div class="sectionTitleContainer sectionTitleContainer-cards padded-left">';
html += '<a is="emby-linkbutton" href="' + appRouter.getRouteUrl(item, {
context: "tvshows",
context: 'tvshows',
parentId: params.topParentId
}) + '" class="more button-flat button-flat-mini sectionTitleTextButton btnMoreFromGenre' + item.Id + '">';
html += '<h2 class="sectionTitle sectionTitle-cards">';
html += item.Name;
html += "</h2>";
html += '<i class="material-icons hide chevron_right"></i>';
html += "</a>";
html += "</div>";
html += '</h2>';
html += '<span class="material-icons hide chevron_right"></span>';
html += '</a>';
html += '</div>';
if (enableScrollX()) {
var scrollXClass = "scrollX hiddenScrollX";
var scrollXClass = 'scrollX hiddenScrollX';
if (layoutManager.tv) {
scrollXClass += "smoothScrollX padded-top-focusscale padded-bottom-focusscale";
scrollXClass += 'smoothScrollX padded-top-focusscale padded-bottom-focusscale';
}
html += '<div is="emby-itemscontainer" class="itemsContainer ' + scrollXClass + ' lazy padded-left padded-right" data-id="' + item.Id + '">';
} else {
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap lazy padded-left padded-right" data-id="' + item.Id + '">';
}
html += "</div>";
html += "</div>";
html += '</div>';
html += '</div>';
}
elem.innerHTML = html;
@ -177,7 +177,7 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader
var data = {};
self.getViewStyles = function () {
return "Poster,PosterCard,Thumb,ThumbCard".split(",");
return 'Poster,PosterCard,Thumb,ThumbCard'.split(',');
};
self.getCurrentViewStyle = function () {

View file

@ -1,28 +1,28 @@
define(["loading", "components/groupedcards", "cardBuilder", "apphost", "imageLoader"], function (loading, groupedcards, cardBuilder, appHost, imageLoader) {
"use strict";
define(['loading', 'components/groupedcards', 'cardBuilder', 'apphost', 'imageLoader'], function (loading, groupedcards, cardBuilder, appHost, imageLoader) {
'use strict';
function getLatestPromise(context, params) {
loading.show();
var userId = ApiClient.getCurrentUserId();
var parentId = params.topParentId;
var options = {
IncludeItemTypes: "Episode",
IncludeItemTypes: 'Episode',
Limit: 30,
Fields: "PrimaryImageAspectRatio,BasicSyncInfo",
Fields: 'PrimaryImageAspectRatio,BasicSyncInfo',
ParentId: parentId,
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Thumb"
EnableImageTypes: 'Primary,Backdrop,Thumb'
};
return ApiClient.getJSON(ApiClient.getUrl("Users/" + userId + "/Items/Latest", options));
return ApiClient.getJSON(ApiClient.getUrl('Users/' + userId + '/Items/Latest', options));
}
function loadLatest(context, params, promise) {
promise.then(function (items) {
var html = "";
appHost.supports("imageanalysis");
var html = '';
appHost.supports('imageanalysis');
html += cardBuilder.getCardsHtml({
items: items,
shape: "backdrop",
shape: 'backdrop',
preferThumb: true,
showTitle: true,
showSeriesYear: true,
@ -36,12 +36,12 @@ define(["loading", "components/groupedcards", "cardBuilder", "apphost", "imageLo
overlayPlayButton: true,
lines: 2
});
var elem = context.querySelector("#latestEpisodes");
var elem = context.querySelector('#latestEpisodes');
elem.innerHTML = html;
imageLoader.lazyChildren(elem);
loading.hide();
require(["autoFocuser"], function (autoFocuser) {
require(['autoFocuser'], function (autoFocuser) {
autoFocuser.autoFocus(context);
});
});
@ -59,6 +59,6 @@ define(["loading", "components/groupedcards", "cardBuilder", "apphost", "imageLo
loadLatest(tabContent, params, latestPromise);
};
tabContent.querySelector("#latestEpisodes").addEventListener("click", groupedcards.onItemsContainerClick);
tabContent.querySelector('#latestEpisodes').addEventListener('click', groupedcards.onItemsContainerClick);
};
});

View file

@ -1,39 +1,39 @@
define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "dom", "userSettings", "cardBuilder", "playbackManager", "mainTabsManager", "globalize", "scrollStyles", "emby-itemscontainer", "emby-button"], function (events, inputManager, libraryMenu, layoutManager, loading, dom, userSettings, cardBuilder, playbackManager, mainTabsManager, globalize) {
"use strict";
define(['events', 'inputManager', 'libraryMenu', 'layoutManager', 'loading', 'dom', 'userSettings', 'cardBuilder', 'playbackManager', 'mainTabsManager', 'globalize', 'scrollStyles', 'emby-itemscontainer', 'emby-button'], function (events, inputManager, libraryMenu, layoutManager, loading, dom, userSettings, cardBuilder, playbackManager, mainTabsManager, globalize) {
'use strict';
function getTabs() {
return [{
name: globalize.translate("TabShows")
name: globalize.translate('TabShows')
}, {
name: globalize.translate("TabSuggestions")
name: globalize.translate('TabSuggestions')
}, {
name: globalize.translate("TabLatest")
name: globalize.translate('TabLatest')
}, {
name: globalize.translate("TabUpcoming")
name: globalize.translate('TabUpcoming')
}, {
name: globalize.translate("TabGenres")
name: globalize.translate('TabGenres')
}, {
name: globalize.translate("TabNetworks")
name: globalize.translate('TabNetworks')
}, {
name: globalize.translate("TabEpisodes")
name: globalize.translate('TabEpisodes')
}, {
name: globalize.translate("ButtonSearch"),
cssClass: "searchTabButton"
name: globalize.translate('ButtonSearch'),
cssClass: 'searchTabButton'
}];
}
function getDefaultTabIndex(folderId) {
switch (userSettings.get("landing-" + folderId)) {
case "suggestions":
switch (userSettings.get('landing-' + folderId)) {
case 'suggestions':
return 1;
case "latest":
case 'latest':
return 2;
case "favorites":
case 'favorites':
return 1;
case "genres":
case 'genres':
return 4;
default:
@ -43,19 +43,19 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do
function setScrollClasses(elem, scrollX) {
if (scrollX) {
elem.classList.add("hiddenScrollX");
elem.classList.add('hiddenScrollX');
if (layoutManager.tv) {
elem.classList.add("smoothScrollX");
elem.classList.add('smoothScrollX');
}
elem.classList.add("scrollX");
elem.classList.remove("vertical-wrap");
elem.classList.add('scrollX');
elem.classList.remove('vertical-wrap');
} else {
elem.classList.remove("hiddenScrollX");
elem.classList.remove("smoothScrollX");
elem.classList.remove("scrollX");
elem.classList.add("vertical-wrap");
elem.classList.remove('hiddenScrollX');
elem.classList.remove('smoothScrollX');
elem.classList.remove('scrollX');
elem.classList.add('vertical-wrap');
}
}
@ -69,25 +69,25 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do
function loadNextUp() {
var query = {
Limit: 24,
Fields: "PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo",
Fields: 'PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo',
UserId: ApiClient.getCurrentUserId(),
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Thumb",
EnableImageTypes: 'Primary,Backdrop,Thumb',
EnableTotalRecordCount: false
};
query.ParentId = libraryMenu.getTopParentId();
ApiClient.getNextUpEpisodes(query).then(function (result) {
if (result.Items.length) {
view.querySelector(".noNextUpItems").classList.add("hide");
view.querySelector('.noNextUpItems').classList.add('hide');
} else {
view.querySelector(".noNextUpItems").classList.remove("hide");
view.querySelector('.noNextUpItems').classList.remove('hide');
}
var container = view.querySelector("#nextUpItems");
var container = view.querySelector('#nextUpItems');
cardBuilder.buildCards(result.Items, {
itemsContainer: container,
preferThumb: true,
shape: "backdrop",
shape: 'backdrop',
scalable: true,
showTitle: true,
showParentTitle: true,
@ -98,7 +98,7 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do
});
loading.hide();
require(["autoFocuser"], function (autoFocuser) {
require(['autoFocuser'], function (autoFocuser) {
autoFocuser.autoFocus(view);
});
});
@ -109,7 +109,7 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do
}
function getThumbShape() {
return enableScrollX() ? "overflowBackdrop" : "backdrop";
return enableScrollX() ? 'overflowBackdrop' : 'backdrop';
}
function loadResume() {
@ -117,28 +117,28 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do
var screenWidth = dom.getWindowSize().innerWidth;
var limit = screenWidth >= 1600 ? 5 : 6;
var options = {
SortBy: "DatePlayed",
SortOrder: "Descending",
IncludeItemTypes: "Episode",
Filters: "IsResumable",
SortBy: 'DatePlayed',
SortOrder: 'Descending',
IncludeItemTypes: 'Episode',
Filters: 'IsResumable',
Limit: limit,
Recursive: true,
Fields: "PrimaryImageAspectRatio,SeriesInfo,UserData,BasicSyncInfo",
ExcludeLocationTypes: "Virtual",
Fields: 'PrimaryImageAspectRatio,SeriesInfo,UserData,BasicSyncInfo',
ExcludeLocationTypes: 'Virtual',
ParentId: parentId,
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Thumb",
EnableImageTypes: 'Primary,Backdrop,Thumb',
EnableTotalRecordCount: false
};
ApiClient.getItems(ApiClient.getCurrentUserId(), options).then(function (result) {
if (result.Items.length) {
view.querySelector("#resumableSection").classList.remove("hide");
view.querySelector('#resumableSection').classList.remove('hide');
} else {
view.querySelector("#resumableSection").classList.add("hide");
view.querySelector('#resumableSection').classList.add('hide');
}
var allowBottomPadding = !enableScrollX();
var container = view.querySelector("#resumableItems");
var container = view.querySelector('#resumableItems');
cardBuilder.buildCards(result.Items, {
itemsContainer: container,
preferThumb: true,
@ -165,7 +165,7 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do
}
function getTabContainers() {
return view.querySelectorAll(".pageTabContent");
return view.querySelectorAll('.pageTabContent');
}
function initTabs() {
@ -177,34 +177,34 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do
switch (index) {
case 0:
depends.push("controllers/shows/tvshows");
depends.push('controllers/shows/tvshows');
break;
case 1:
break;
case 2:
depends.push("controllers/shows/tvlatest");
depends.push('controllers/shows/tvlatest');
break;
case 3:
depends.push("controllers/shows/tvupcoming");
depends.push('controllers/shows/tvupcoming');
break;
case 4:
depends.push("controllers/shows/tvgenres");
depends.push('controllers/shows/tvgenres');
break;
case 5:
depends.push("controllers/shows/tvstudios");
depends.push('controllers/shows/tvstudios');
break;
case 6:
depends.push("controllers/shows/episodes");
depends.push('controllers/shows/episodes');
break;
case 7:
depends.push("scripts/searchtab");
depends.push('scripts/searchtab');
}
require(depends, function (controllerFactory) {
@ -224,7 +224,7 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do
controller = self;
} else if (index === 7) {
controller = new controllerFactory(view, tabContent, {
collectionType: "tvshows",
collectionType: 'tvshows',
parentId: params.topParentId
});
} else {
@ -263,7 +263,7 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do
}
function onPlaybackStop(e, state) {
if (state.NowPlayingItem && state.NowPlayingItem.MediaType == "Video") {
if (state.NowPlayingItem && state.NowPlayingItem.MediaType == 'Video') {
renderedTabs = [];
mainTabsManager.getTabsElement().triggerTabChange();
}
@ -272,16 +272,16 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do
function onWebSocketMessage(e, data) {
var msg = data;
if (msg.MessageType === "UserDataChanged" && msg.Data.UserId == ApiClient.getCurrentUserId()) {
if (msg.MessageType === 'UserDataChanged' && msg.Data.UserId == ApiClient.getCurrentUserId()) {
renderedTabs = [];
}
}
function onInputCommand(e) {
switch (e.detail.command) {
case "search":
case 'search':
e.preventDefault();
Dashboard.navigate("search.html?collectionType=tv&parentId=" + params.topParentId);
Dashboard.navigate('search.html?collectionType=tv&parentId=' + params.topParentId);
}
}
@ -292,7 +292,7 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do
self.initTab = function () {
var tabContent = self.tabContent;
setScrollClasses(tabContent.querySelector("#resumableItems"), enableScrollX());
setScrollClasses(tabContent.querySelector('#resumableItems'), enableScrollX());
};
self.renderTab = function () {
@ -301,34 +301,34 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do
var tabControllers = [];
var renderedTabs = [];
setScrollClasses(view.querySelector("#resumableItems"), enableScrollX());
view.addEventListener("viewshow", function (e) {
setScrollClasses(view.querySelector('#resumableItems'), enableScrollX());
view.addEventListener('viewshow', function (e) {
isViewRestored = e.detail.isRestored;
initTabs();
if (!view.getAttribute("data-title")) {
if (!view.getAttribute('data-title')) {
var parentId = params.topParentId;
if (parentId) {
ApiClient.getItem(ApiClient.getCurrentUserId(), parentId).then(function (item) {
view.setAttribute("data-title", item.Name);
view.setAttribute('data-title', item.Name);
libraryMenu.setTitle(item.Name);
});
} else {
view.setAttribute("data-title", globalize.translate("TabShows"));
libraryMenu.setTitle(globalize.translate("TabShows"));
view.setAttribute('data-title', globalize.translate('TabShows'));
libraryMenu.setTitle(globalize.translate('TabShows'));
}
}
events.on(playbackManager, "playbackstop", onPlaybackStop);
events.on(ApiClient, "message", onWebSocketMessage);
events.on(playbackManager, 'playbackstop', onPlaybackStop);
events.on(ApiClient, 'message', onWebSocketMessage);
inputManager.on(window, onInputCommand);
});
view.addEventListener("viewbeforehide", function (e) {
view.addEventListener('viewbeforehide', function (e) {
inputManager.off(window, onInputCommand);
events.off(playbackManager, "playbackstop", onPlaybackStop);
events.off(ApiClient, "message", onWebSocketMessage);
events.off(playbackManager, 'playbackstop', onPlaybackStop);
events.off(ApiClient, 'message', onWebSocketMessage);
});
view.addEventListener("viewdestroy", function (e) {
view.addEventListener('viewdestroy', function (e) {
tabControllers.forEach(function (t) {
if (t.destroy) {
t.destroy();

View file

@ -1,5 +1,5 @@
define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "listView", "cardBuilder", "alphaPicker", "userSettings", "globalize", "emby-itemscontainer"], function (layoutManager, loading, events, libraryBrowser, imageLoader, listView, cardBuilder, alphaPicker, userSettings, globalize) {
"use strict";
define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardBuilder', 'alphaPicker', 'userSettings', 'globalize', 'emby-itemscontainer'], function (layoutManager, loading, events, libraryBrowser, imageLoader, listView, cardBuilder, alphaPicker, userSettings, globalize) {
'use strict';
return function (view, params, tabContent) {
function getPageData(context) {
@ -9,16 +9,16 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
if (!pageData) {
pageData = data[key] = {
query: {
SortBy: "SortName",
SortOrder: "Ascending",
IncludeItemTypes: "Series",
SortBy: 'SortName',
SortOrder: 'Ascending',
IncludeItemTypes: 'Series',
Recursive: true,
Fields: "PrimaryImageAspectRatio,BasicSyncInfo",
Fields: 'PrimaryImageAspectRatio,BasicSyncInfo',
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
EnableImageTypes: 'Primary,Backdrop,Banner,Thumb',
StartIndex: 0
},
view: libraryBrowser.getSavedView(key) || "Poster"
view: libraryBrowser.getSavedView(key) || 'Poster'
};
if (userSettings.libraryPageSize() > 0) {
@ -38,7 +38,7 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
function getSavedQueryKey(context) {
if (!context.savedQueryKey) {
context.savedQueryKey = libraryBrowser.getSavedQueryKey("series");
context.savedQueryKey = libraryBrowser.getSavedQueryKey('series');
}
return context.savedQueryKey;
@ -46,17 +46,17 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
function onViewStyleChange() {
var viewStyle = self.getCurrentViewStyle();
var itemsContainer = tabContent.querySelector(".itemsContainer");
var itemsContainer = tabContent.querySelector('.itemsContainer');
if ("List" == viewStyle) {
itemsContainer.classList.add("vertical-list");
itemsContainer.classList.remove("vertical-wrap");
if ('List' == viewStyle) {
itemsContainer.classList.add('vertical-list');
itemsContainer.classList.remove('vertical-wrap');
} else {
itemsContainer.classList.remove("vertical-list");
itemsContainer.classList.add("vertical-wrap");
itemsContainer.classList.remove('vertical-list');
itemsContainer.classList.add('vertical-wrap');
}
itemsContainer.innerHTML = "";
itemsContainer.innerHTML = '';
}
function reloadItems(page) {
@ -100,45 +100,45 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
filterButton: false
});
var viewStyle = self.getCurrentViewStyle();
if (viewStyle == "Thumb") {
if (viewStyle == 'Thumb') {
html = cardBuilder.getCardsHtml({
items: result.Items,
shape: "backdrop",
shape: 'backdrop',
preferThumb: true,
context: "tvshows",
context: 'tvshows',
overlayMoreButton: true,
showTitle: true,
centerText: true
});
} else if (viewStyle == "ThumbCard") {
} else if (viewStyle == 'ThumbCard') {
html = cardBuilder.getCardsHtml({
items: result.Items,
shape: "backdrop",
shape: 'backdrop',
preferThumb: true,
context: "tvshows",
context: 'tvshows',
cardLayout: true,
showTitle: true,
showYear: true,
centerText: true
});
} else if (viewStyle == "Banner") {
} else if (viewStyle == 'Banner') {
html = cardBuilder.getCardsHtml({
items: result.Items,
shape: "banner",
shape: 'banner',
preferBanner: true,
context: "tvshows"
context: 'tvshows'
});
} else if (viewStyle == "List") {
} else if (viewStyle == 'List') {
html = listView.getListViewHtml({
items: result.Items,
context: "tvshows",
context: 'tvshows',
sortBy: query.SortBy
});
} else if (viewStyle == "PosterCard") {
} else if (viewStyle == 'PosterCard') {
html = cardBuilder.getCardsHtml({
items: result.Items,
shape: "portrait",
context: "tvshows",
shape: 'portrait',
context: 'tvshows',
showTitle: true,
showYear: true,
centerText: true,
@ -147,8 +147,8 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
} else {
html = cardBuilder.getCardsHtml({
items: result.Items,
shape: "portrait",
context: "tvshows",
shape: 'portrait',
context: 'tvshows',
centerText: true,
lazy: true,
overlayMoreButton: true,
@ -158,30 +158,30 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
}
var i;
var length;
var elems = tabContent.querySelectorAll(".paging");
var elems = tabContent.querySelectorAll('.paging');
for (i = 0, length = elems.length; i < length; i++) {
elems[i].innerHTML = pagingHtml;
}
elems = tabContent.querySelectorAll(".btnNextPage");
elems = tabContent.querySelectorAll('.btnNextPage');
for (i = 0, length = elems.length; i < length; i++) {
elems[i].addEventListener("click", onNextPageClick);
elems[i].addEventListener('click', onNextPageClick);
}
elems = tabContent.querySelectorAll(".btnPreviousPage");
elems = tabContent.querySelectorAll('.btnPreviousPage');
for (i = 0, length = elems.length; i < length; i++) {
elems[i].addEventListener("click", onPreviousPageClick);
elems[i].addEventListener('click', onPreviousPageClick);
}
var itemsContainer = tabContent.querySelector(".itemsContainer");
var itemsContainer = tabContent.querySelector('.itemsContainer');
itemsContainer.innerHTML = html;
imageLoader.lazyChildren(itemsContainer);
libraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
loading.hide();
isLoading = false;
require(["autoFocuser"], function (autoFocuser) {
require(['autoFocuser'], function (autoFocuser) {
autoFocuser.autoFocus(page);
});
});
@ -197,13 +197,13 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
var isLoading = false;
self.showFilterMenu = function () {
require(["components/filterdialog/filterdialog"], function (filterDialogFactory) {
require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
var filterDialog = new filterDialogFactory({
query: getQuery(tabContent),
mode: "series",
mode: 'series',
serverId: ApiClient.serverId()
});
events.on(filterDialog, "filterchange", function () {
events.on(filterDialog, 'filterchange', function () {
getQuery(tabContent).StartIndex = 0;
reloadItems(tabContent);
});
@ -216,10 +216,10 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
};
function initPage(tabContent) {
var alphaPickerElement = tabContent.querySelector(".alphaPicker");
var itemsContainer = tabContent.querySelector(".itemsContainer");
var alphaPickerElement = tabContent.querySelector('.alphaPicker');
var itemsContainer = tabContent.querySelector('.itemsContainer');
alphaPickerElement.addEventListener("alphavaluechanged", function (e) {
alphaPickerElement.addEventListener('alphavaluechanged', function (e) {
var newValue = e.detail.value;
var query = getQuery(tabContent);
query.NameStartsWithOrGreater = newValue;
@ -228,36 +228,36 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
});
self.alphaPicker = new alphaPicker({
element: alphaPickerElement,
valueChangeEvent: "click"
valueChangeEvent: 'click'
});
tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right");
alphaPickerElement.classList.add("alphaPicker-fixed-right");
itemsContainer.classList.add("padded-right-withalphapicker");
tabContent.querySelector('.alphaPicker').classList.add('alphabetPicker-right');
alphaPickerElement.classList.add('alphaPicker-fixed-right');
itemsContainer.classList.add('padded-right-withalphapicker');
tabContent.querySelector(".btnFilter").addEventListener("click", function () {
tabContent.querySelector('.btnFilter').addEventListener('click', function () {
self.showFilterMenu();
});
tabContent.querySelector(".btnSort").addEventListener("click", function (e) {
tabContent.querySelector('.btnSort').addEventListener('click', function (e) {
libraryBrowser.showSortMenu({
items: [{
name: globalize.translate("OptionNameSort"),
id: "SortName"
name: globalize.translate('OptionNameSort'),
id: 'SortName'
}, {
name: globalize.translate("OptionImdbRating"),
id: "CommunityRating,SortName"
name: globalize.translate('OptionImdbRating'),
id: 'CommunityRating,SortName'
}, {
name: globalize.translate("OptionDateAdded"),
id: "DateCreated,SortName"
name: globalize.translate('OptionDateAdded'),
id: 'DateCreated,SortName'
}, {
name: globalize.translate("OptionDatePlayed"),
id: "DatePlayed,SortName"
name: globalize.translate('OptionDatePlayed'),
id: 'DatePlayed,SortName'
}, {
name: globalize.translate("OptionParentalRating"),
id: "OfficialRating,SortName"
name: globalize.translate('OptionParentalRating'),
id: 'OfficialRating,SortName'
}, {
name: globalize.translate("OptionReleaseDate"),
id: "PremiereDate,SortName"
name: globalize.translate('OptionReleaseDate'),
id: 'PremiereDate,SortName'
}],
callback: function () {
getQuery(tabContent).StartIndex = 0;
@ -267,11 +267,11 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
button: e.target
});
});
var btnSelectView = tabContent.querySelector(".btnSelectView");
btnSelectView.addEventListener("click", function (e) {
libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), "Banner,List,Poster,PosterCard,Thumb,ThumbCard".split(","));
var btnSelectView = tabContent.querySelector('.btnSelectView');
btnSelectView.addEventListener('click', function (e) {
libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'Banner,List,Poster,PosterCard,Thumb,ThumbCard'.split(','));
});
btnSelectView.addEventListener("layoutchange", function (e) {
btnSelectView.addEventListener('layoutchange', function (e) {
var viewStyle = e.detail.viewStyle;
getPageData(tabContent).view = viewStyle;
libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle);

View file

@ -1,5 +1,5 @@
define(["loading", "libraryBrowser", "cardBuilder", "apphost"], function (loading, libraryBrowser, cardBuilder, appHost) {
"use strict";
define(['loading', 'libraryBrowser', 'cardBuilder', 'apphost'], function (loading, libraryBrowser, cardBuilder, appHost) {
'use strict';
function getQuery(params) {
var key = getSavedQueryKey();
@ -8,11 +8,11 @@ define(["loading", "libraryBrowser", "cardBuilder", "apphost"], function (loadin
if (!pageData) {
pageData = data[key] = {
query: {
SortBy: "SortName",
SortOrder: "Ascending",
IncludeItemTypes: "Series",
SortBy: 'SortName',
SortOrder: 'Ascending',
IncludeItemTypes: 'Series',
Recursive: true,
Fields: "DateCreated,PrimaryImageAspectRatio",
Fields: 'DateCreated,PrimaryImageAspectRatio',
StartIndex: 0
}
};
@ -23,7 +23,7 @@ define(["loading", "libraryBrowser", "cardBuilder", "apphost"], function (loadin
}
function getSavedQueryKey() {
return libraryBrowser.getSavedQueryKey("studios");
return libraryBrowser.getSavedQueryKey('studios');
}
function getPromise(context, params) {
@ -34,20 +34,20 @@ define(["loading", "libraryBrowser", "cardBuilder", "apphost"], function (loadin
function reloadItems(context, params, promise) {
promise.then(function (result) {
var elem = context.querySelector("#items");
var elem = context.querySelector('#items');
cardBuilder.buildCards(result.Items, {
itemsContainer: elem,
shape: "backdrop",
shape: 'backdrop',
preferThumb: true,
showTitle: true,
scalable: true,
centerText: true,
overlayMoreButton: true,
context: "tvshows"
context: 'tvshows'
});
loading.hide();
require(["autoFocuser"], function (autoFocuser) {
require(['autoFocuser'], function (autoFocuser) {
autoFocuser.autoFocus(context);
});
});

View file

@ -1,18 +1,18 @@
define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder", "apphost", "imageLoader", "globalize", "scrollStyles", "emby-itemscontainer"], function (layoutManager, loading, datetime, libraryBrowser, cardBuilder, appHost, imageLoader, globalize) {
"use strict";
define(['layoutManager', 'loading', 'datetime', 'libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'globalize', 'scrollStyles', 'emby-itemscontainer'], function (layoutManager, loading, datetime, libraryBrowser, cardBuilder, appHost, imageLoader, globalize) {
'use strict';
function getUpcomingPromise(context, params) {
loading.show();
var query = {
Limit: 48,
Fields: "AirTime,UserData",
Fields: 'AirTime,UserData',
UserId: ApiClient.getCurrentUserId(),
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
EnableImageTypes: 'Primary,Backdrop,Banner,Thumb',
EnableTotalRecordCount: false
};
query.ParentId = params.topParentId;
return ApiClient.getJSON(ApiClient.getUrl("Shows/Upcoming", query));
return ApiClient.getJSON(ApiClient.getUrl('Shows/Upcoming', query));
}
function loadUpcoming(context, params, promise) {
@ -20,12 +20,12 @@ define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder",
var items = result.Items;
if (items.length) {
context.querySelector(".noItemsMessage").style.display = "none";
context.querySelector('.noItemsMessage').style.display = 'none';
} else {
context.querySelector(".noItemsMessage").style.display = "block";
context.querySelector('.noItemsMessage').style.display = 'block';
}
renderUpcoming(context.querySelector("#upcomingItems"), items);
renderUpcoming(context.querySelector('#upcomingItems'), items);
loading.hide();
});
}
@ -35,27 +35,27 @@ define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder",
}
function getThumbShape() {
return enableScrollX() ? "overflowBackdrop" : "backdrop";
return enableScrollX() ? 'overflowBackdrop' : 'backdrop';
}
function renderUpcoming(elem, items) {
var i;
var length;
var groups = [];
var currentGroupName = "";
var currentGroupName = '';
var currentGroup = [];
for (i = 0, length = items.length; i < length; i++) {
var item = items[i];
var dateText = "";
var dateText = '';
if (item.PremiereDate) {
try {
var premiereDate = datetime.parseISO8601Date(item.PremiereDate, true);
dateText = datetime.isRelativeDay(premiereDate, -1) ? globalize.translate("Yesterday") : datetime.toLocaleDateString(premiereDate, {
weekday: "long",
month: "short",
day: "numeric"
dateText = datetime.isRelativeDay(premiereDate, -1) ? globalize.translate('Yesterday') : datetime.toLocaleDateString(premiereDate, {
weekday: 'long',
month: 'short',
day: 'numeric'
});
} catch (err) {
console.error('error parsing timestamp for upcoming tv shows');
@ -77,20 +77,20 @@ define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder",
}
}
var html = "";
var html = '';
for (i = 0, length = groups.length; i < length; i++) {
var group = groups[i];
html += '<div class="verticalSection">';
html += '<h2 class="sectionTitle sectionTitle-cards padded-left">' + group.name + "</h2>";
html += '<h2 class="sectionTitle sectionTitle-cards padded-left">' + group.name + '</h2>';
var allowBottomPadding = true;
if (enableScrollX()) {
allowBottomPadding = false;
var scrollXClass = "scrollX hiddenScrollX";
var scrollXClass = 'scrollX hiddenScrollX';
if (layoutManager.tv) {
scrollXClass += " smoothScrollX";
scrollXClass += ' smoothScrollX';
}
html += '<div is="emby-itemscontainer" class="itemsContainer ' + scrollXClass + ' padded-left padded-right">';
@ -98,7 +98,7 @@ define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder",
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap padded-left padded-right">';
}
var supportsImageAnalysis = appHost.supports("imageanalysis");
var supportsImageAnalysis = appHost.supports('imageanalysis');
supportsImageAnalysis = false;
html += cardBuilder.getCardsHtml({
items: group.items,
@ -116,8 +116,8 @@ define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder",
overlayMoreButton: true,
missingIndicator: false
});
html += "</div>";
html += "</div>";
html += '</div>';
html += '</div>';
}
elem.innerHTML = html;