Deminify part 2 (#509)
This de-minifies and de-uglifies `controllers` subdirectory
This commit is contained in:
parent
f98a43f06f
commit
23677db990
66 changed files with 8296 additions and 4227 deletions
|
@ -1,9 +1,11 @@
|
|||
define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardBuilder", "apphost", "emby-itemscontainer"], function(loading, events, libraryBrowser, imageLoader, listView, cardBuilder, appHost) {
|
||||
define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardBuilder", "apphost", "emby-itemscontainer"], function (loading, events, libraryBrowser, imageLoader, listView, cardBuilder, appHost) {
|
||||
"use strict";
|
||||
return function(view, params, tabContent) {
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
function getPageData(context) {
|
||||
var key = getSavedQueryKey(context),
|
||||
pageData = data[key];
|
||||
var key = getSavedQueryKey(context);
|
||||
var pageData = data[key];
|
||||
|
||||
if (!pageData) {
|
||||
pageData = data[key] = {
|
||||
query: {
|
||||
|
@ -22,153 +24,223 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
|
|||
pageData.query.ParentId = params.topParentId;
|
||||
libraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||
}
|
||||
|
||||
return pageData;
|
||||
}
|
||||
|
||||
function getQuery(context) {
|
||||
return getPageData(context).query
|
||||
return getPageData(context).query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey(context) {
|
||||
return context.savedQueryKey || (context.savedQueryKey = libraryBrowser.getSavedQueryKey("moviecollections")), context.savedQueryKey
|
||||
if (!context.savedQueryKey) {
|
||||
context.savedQueryKey = libraryBrowser.getSavedQueryKey("moviecollections");
|
||||
}
|
||||
|
||||
return context.savedQueryKey;
|
||||
}
|
||||
|
||||
function onViewStyleChange() {
|
||||
var viewStyle = self.getCurrentViewStyle(),
|
||||
itemsContainer = tabContent.querySelector(".itemsContainer");
|
||||
"List" == viewStyle ? (itemsContainer.classList.add("vertical-list"), itemsContainer.classList.remove("vertical-wrap")) : (itemsContainer.classList.remove("vertical-list"), itemsContainer.classList.add("vertical-wrap")), itemsContainer.innerHTML = ""
|
||||
var viewStyle = self.getCurrentViewStyle();
|
||||
var itemsContainer = tabContent.querySelector(".itemsContainer");
|
||||
|
||||
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.innerHTML = "";
|
||||
}
|
||||
|
||||
function reloadItems(page) {
|
||||
loading.show();
|
||||
isLoading = true;
|
||||
var query = getQuery(page);
|
||||
ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function(result) {
|
||||
ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function (result) {
|
||||
function onNextPageClick() {
|
||||
if (isLoading) return;
|
||||
query.StartIndex += query.Limit, reloadItems(tabContent)
|
||||
if (isLoading) {
|
||||
return;
|
||||
}
|
||||
|
||||
query.StartIndex += query.Limit;
|
||||
reloadItems(tabContent);
|
||||
}
|
||||
|
||||
function onPreviousPageClick() {
|
||||
if (isLoading) return;
|
||||
query.StartIndex -= query.Limit, reloadItems(tabContent)
|
||||
if (isLoading) {
|
||||
return;
|
||||
}
|
||||
|
||||
query.StartIndex -= query.Limit;
|
||||
reloadItems(tabContent);
|
||||
}
|
||||
|
||||
window.scrollTo(0, 0);
|
||||
var html, pagingHtml = libraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: !1,
|
||||
updatePageSizeSetting: !1,
|
||||
addLayoutButton: !1,
|
||||
sortButton: !1,
|
||||
filterButton: !1
|
||||
}),
|
||||
viewStyle = self.getCurrentViewStyle();
|
||||
html = "Thumb" == viewStyle ? cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
preferThumb: !0,
|
||||
context: "movies",
|
||||
overlayPlayButton: !0,
|
||||
centerText: !0,
|
||||
showTitle: !0
|
||||
}) : "ThumbCard" == viewStyle ? cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
preferThumb: !0,
|
||||
context: "movies",
|
||||
lazy: !0,
|
||||
cardLayout: !0,
|
||||
showTitle: !0
|
||||
}) : "Banner" == viewStyle ? cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "banner",
|
||||
preferBanner: !0,
|
||||
context: "movies",
|
||||
lazy: !0
|
||||
}) : "List" == viewStyle ? listView.getListViewHtml({
|
||||
items: result.Items,
|
||||
context: "movies",
|
||||
sortBy: query.SortBy
|
||||
}) : "PosterCard" == viewStyle ? cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "auto",
|
||||
context: "movies",
|
||||
showTitle: !0,
|
||||
centerText: !1,
|
||||
cardLayout: !0
|
||||
}) : cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "auto",
|
||||
context: "movies",
|
||||
centerText: !0,
|
||||
overlayPlayButton: !0,
|
||||
showTitle: !0
|
||||
var html;
|
||||
var pagingHtml = libraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: false,
|
||||
updatePageSizeSetting: false,
|
||||
addLayoutButton: false,
|
||||
sortButton: false,
|
||||
filterButton: false
|
||||
});
|
||||
var i, length, elems = tabContent.querySelectorAll(".paging");
|
||||
for (i = 0, length = elems.length; i < length; i++) elems[i].innerHTML = pagingHtml;
|
||||
for (elems = tabContent.querySelectorAll(".btnNextPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onNextPageClick);
|
||||
for (elems = tabContent.querySelectorAll(".btnPreviousPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onPreviousPageClick);
|
||||
result.Items.length || (html = '<p style="text-align:center;">' + Globalize.translate("MessageNoCollectionsAvailable") + "</p>");
|
||||
var viewStyle = self.getCurrentViewStyle();
|
||||
if (viewStyle == "Thumb") {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
preferThumb: true,
|
||||
context: "movies",
|
||||
overlayPlayButton: true,
|
||||
centerText: true,
|
||||
showTitle: true
|
||||
});
|
||||
} else if (viewStyle == "ThumbCard") {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
preferThumb: true,
|
||||
context: "movies",
|
||||
lazy: true,
|
||||
cardLayout: true,
|
||||
showTitle: true
|
||||
});
|
||||
} else if (viewStyle == "Banner") {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "banner",
|
||||
preferBanner: true,
|
||||
context: "movies",
|
||||
lazy: true
|
||||
});
|
||||
} else if (viewStyle == "List") {
|
||||
html = listView.getListViewHtml({
|
||||
items: result.Items,
|
||||
context: "movies",
|
||||
sortBy: query.SortBy
|
||||
});
|
||||
} else if (viewStyle == "PosterCard") {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "auto",
|
||||
context: "movies",
|
||||
showTitle: true,
|
||||
centerText: false,
|
||||
cardLayout: true
|
||||
});
|
||||
} else {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "auto",
|
||||
context: "movies",
|
||||
centerText: true,
|
||||
overlayPlayButton: true,
|
||||
showTitle: true
|
||||
});
|
||||
}
|
||||
var i;
|
||||
var length;
|
||||
var elems = tabContent.querySelectorAll(".paging");
|
||||
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].innerHTML = pagingHtml;
|
||||
}
|
||||
|
||||
elems = tabContent.querySelectorAll(".btnNextPage");
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].addEventListener("click", onNextPageClick);
|
||||
}
|
||||
|
||||
elems = tabContent.querySelectorAll(".btnPreviousPage");
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].addEventListener("click", onPreviousPageClick);
|
||||
}
|
||||
|
||||
if (!result.Items.length) {
|
||||
html = '<p style="text-align:center;">' + Globalize.translate("MessageNoCollectionsAvailable") + "</p>";
|
||||
}
|
||||
|
||||
var itemsContainer = tabContent.querySelector(".itemsContainer");
|
||||
itemsContainer.innerHTML = html;
|
||||
imageLoader.lazyChildren(itemsContainer);
|
||||
libraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
|
||||
loading.hide();
|
||||
isLoading = false;
|
||||
})
|
||||
});
|
||||
}
|
||||
var self = this,
|
||||
pageSize = 100,
|
||||
data = {},
|
||||
isLoading = false;
|
||||
self.getCurrentViewStyle = function() {
|
||||
return getPageData(tabContent).view
|
||||
},
|
||||
function(tabContent) {
|
||||
tabContent.querySelector(".btnSort").addEventListener("click", function(e) {
|
||||
libraryBrowser.showSortMenu({
|
||||
items: [{
|
||||
name: Globalize.translate("OptionNameSort"),
|
||||
id: "SortName"
|
||||
}, {
|
||||
name: Globalize.translate("OptionImdbRating"),
|
||||
id: "CommunityRating,SortName"
|
||||
}, {
|
||||
name: Globalize.translate("OptionDateAdded"),
|
||||
id: "DateCreated,SortName"
|
||||
}, {
|
||||
name: Globalize.translate("OptionParentalRating"),
|
||||
id: "OfficialRating,SortName"
|
||||
}, {
|
||||
name: Globalize.translate("OptionReleaseDate"),
|
||||
id: "PremiereDate,SortName"
|
||||
}],
|
||||
callback: function() {
|
||||
getQuery(tabContent).StartIndex = 0, reloadItems(tabContent)
|
||||
},
|
||||
query: getQuery(tabContent),
|
||||
button: e.target
|
||||
})
|
||||
|
||||
var self = this;
|
||||
var pageSize = 100;
|
||||
var data = {};
|
||||
var isLoading = false;
|
||||
|
||||
self.getCurrentViewStyle = function () {
|
||||
return getPageData(tabContent).view;
|
||||
};
|
||||
|
||||
function initPage(tabContent) {
|
||||
tabContent.querySelector(".btnSort").addEventListener("click", function (e) {
|
||||
libraryBrowser.showSortMenu({
|
||||
items: [{
|
||||
name: Globalize.translate("OptionNameSort"),
|
||||
id: "SortName"
|
||||
}, {
|
||||
name: Globalize.translate("OptionImdbRating"),
|
||||
id: "CommunityRating,SortName"
|
||||
}, {
|
||||
name: Globalize.translate("OptionDateAdded"),
|
||||
id: "DateCreated,SortName"
|
||||
}, {
|
||||
name: Globalize.translate("OptionParentalRating"),
|
||||
id: "OfficialRating,SortName"
|
||||
}, {
|
||||
name: Globalize.translate("OptionReleaseDate"),
|
||||
id: "PremiereDate,SortName"
|
||||
}],
|
||||
callback: function () {
|
||||
getQuery(tabContent).StartIndex = 0;
|
||||
reloadItems(tabContent);
|
||||
},
|
||||
query: getQuery(tabContent),
|
||||
button: e.target
|
||||
});
|
||||
var btnSelectView = tabContent.querySelector(".btnSelectView");
|
||||
btnSelectView.addEventListener("click", function(e) {
|
||||
libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), "List,Poster,PosterCard,Thumb,ThumbCard".split(","))
|
||||
}), btnSelectView.addEventListener("layoutchange", function(e) {
|
||||
var viewStyle = e.detail.viewStyle;
|
||||
getPageData(tabContent).view = viewStyle, libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle), getQuery(tabContent).StartIndex = 0, onViewStyleChange(), reloadItems(tabContent)
|
||||
}), tabContent.querySelector(".btnNewCollection").addEventListener("click", function() {
|
||||
require(["collectionEditor"], function(collectionEditor) {
|
||||
var serverId = ApiClient.serverInfo().Id;
|
||||
(new collectionEditor).show({
|
||||
items: [],
|
||||
serverId: serverId
|
||||
})
|
||||
})
|
||||
})
|
||||
}(tabContent), onViewStyleChange(), self.renderTab = function() {
|
||||
reloadItems(tabContent)
|
||||
}, self.destroy = function() {}
|
||||
}
|
||||
});
|
||||
var btnSelectView = tabContent.querySelector(".btnSelectView");
|
||||
btnSelectView.addEventListener("click", function (e) {
|
||||
libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), "List,Poster,PosterCard,Thumb,ThumbCard".split(","));
|
||||
});
|
||||
btnSelectView.addEventListener("layoutchange", function (e) {
|
||||
var viewStyle = e.detail.viewStyle;
|
||||
getPageData(tabContent).view = viewStyle;
|
||||
libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle);
|
||||
getQuery(tabContent).StartIndex = 0;
|
||||
onViewStyleChange();
|
||||
reloadItems(tabContent);
|
||||
});
|
||||
tabContent.querySelector(".btnNewCollection").addEventListener("click", function () {
|
||||
require(["collectionEditor"], function (collectionEditor) {
|
||||
var serverId = ApiClient.serverInfo().Id;
|
||||
new collectionEditor().show({
|
||||
items: [],
|
||||
serverId: serverId
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
initPage(tabContent);
|
||||
onViewStyleChange();
|
||||
|
||||
self.renderTab = function () {
|
||||
reloadItems(tabContent);
|
||||
};
|
||||
|
||||
self.destroy = function () {};
|
||||
};
|
||||
});
|
||||
|
|
|
@ -1,139 +1,204 @@
|
|||
define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader", "apphost", "globalize", "appRouter", "dom", "emby-button"], function(layoutManager, loading, libraryBrowser, cardBuilder, lazyLoader, appHost, globalize, appRouter, dom) {
|
||||
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) {
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
function getPageData() {
|
||||
var key = getSavedQueryKey(),
|
||||
pageData = data[key];
|
||||
return pageData || (pageData = data[key] = {
|
||||
query: {
|
||||
SortBy: "SortName",
|
||||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Movie",
|
||||
Recursive: !0,
|
||||
EnableTotalRecordCount: !1
|
||||
},
|
||||
view: "Poster"
|
||||
}, pageData.query.ParentId = params.topParentId, libraryBrowser.loadSavedQueryValues(key, pageData.query)), pageData
|
||||
var key = getSavedQueryKey();
|
||||
var pageData = data[key];
|
||||
|
||||
if (!pageData) {
|
||||
pageData = data[key] = {
|
||||
query: {
|
||||
SortBy: "SortName",
|
||||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Movie",
|
||||
Recursive: true,
|
||||
EnableTotalRecordCount: false
|
||||
},
|
||||
view: "Poster"
|
||||
};
|
||||
pageData.query.ParentId = params.topParentId;
|
||||
libraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||
}
|
||||
|
||||
return pageData;
|
||||
}
|
||||
|
||||
function getQuery() {
|
||||
return getPageData().query
|
||||
return getPageData().query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey() {
|
||||
return libraryBrowser.getSavedQueryKey("moviegenres")
|
||||
return libraryBrowser.getSavedQueryKey("moviegenres");
|
||||
}
|
||||
|
||||
function getPromise() {
|
||||
loading.show();
|
||||
var query = getQuery();
|
||||
return ApiClient.getGenres(ApiClient.getCurrentUserId(), query)
|
||||
return ApiClient.getGenres(ApiClient.getCurrentUserId(), query);
|
||||
}
|
||||
|
||||
function enableScrollX() {
|
||||
return !layoutManager.desktop
|
||||
return !layoutManager.desktop;
|
||||
}
|
||||
|
||||
function getThumbShape() {
|
||||
return enableScrollX() ? "overflowBackdrop" : "backdrop"
|
||||
return enableScrollX() ? "overflowBackdrop" : "backdrop";
|
||||
}
|
||||
|
||||
function getPortraitShape() {
|
||||
return enableScrollX() ? "overflowPortrait" : "portrait"
|
||||
return enableScrollX() ? "overflowPortrait" : "portrait";
|
||||
}
|
||||
|
||||
function fillItemsContainer(elem) {
|
||||
var id = elem.getAttribute("data-id"),
|
||||
viewStyle = self.getCurrentViewStyle(),
|
||||
limit = "Thumb" == viewStyle || "ThumbCard" == viewStyle ? 5 : 9;
|
||||
enableScrollX() && (limit = 10);
|
||||
var enableImageTypes = "Thumb" == viewStyle || "ThumbCard" == viewStyle ? "Primary,Backdrop,Thumb" : "Primary",
|
||||
query = {
|
||||
SortBy: "SortName",
|
||||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Movie",
|
||||
Recursive: !0,
|
||||
Fields: "PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo",
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: enableImageTypes,
|
||||
Limit: limit,
|
||||
GenreIds: id,
|
||||
EnableTotalRecordCount: !1,
|
||||
ParentId: params.topParentId
|
||||
};
|
||||
ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function(result) {
|
||||
var id = elem.getAttribute("data-id");
|
||||
var viewStyle = self.getCurrentViewStyle();
|
||||
var limit = "Thumb" == viewStyle || "ThumbCard" == viewStyle ? 5 : 9;
|
||||
|
||||
if (enableScrollX()) {
|
||||
limit = 10;
|
||||
}
|
||||
|
||||
var enableImageTypes = "Thumb" == viewStyle || "ThumbCard" == viewStyle ? "Primary,Backdrop,Thumb" : "Primary";
|
||||
var query = {
|
||||
SortBy: "SortName",
|
||||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Movie",
|
||||
Recursive: true,
|
||||
Fields: "PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo",
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: enableImageTypes,
|
||||
Limit: limit,
|
||||
GenreIds: id,
|
||||
EnableTotalRecordCount: false,
|
||||
ParentId: params.topParentId
|
||||
};
|
||||
ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function (result) {
|
||||
var supportsImageAnalysis = appHost.supports("imageanalysis");
|
||||
"Thumb" == viewStyle ? cardBuilder.buildCards(result.Items, {
|
||||
itemsContainer: elem,
|
||||
shape: getThumbShape(),
|
||||
preferThumb: !0,
|
||||
showTitle: !0,
|
||||
scalable: !0,
|
||||
centerText: !0,
|
||||
overlayMoreButton: !0,
|
||||
allowBottomPadding: !1
|
||||
}) : "ThumbCard" == viewStyle ? cardBuilder.buildCards(result.Items, {
|
||||
itemsContainer: elem,
|
||||
shape: getThumbShape(),
|
||||
preferThumb: !0,
|
||||
showTitle: !0,
|
||||
scalable: !0,
|
||||
centerText: !1,
|
||||
cardLayout: !0,
|
||||
showYear: !0
|
||||
}) : "PosterCard" == viewStyle ? cardBuilder.buildCards(result.Items, {
|
||||
itemsContainer: elem,
|
||||
shape: getPortraitShape(),
|
||||
showTitle: !0,
|
||||
scalable: !0,
|
||||
centerText: !1,
|
||||
cardLayout: !0,
|
||||
showYear: !0
|
||||
}) : "Poster" == viewStyle && cardBuilder.buildCards(result.Items, {
|
||||
itemsContainer: elem,
|
||||
shape: getPortraitShape(),
|
||||
scalable: !0,
|
||||
overlayMoreButton: !0,
|
||||
allowBottomPadding: !1
|
||||
}), result.Items.length >= query.Limit && tabContent.querySelector(".btnMoreFromGenre" + id + " i").classList.remove("hide")
|
||||
})
|
||||
|
||||
if (viewStyle == "Thumb") {
|
||||
cardBuilder.buildCards(result.Items, {
|
||||
itemsContainer: elem,
|
||||
shape: getThumbShape(),
|
||||
preferThumb: true,
|
||||
showTitle: true,
|
||||
scalable: true,
|
||||
centerText: true,
|
||||
overlayMoreButton: true,
|
||||
allowBottomPadding: false
|
||||
});
|
||||
} else if (viewStyle == "ThumbCard") {
|
||||
cardBuilder.buildCards(result.Items, {
|
||||
itemsContainer: elem,
|
||||
shape: getThumbShape(),
|
||||
preferThumb: true,
|
||||
showTitle: true,
|
||||
scalable: true,
|
||||
centerText: false,
|
||||
cardLayout: true,
|
||||
showYear: true
|
||||
});
|
||||
} else if (viewStyle == "PosterCard") {
|
||||
cardBuilder.buildCards(result.Items, {
|
||||
itemsContainer: elem,
|
||||
shape: getPortraitShape(),
|
||||
showTitle: true,
|
||||
scalable: true,
|
||||
centerText: false,
|
||||
cardLayout: true,
|
||||
showYear: true
|
||||
});
|
||||
} else if (viewStyle == "Poster") {
|
||||
cardBuilder.buildCards(result.Items, {
|
||||
itemsContainer: elem,
|
||||
shape: getPortraitShape(),
|
||||
scalable: true,
|
||||
overlayMoreButton: true,
|
||||
allowBottomPadding: false
|
||||
});
|
||||
}
|
||||
if (result.Items.length >= query.Limit) {
|
||||
tabContent.querySelector(".btnMoreFromGenre" + id + " i").classList.remove("hide");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function reloadItems(context, promise) {
|
||||
var query = getQuery();
|
||||
promise.then(function(result) {
|
||||
for (var elem = context.querySelector("#items"), html = "", items = result.Items, i = 0, length = items.length; i < length; i++) {
|
||||
promise.then(function (result) {
|
||||
var elem = context.querySelector("#items");
|
||||
var html = "";
|
||||
var items = result.Items;
|
||||
|
||||
for (var i = 0, length = items.length; i < length; i++) {
|
||||
var item = items[i];
|
||||
if (html += '<div class="verticalSection">', html += '<div class="sectionTitleContainer sectionTitleContainer-cards padded-left">', html += '<a is="emby-linkbutton" href="' + appRouter.getRouteUrl(item, {
|
||||
context: "movies",
|
||||
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="md-icon hide"></i>', html += "</a>", html += "</div>", enableScrollX()) {
|
||||
|
||||
html += '<div class="verticalSection">';
|
||||
html += '<div class="sectionTitleContainer sectionTitleContainer-cards padded-left">';
|
||||
html += '<a is="emby-linkbutton" href="' + appRouter.getRouteUrl(item, {
|
||||
context: "movies",
|
||||
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="md-icon hide"></i>';
|
||||
html += "</a>";
|
||||
html += "</div>";
|
||||
if (enableScrollX()) {
|
||||
var scrollXClass = "scrollX hiddenScrollX";
|
||||
layoutManager.tv && (scrollXClass += " smoothScrollX"), 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>"
|
||||
|
||||
if (layoutManager.tv) {
|
||||
scrollXClass += "smoothScrollX";
|
||||
}
|
||||
|
||||
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>";
|
||||
}
|
||||
elem.innerHTML = html, lazyLoader.lazyChildren(elem, fillItemsContainer), libraryBrowser.saveQueryValues(getSavedQueryKey(), query), loading.hide()
|
||||
})
|
||||
|
||||
elem.innerHTML = html;
|
||||
lazyLoader.lazyChildren(elem, fillItemsContainer);
|
||||
libraryBrowser.saveQueryValues(getSavedQueryKey(), query);
|
||||
loading.hide();
|
||||
});
|
||||
}
|
||||
|
||||
function fullyReload() {
|
||||
self.preRender(), self.renderTab()
|
||||
self.preRender();
|
||||
self.renderTab();
|
||||
}
|
||||
var self = this,
|
||||
data = {};
|
||||
self.getViewStyles = function() {
|
||||
return "Poster,PosterCard,Thumb,ThumbCard".split(",")
|
||||
}, self.getCurrentViewStyle = function() {
|
||||
return getPageData(tabContent).view
|
||||
}, self.setCurrentViewStyle = function(viewStyle) {
|
||||
getPageData(tabContent).view = viewStyle, libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle), fullyReload()
|
||||
}, self.enableViewSelection = !0;
|
||||
|
||||
var self = this;
|
||||
var data = {};
|
||||
|
||||
self.getViewStyles = function () {
|
||||
return "Poster,PosterCard,Thumb,ThumbCard".split(",");
|
||||
};
|
||||
|
||||
self.getCurrentViewStyle = function () {
|
||||
return getPageData(tabContent).view;
|
||||
};
|
||||
|
||||
self.setCurrentViewStyle = function (viewStyle) {
|
||||
getPageData(tabContent).view = viewStyle;
|
||||
libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle);
|
||||
fullyReload();
|
||||
};
|
||||
|
||||
self.enableViewSelection = true;
|
||||
var promise;
|
||||
self.preRender = function() {
|
||||
promise = getPromise()
|
||||
}, self.renderTab = function() {
|
||||
reloadItems(tabContent, promise)
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
self.preRender = function () {
|
||||
promise = getPromise();
|
||||
};
|
||||
|
||||
self.renderTab = function () {
|
||||
reloadItems(tabContent, promise);
|
||||
};
|
||||
};
|
||||
});
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser", "alphaPicker", "listView", "cardBuilder", "emby-itemscontainer"],
|
||||
function(loading, layoutManager, userSettings, events, libraryBrowser, alphaPicker, listView, cardBuilder) {
|
||||
define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser", "alphaPicker", "listView", "cardBuilder", "emby-itemscontainer"], function (loading, layoutManager, userSettings, events, libraryBrowser, alphaPicker, listView, cardBuilder) {
|
||||
"use strict";
|
||||
return function(view, params, tabContent, options) {
|
||||
|
||||
return function (view, params, tabContent, options) {
|
||||
function onViewStyleChange() {
|
||||
if (self.getCurrentViewStyle() == "List") {
|
||||
itemsContainer.classList.add("vertical-list");
|
||||
|
@ -10,103 +10,141 @@ define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser",
|
|||
itemsContainer.classList.remove("vertical-list");
|
||||
itemsContainer.classList.add("vertical-wrap");
|
||||
}
|
||||
|
||||
itemsContainer.innerHTML = "";
|
||||
}
|
||||
|
||||
function updateFilterControls() {
|
||||
self.alphaPicker && self.alphaPicker.value(query.NameStartsWithOrGreater)
|
||||
if (self.alphaPicker) {
|
||||
self.alphaPicker.value(query.NameStartsWithOrGreater);
|
||||
}
|
||||
}
|
||||
|
||||
function fetchData() {
|
||||
isLoading = true;
|
||||
loading.show();
|
||||
return ApiClient.getItems(ApiClient.getCurrentUserId(), query)
|
||||
return ApiClient.getItems(ApiClient.getCurrentUserId(), query);
|
||||
}
|
||||
|
||||
function afterRefresh(result) {
|
||||
function onNextPageClick() {
|
||||
if (isLoading) return;
|
||||
if (isLoading) {
|
||||
return;
|
||||
}
|
||||
|
||||
query.StartIndex += query.Limit;
|
||||
itemsContainer.refreshItems();
|
||||
}
|
||||
|
||||
function onPreviousPageClick() {
|
||||
if (isLoading) return;
|
||||
if (isLoading) {
|
||||
return;
|
||||
}
|
||||
|
||||
query.StartIndex -= query.Limit;
|
||||
itemsContainer.refreshItems();
|
||||
}
|
||||
|
||||
window.scrollTo(0, 0);
|
||||
updateFilterControls();
|
||||
var i, length, elems, pagingHtml = libraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: !1,
|
||||
updatePageSizeSetting: !1,
|
||||
addLayoutButton: !1,
|
||||
sortButton: !1,
|
||||
filterButton: !1
|
||||
});
|
||||
for (elems = tabContent.querySelectorAll(".paging"), i = 0, length = elems.length; i < length; i++)
|
||||
var pagingHtml = libraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: false,
|
||||
updatePageSizeSetting: false,
|
||||
addLayoutButton: false,
|
||||
sortButton: false,
|
||||
filterButton: false
|
||||
});
|
||||
var i;
|
||||
var length;
|
||||
var elems = tabContent.querySelectorAll(".paging");
|
||||
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].innerHTML = pagingHtml;
|
||||
for (elems = tabContent.querySelectorAll(".btnNextPage"), i = 0, length = elems.length; i < length; i++)
|
||||
}
|
||||
|
||||
elems = tabContent.querySelectorAll(".btnNextPage");
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].addEventListener("click", onNextPageClick);
|
||||
for (elems = tabContent.querySelectorAll(".btnPreviousPage"), i = 0, length = elems.length; i < length; i++)
|
||||
elems[i].addEventListener("click", onPreviousPageClick)
|
||||
}
|
||||
|
||||
elems = tabContent.querySelectorAll(".btnPreviousPage");
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].addEventListener("click", onPreviousPageClick);
|
||||
}
|
||||
|
||||
isLoading = false;
|
||||
loading.hide();
|
||||
}
|
||||
|
||||
function getItemsHtml(items) {
|
||||
var html;
|
||||
var viewStyle = self.getCurrentViewStyle();
|
||||
return "Thumb" == viewStyle ? cardBuilder.getCardsHtml({
|
||||
items: items,
|
||||
shape: "backdrop",
|
||||
preferThumb: !0,
|
||||
context: "movies",
|
||||
lazy: !0,
|
||||
overlayPlayButton: !0,
|
||||
showTitle: !0,
|
||||
showYear: !0,
|
||||
centerText: !0
|
||||
}) : "ThumbCard" == viewStyle ? cardBuilder.getCardsHtml({
|
||||
items: items,
|
||||
shape: "backdrop",
|
||||
preferThumb: !0,
|
||||
context: "movies",
|
||||
lazy: !0,
|
||||
cardLayout: !0,
|
||||
showTitle: !0,
|
||||
showYear: !0,
|
||||
centerText: !0
|
||||
}) : "Banner" == viewStyle ? cardBuilder.getCardsHtml({
|
||||
items: items,
|
||||
shape: "banner",
|
||||
preferBanner: !0,
|
||||
context: "movies",
|
||||
lazy: !0
|
||||
}) : "List" == viewStyle ? listView.getListViewHtml({
|
||||
items: items,
|
||||
context: "movies",
|
||||
sortBy: query.SortBy
|
||||
}) : "PosterCard" == viewStyle ? cardBuilder.getCardsHtml({
|
||||
items: items,
|
||||
shape: "portrait",
|
||||
context: "movies",
|
||||
showTitle: !0,
|
||||
showYear: !0,
|
||||
centerText: !0,
|
||||
lazy: !0,
|
||||
cardLayout: !0
|
||||
}) : cardBuilder.getCardsHtml({
|
||||
items: items,
|
||||
shape: "portrait",
|
||||
context: "movies",
|
||||
overlayPlayButton: !0,
|
||||
showTitle: !0,
|
||||
showYear: !0,
|
||||
centerText: !0
|
||||
})
|
||||
|
||||
if (viewStyle == "Thumb") {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: items,
|
||||
shape: "backdrop",
|
||||
preferThumb: true,
|
||||
context: "movies",
|
||||
lazy: true,
|
||||
overlayPlayButton: true,
|
||||
showTitle: true,
|
||||
showYear: true,
|
||||
centerText: true
|
||||
});
|
||||
} else if (viewStyle == "ThumbCard") {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: items,
|
||||
shape: "backdrop",
|
||||
preferThumb: true,
|
||||
context: "movies",
|
||||
lazy: true,
|
||||
cardLayout: true,
|
||||
showTitle: true,
|
||||
showYear: true,
|
||||
centerText: true
|
||||
});
|
||||
} else if (viewStyle == "Banner") {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: items,
|
||||
shape: "banner",
|
||||
preferBanner: true,
|
||||
context: "movies",
|
||||
lazy: true
|
||||
});
|
||||
} else if (viewStyle == "List") {
|
||||
html = listView.getListViewHtml({
|
||||
items: items,
|
||||
context: "movies",
|
||||
sortBy: query.SortBy
|
||||
});
|
||||
} else if (viewStyle == "PosterCard") {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: items,
|
||||
shape: "portrait",
|
||||
context: "movies",
|
||||
showTitle: true,
|
||||
showYear: true,
|
||||
centerText: true,
|
||||
lazy: true,
|
||||
cardLayout: true
|
||||
});
|
||||
} else {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: items,
|
||||
shape: "portrait",
|
||||
context: "movies",
|
||||
overlayPlayButton: true,
|
||||
showTitle: true,
|
||||
showYear: true,
|
||||
centerText: true
|
||||
});
|
||||
}
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
function initPage(tabContent) {
|
||||
|
@ -114,8 +152,9 @@ define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser",
|
|||
itemsContainer.getItemsHtml = getItemsHtml;
|
||||
itemsContainer.afterRefresh = afterRefresh;
|
||||
var alphaPickerElement = tabContent.querySelector(".alphaPicker");
|
||||
|
||||
if (alphaPickerElement) {
|
||||
alphaPickerElement.addEventListener("alphavaluechanged", function(e) {
|
||||
alphaPickerElement.addEventListener("alphavaluechanged", function (e) {
|
||||
var newValue = e.detail.value;
|
||||
query.NameStartsWithOrGreater = newValue;
|
||||
query.StartIndex = 0;
|
||||
|
@ -125,109 +164,132 @@ define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser",
|
|||
element: alphaPickerElement,
|
||||
valueChangeEvent: "click"
|
||||
});
|
||||
|
||||
if (layoutManager.desktop || layoutManager.mobile) {
|
||||
alphaPickerElement.classList.add("alphabetPicker-right");
|
||||
itemsContainer.classList.remove("padded-left-withalphapicker");
|
||||
itemsContainer.classList.add("padded-right-withalphapicker");
|
||||
}
|
||||
}
|
||||
|
||||
var btnFilter = tabContent.querySelector(".btnFilter");
|
||||
btnFilter && btnFilter.addEventListener("click", function() {
|
||||
self.showFilterMenu()
|
||||
});
|
||||
|
||||
if (btnFilter) {
|
||||
btnFilter.addEventListener("click", function () {
|
||||
self.showFilterMenu();
|
||||
});
|
||||
}
|
||||
var btnSort = tabContent.querySelector(".btnSort");
|
||||
btnSort && btnSort.addEventListener("click", function(e) {
|
||||
libraryBrowser.showSortMenu({
|
||||
items: [{
|
||||
name: Globalize.translate("OptionNameSort"),
|
||||
id: "SortName,ProductionYear"
|
||||
}, {
|
||||
name: Globalize.translate("OptionImdbRating"),
|
||||
id: "CommunityRating,SortName,ProductionYear"
|
||||
}, {
|
||||
name: Globalize.translate("OptionCriticRating"),
|
||||
id: "CriticRating,SortName,ProductionYear"
|
||||
}, {
|
||||
name: Globalize.translate("OptionDateAdded"),
|
||||
id: "DateCreated,SortName,ProductionYear"
|
||||
}, {
|
||||
name: Globalize.translate("OptionDatePlayed"),
|
||||
id: "DatePlayed,SortName,ProductionYear"
|
||||
}, {
|
||||
name: Globalize.translate("OptionParentalRating"),
|
||||
id: "OfficialRating,SortName,ProductionYear"
|
||||
}, {
|
||||
name: Globalize.translate("OptionPlayCount"),
|
||||
id: "PlayCount,SortName,ProductionYear"
|
||||
}, {
|
||||
name: Globalize.translate("OptionReleaseDate"),
|
||||
id: "PremiereDate,SortName,ProductionYear"
|
||||
}, {
|
||||
name: Globalize.translate("OptionRuntime"),
|
||||
id: "Runtime,SortName,ProductionYear"
|
||||
}],
|
||||
callback: function() {
|
||||
query.StartIndex = 0, userSettings.saveQuerySettings(savedQueryKey, query), itemsContainer.refreshItems()
|
||||
},
|
||||
query: query,
|
||||
button: e.target
|
||||
})
|
||||
});
|
||||
|
||||
if (btnSort) {
|
||||
btnSort.addEventListener("click", function (e) {
|
||||
libraryBrowser.showSortMenu({
|
||||
items: [{
|
||||
name: Globalize.translate("OptionNameSort"),
|
||||
id: "SortName,ProductionYear"
|
||||
}, {
|
||||
name: Globalize.translate("OptionImdbRating"),
|
||||
id: "CommunityRating,SortName,ProductionYear"
|
||||
}, {
|
||||
name: Globalize.translate("OptionCriticRating"),
|
||||
id: "CriticRating,SortName,ProductionYear"
|
||||
}, {
|
||||
name: Globalize.translate("OptionDateAdded"),
|
||||
id: "DateCreated,SortName,ProductionYear"
|
||||
}, {
|
||||
name: Globalize.translate("OptionDatePlayed"),
|
||||
id: "DatePlayed,SortName,ProductionYear"
|
||||
}, {
|
||||
name: Globalize.translate("OptionParentalRating"),
|
||||
id: "OfficialRating,SortName,ProductionYear"
|
||||
}, {
|
||||
name: Globalize.translate("OptionPlayCount"),
|
||||
id: "PlayCount,SortName,ProductionYear"
|
||||
}, {
|
||||
name: Globalize.translate("OptionReleaseDate"),
|
||||
id: "PremiereDate,SortName,ProductionYear"
|
||||
}, {
|
||||
name: Globalize.translate("OptionRuntime"),
|
||||
id: "Runtime,SortName,ProductionYear"
|
||||
}],
|
||||
callback: function () {
|
||||
query.StartIndex = 0;
|
||||
userSettings.saveQuerySettings(savedQueryKey, query);
|
||||
itemsContainer.refreshItems();
|
||||
},
|
||||
query: query,
|
||||
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(","))
|
||||
}), btnSelectView.addEventListener("layoutchange", function(e) {
|
||||
btnSelectView.addEventListener("click", function (e) {
|
||||
libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), "Banner,List,Poster,PosterCard,Thumb,ThumbCard".split(","));
|
||||
});
|
||||
btnSelectView.addEventListener("layoutchange", function (e) {
|
||||
var viewStyle = e.detail.viewStyle;
|
||||
userSettings.set(savedViewKey, viewStyle);
|
||||
query.StartIndex = 0;
|
||||
onViewStyleChange();
|
||||
itemsContainer.refreshItems();
|
||||
})
|
||||
});
|
||||
}
|
||||
var self = this,
|
||||
itemsContainer = tabContent.querySelector(".itemsContainer"),
|
||||
savedQueryKey = params.topParentId + "-" + options.mode,
|
||||
savedViewKey = savedQueryKey + "-view",
|
||||
query = {
|
||||
SortBy: "SortName,ProductionYear",
|
||||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Movie",
|
||||
Recursive: !0,
|
||||
Fields: "PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo",
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
|
||||
StartIndex: 0,
|
||||
Limit: 100,
|
||||
ParentId: params.topParentId
|
||||
},
|
||||
isLoading = false;
|
||||
if (options.mode === "favorites") query.IsFavorite = true;
|
||||
|
||||
var self = this;
|
||||
var itemsContainer = tabContent.querySelector(".itemsContainer");
|
||||
var savedQueryKey = params.topParentId + "-" + options.mode;
|
||||
var savedViewKey = savedQueryKey + "-view";
|
||||
var query = {
|
||||
SortBy: "SortName,ProductionYear",
|
||||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Movie",
|
||||
Recursive: true,
|
||||
Fields: "PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo",
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
|
||||
StartIndex: 0,
|
||||
Limit: 100,
|
||||
ParentId: params.topParentId
|
||||
};
|
||||
var isLoading = false;
|
||||
|
||||
if (options.mode === "favorites") {
|
||||
query.IsFavorite = true;
|
||||
}
|
||||
|
||||
query = userSettings.loadQuerySettings(savedQueryKey, query);
|
||||
self.showFilterMenu = function() {
|
||||
require(["components/filterdialog/filterdialog"], function(filterDialogFactory) {
|
||||
|
||||
self.showFilterMenu = function () {
|
||||
require(["components/filterdialog/filterdialog"], function (filterDialogFactory) {
|
||||
var filterDialog = new filterDialogFactory({
|
||||
query: query,
|
||||
mode: "movies",
|
||||
serverId: ApiClient.serverId()
|
||||
});
|
||||
events.on(filterDialog, "filterchange", function() {
|
||||
query.StartIndex = 0, itemsContainer.refreshItems()
|
||||
}), filterDialog.show()
|
||||
})
|
||||
events.on(filterDialog, "filterchange", function () {
|
||||
query.StartIndex = 0;
|
||||
itemsContainer.refreshItems();
|
||||
});
|
||||
filterDialog.show();
|
||||
});
|
||||
};
|
||||
self.getCurrentViewStyle = function() {
|
||||
return userSettings.get(savedViewKey) || "Poster"
|
||||
|
||||
self.getCurrentViewStyle = function () {
|
||||
return userSettings.get(savedViewKey) || "Poster";
|
||||
};
|
||||
self.initTab = function() {
|
||||
|
||||
self.initTab = function () {
|
||||
initPage(tabContent);
|
||||
onViewStyleChange();
|
||||
};
|
||||
self.renderTab = function() {
|
||||
|
||||
self.renderTab = function () {
|
||||
itemsContainer.refreshItems();
|
||||
updateFilterControls();
|
||||
};
|
||||
self.destroy = function() {
|
||||
itemsContainer = null
|
||||
}
|
||||
}
|
||||
|
||||
self.destroy = function () {
|
||||
itemsContainer = null;
|
||||
};
|
||||
};
|
||||
});
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu", "mainTabsManager", "cardBuilder", "dom", "imageLoader", "playbackManager", "emby-itemscontainer", "emby-tabs", "emby-button"], function(events, layoutManager, inputManager, userSettings, libraryMenu, mainTabsManager, cardBuilder, dom, imageLoader, playbackManager) {
|
||||
define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu", "mainTabsManager", "cardBuilder", "dom", "imageLoader", "playbackManager", "emby-itemscontainer", "emby-tabs", "emby-button"], function (events, layoutManager, inputManager, userSettings, libraryMenu, mainTabsManager, cardBuilder, dom, imageLoader, playbackManager) {
|
||||
"use strict";
|
||||
|
||||
function enableScrollX() {
|
||||
return !layoutManager.desktop
|
||||
return !layoutManager.desktop;
|
||||
}
|
||||
|
||||
function getPortraitShape() {
|
||||
return enableScrollX() ? "overflowPortrait" : "portrait"
|
||||
return enableScrollX() ? "overflowPortrait" : "portrait";
|
||||
}
|
||||
|
||||
function getThumbShape() {
|
||||
return enableScrollX() ? "overflowBackdrop" : "backdrop"
|
||||
return enableScrollX() ? "overflowBackdrop" : "backdrop";
|
||||
}
|
||||
|
||||
function loadLatest(page, userId, parentId) {
|
||||
|
@ -21,118 +21,168 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu"
|
|||
ParentId: parentId,
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
|
||||
EnableTotalRecordCount: !1
|
||||
EnableTotalRecordCount: false
|
||||
};
|
||||
ApiClient.getJSON(ApiClient.getUrl("Users/" + userId + "/Items/Latest", options)).then(function(items) {
|
||||
var allowBottomPadding = !enableScrollX(),
|
||||
container = page.querySelector("#recentlyAddedItems");
|
||||
ApiClient.getJSON(ApiClient.getUrl("Users/" + userId + "/Items/Latest", options)).then(function (items) {
|
||||
var allowBottomPadding = !enableScrollX();
|
||||
var container = page.querySelector("#recentlyAddedItems");
|
||||
cardBuilder.buildCards(items, {
|
||||
itemsContainer: container,
|
||||
shape: getPortraitShape(),
|
||||
scalable: !0,
|
||||
overlayPlayButton: !0,
|
||||
scalable: true,
|
||||
overlayPlayButton: true,
|
||||
allowBottomPadding: allowBottomPadding,
|
||||
showTitle: !0,
|
||||
showYear: !0,
|
||||
centerText: !0
|
||||
})
|
||||
})
|
||||
showTitle: true,
|
||||
showYear: true,
|
||||
centerText: true
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function loadResume(page, userId, parentId) {
|
||||
var screenWidth = dom.getWindowSize().innerWidth,
|
||||
options = {
|
||||
SortBy: "DatePlayed",
|
||||
SortOrder: "Descending",
|
||||
IncludeItemTypes: "Movie",
|
||||
Filters: "IsResumable",
|
||||
Limit: screenWidth >= 1920 ? 5 : screenWidth >= 1600 ? 5 : 3,
|
||||
Recursive: !0,
|
||||
Fields: "PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo",
|
||||
CollapseBoxSetItems: !1,
|
||||
ParentId: parentId,
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
|
||||
EnableTotalRecordCount: !1
|
||||
};
|
||||
ApiClient.getItems(userId, options).then(function(result) {
|
||||
result.Items.length ? page.querySelector("#resumableSection").classList.remove("hide") : page.querySelector("#resumableSection").classList.add("hide");
|
||||
var allowBottomPadding = !enableScrollX(),
|
||||
container = page.querySelector("#resumableItems");
|
||||
var screenWidth = dom.getWindowSize().innerWidth;
|
||||
var options = {
|
||||
SortBy: "DatePlayed",
|
||||
SortOrder: "Descending",
|
||||
IncludeItemTypes: "Movie",
|
||||
Filters: "IsResumable",
|
||||
Limit: screenWidth >= 1920 ? 5 : screenWidth >= 1600 ? 5 : 3,
|
||||
Recursive: true,
|
||||
Fields: "PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo",
|
||||
CollapseBoxSetItems: false,
|
||||
ParentId: parentId,
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
|
||||
EnableTotalRecordCount: false
|
||||
};
|
||||
ApiClient.getItems(userId, options).then(function (result) {
|
||||
if (result.Items.length) {
|
||||
page.querySelector("#resumableSection").classList.remove("hide");
|
||||
} else {
|
||||
page.querySelector("#resumableSection").classList.add("hide");
|
||||
}
|
||||
|
||||
var allowBottomPadding = !enableScrollX();
|
||||
var container = page.querySelector("#resumableItems");
|
||||
cardBuilder.buildCards(result.Items, {
|
||||
itemsContainer: container,
|
||||
preferThumb: !0,
|
||||
preferThumb: true,
|
||||
shape: getThumbShape(),
|
||||
scalable: !0,
|
||||
overlayPlayButton: !0,
|
||||
scalable: true,
|
||||
overlayPlayButton: true,
|
||||
allowBottomPadding: allowBottomPadding,
|
||||
cardLayout: !1,
|
||||
showTitle: !0,
|
||||
showYear: !0,
|
||||
centerText: !0
|
||||
})
|
||||
})
|
||||
cardLayout: false,
|
||||
showTitle: true,
|
||||
showYear: true,
|
||||
centerText: true
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function getRecommendationHtml(recommendation) {
|
||||
var html = "",
|
||||
title = "";
|
||||
var html = "";
|
||||
var title = "";
|
||||
|
||||
switch (recommendation.RecommendationType) {
|
||||
case "SimilarToRecentlyPlayed":
|
||||
title = Globalize.translate("RecommendationBecauseYouWatched").replace("{0}", recommendation.BaselineItemName);
|
||||
break;
|
||||
|
||||
case "SimilarToLikedItem":
|
||||
title = Globalize.translate("RecommendationBecauseYouLike").replace("{0}", recommendation.BaselineItemName);
|
||||
break;
|
||||
|
||||
case "HasDirectorFromRecentlyPlayed":
|
||||
case "HasLikedDirector":
|
||||
title = Globalize.translate("RecommendationDirectedBy").replace("{0}", recommendation.BaselineItemName);
|
||||
break;
|
||||
|
||||
case "HasActorFromRecentlyPlayed":
|
||||
case "HasLikedActor":
|
||||
title = Globalize.translate("RecommendationStarring").replace("{0}", recommendation.BaselineItemName)
|
||||
title = Globalize.translate("RecommendationStarring").replace("{0}", recommendation.BaselineItemName);
|
||||
break;
|
||||
}
|
||||
html += '<div class="verticalSection">', html += '<h2 class="sectionTitle sectionTitle-cards padded-left">' + title + "</h2>";
|
||||
var allowBottomPadding = !0;
|
||||
return enableScrollX() ? (allowBottomPadding = !1, html += '<div is="emby-itemscontainer" class="itemsContainer scrollX hiddenScrollX padded-left padded-right">') : html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap padded-left padded-right">', html += cardBuilder.getCardsHtml(recommendation.Items, {
|
||||
|
||||
html += '<div class="verticalSection">';
|
||||
html += '<h2 class="sectionTitle sectionTitle-cards padded-left">' + title + "</h2>";
|
||||
var allowBottomPadding = true;
|
||||
|
||||
if (enableScrollX()) {
|
||||
allowBottomPadding = false;
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer hiddenScrollX padded-left padded-right">';
|
||||
} else {
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap padded-left padded-right">';
|
||||
}
|
||||
|
||||
html += cardBuilder.getCardsHtml(recommendation.Items, {
|
||||
shape: getPortraitShape(),
|
||||
scalable: !0,
|
||||
overlayPlayButton: !0,
|
||||
scalable: true,
|
||||
overlayPlayButton: true,
|
||||
allowBottomPadding: allowBottomPadding
|
||||
}), html += "</div>", html += "</div>"
|
||||
});
|
||||
html += "</div>";
|
||||
html += "</div>";
|
||||
return html;
|
||||
}
|
||||
|
||||
function loadSuggestions(page, userId, parentId) {
|
||||
var screenWidth = dom.getWindowSize().innerWidth,
|
||||
url = ApiClient.getUrl("Movies/Recommendations", {
|
||||
userId: userId,
|
||||
categoryLimit: 6,
|
||||
ItemLimit: screenWidth >= 1920 ? 8 : screenWidth >= 1600 ? 8 : screenWidth >= 1200 ? 6 : 5,
|
||||
Fields: "PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo",
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
|
||||
});
|
||||
ApiClient.getJSON(url).then(function(recommendations) {
|
||||
if (!recommendations.length) return page.querySelector(".noItemsMessage").classList.remove("hide"), void(page.querySelector(".recommendations").innerHTML = "");
|
||||
var screenWidth = dom.getWindowSize().innerWidth;
|
||||
var url = ApiClient.getUrl("Movies/Recommendations", {
|
||||
userId: userId,
|
||||
categoryLimit: 6,
|
||||
ItemLimit: screenWidth >= 1920 ? 8 : screenWidth >= 1600 ? 8 : screenWidth >= 1200 ? 6 : 5,
|
||||
Fields: "PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo",
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
|
||||
});
|
||||
ApiClient.getJSON(url).then(function (recommendations) {
|
||||
if (!recommendations.length) {
|
||||
page.querySelector(".noItemsMessage").classList.remove("hide");
|
||||
page.querySelector(".recommendations").innerHTML = "";
|
||||
return;
|
||||
}
|
||||
|
||||
var html = recommendations.map(getRecommendationHtml).join("");
|
||||
page.querySelector(".noItemsMessage").classList.add("hide");
|
||||
var recs = page.querySelector(".recommendations");
|
||||
recs.innerHTML = html, imageLoader.lazyChildren(recs)
|
||||
})
|
||||
recs.innerHTML = html;
|
||||
imageLoader.lazyChildren(recs);
|
||||
});
|
||||
}
|
||||
|
||||
function setScrollClasses(elem, scrollX) {
|
||||
scrollX ? (elem.classList.add("hiddenScrollX"), layoutManager.tv && elem.classList.add("smoothScrollX"), elem.classList.add("scrollX"), elem.classList.remove("vertical-wrap")) : (elem.classList.remove("hiddenScrollX"), elem.classList.remove("smoothScrollX"), elem.classList.remove("scrollX"), elem.classList.add("vertical-wrap"))
|
||||
if (scrollX) {
|
||||
elem.classList.add("hiddenScrollX");
|
||||
|
||||
if (layoutManager.tv) {
|
||||
elem.classList.add("smoothScrollX");
|
||||
}
|
||||
|
||||
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");
|
||||
}
|
||||
}
|
||||
|
||||
function initSuggestedTab(page, tabContent) {
|
||||
for (var containers = tabContent.querySelectorAll(".itemsContainer"), i = 0, length = containers.length; i < length; i++) setScrollClasses(containers[i], enableScrollX())
|
||||
var containers = tabContent.querySelectorAll(".itemsContainer");
|
||||
|
||||
for (var i = 0, length = containers.length; i < length; i++) {
|
||||
setScrollClasses(containers[i], enableScrollX());
|
||||
}
|
||||
}
|
||||
|
||||
function loadSuggestionsTab(view, params, tabContent) {
|
||||
var parentId = params.topParentId,
|
||||
userId = ApiClient.getCurrentUserId();
|
||||
console.log("loadSuggestionsTab"), loadResume(tabContent, userId, parentId), loadLatest(tabContent, userId, parentId), loadSuggestions(tabContent, userId, parentId)
|
||||
var parentId = params.topParentId;
|
||||
var userId = ApiClient.getCurrentUserId();
|
||||
console.log("loadSuggestionsTab");
|
||||
loadResume(tabContent, userId, parentId);
|
||||
loadLatest(tabContent, userId, parentId);
|
||||
loadSuggestions(tabContent, userId, parentId);
|
||||
}
|
||||
|
||||
function getTabs() {
|
||||
|
@ -151,126 +201,196 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu"
|
|||
}, {
|
||||
name: Globalize.translate("ButtonSearch"),
|
||||
cssClass: "searchTabButton"
|
||||
}]
|
||||
}];
|
||||
}
|
||||
|
||||
function getDefaultTabIndex(folderId) {
|
||||
switch (userSettings.get("landing-" + folderId)) {
|
||||
case "suggestions":
|
||||
return 1;
|
||||
|
||||
case "favorites":
|
||||
return 3;
|
||||
|
||||
case "collections":
|
||||
return 4;
|
||||
|
||||
case "genres":
|
||||
return 5;
|
||||
|
||||
default:
|
||||
return 0
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return function(view, params) {
|
||||
|
||||
return function (view, params) {
|
||||
function onBeforeTabChange(e) {
|
||||
preLoadTab(view, parseInt(e.detail.selectedTabIndex))
|
||||
preLoadTab(view, parseInt(e.detail.selectedTabIndex));
|
||||
}
|
||||
|
||||
function onTabChange(e) {
|
||||
var newIndex = parseInt(e.detail.selectedTabIndex);
|
||||
loadTab(view, newIndex)
|
||||
loadTab(view, newIndex);
|
||||
}
|
||||
|
||||
function getTabContainers() {
|
||||
return view.querySelectorAll(".pageTabContent")
|
||||
return view.querySelectorAll(".pageTabContent");
|
||||
}
|
||||
|
||||
function initTabs() {
|
||||
mainTabsManager.setTabs(view, currentTabIndex, getTabs, getTabContainers, onBeforeTabChange, onTabChange)
|
||||
mainTabsManager.setTabs(view, currentTabIndex, getTabs, getTabContainers, onBeforeTabChange, onTabChange);
|
||||
}
|
||||
|
||||
function getTabController(page, index, callback) {
|
||||
var depends = [];
|
||||
|
||||
switch (index) {
|
||||
case 0:
|
||||
depends.push("controllers/movies/movies");
|
||||
break;
|
||||
|
||||
case 1:
|
||||
break;
|
||||
|
||||
case 2:
|
||||
depends.push("controllers/movies/movietrailers");
|
||||
break;
|
||||
|
||||
case 3:
|
||||
depends.push("controllers/movies/movies");
|
||||
break;
|
||||
|
||||
case 4:
|
||||
depends.push("controllers/movies/moviecollections");
|
||||
break;
|
||||
|
||||
case 5:
|
||||
depends.push("controllers/movies/moviegenres");
|
||||
break;
|
||||
|
||||
case 6:
|
||||
depends.push("scripts/searchtab")
|
||||
depends.push("scripts/searchtab");
|
||||
}
|
||||
require(depends, function(controllerFactory) {
|
||||
|
||||
require(depends, function (controllerFactory) {
|
||||
var tabContent;
|
||||
index === suggestionsTabIndex && (tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']"), self.tabContent = tabContent);
|
||||
|
||||
if (index === suggestionsTabIndex) {
|
||||
tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']");
|
||||
self.tabContent = tabContent;
|
||||
}
|
||||
|
||||
var controller = tabControllers[index];
|
||||
controller || (tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']"), controller = index === suggestionsTabIndex ? self : 6 === index ? new controllerFactory(view, tabContent, {
|
||||
collectionType: "movies",
|
||||
parentId: params.topParentId
|
||||
}) : 0 === index || 3 === index ? new controllerFactory(view, params, tabContent, {
|
||||
mode: index ? "favorites" : "movies"
|
||||
}) : new controllerFactory(view, params, tabContent), tabControllers[index] = controller, controller.initTab && controller.initTab()), callback(controller)
|
||||
})
|
||||
|
||||
if (!controller) {
|
||||
tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']");
|
||||
|
||||
if (index === suggestionsTabIndex) {
|
||||
controller = self;
|
||||
} else if (index === 6) {
|
||||
controller = new controllerFactory(view, tabContent, {
|
||||
collectionType: "movies",
|
||||
parentId: params.topParentId
|
||||
});
|
||||
} else if (index == 0 || index == 3) {
|
||||
controller = new controllerFactory(view, params, tabContent, {
|
||||
mode: index ? "favorites" : "movies"
|
||||
});
|
||||
} else {
|
||||
controller = new controllerFactory(view, params, tabContent);
|
||||
}
|
||||
|
||||
tabControllers[index] = controller;
|
||||
|
||||
if (controller.initTab) {
|
||||
controller.initTab();
|
||||
}
|
||||
}
|
||||
|
||||
callback(controller);
|
||||
});
|
||||
}
|
||||
|
||||
function preLoadTab(page, index) {
|
||||
getTabController(page, index, function(controller) {
|
||||
-1 == renderedTabs.indexOf(index) && controller.preRender && controller.preRender()
|
||||
})
|
||||
getTabController(page, index, function (controller) {
|
||||
if (renderedTabs.indexOf(index) == -1 && controller.preRender) {
|
||||
controller.preRender();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function loadTab(page, index) {
|
||||
currentTabIndex = index, getTabController(page, index, function(controller) {
|
||||
initialTabIndex = null, -1 == renderedTabs.indexOf(index) && (renderedTabs.push(index), controller.renderTab())
|
||||
})
|
||||
currentTabIndex = index;
|
||||
getTabController(page, index, function (controller) {
|
||||
initialTabIndex = null;
|
||||
|
||||
if (renderedTabs.indexOf(index) == -1) {
|
||||
renderedTabs.push(index);
|
||||
controller.renderTab();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function onPlaybackStop(e, state) {
|
||||
state.NowPlayingItem && "Video" == state.NowPlayingItem.MediaType && (renderedTabs = [], mainTabsManager.getTabsElement().triggerTabChange())
|
||||
if (state.NowPlayingItem && state.NowPlayingItem.MediaType == "Video") {
|
||||
renderedTabs = [];
|
||||
mainTabsManager.getTabsElement().triggerTabChange();
|
||||
}
|
||||
}
|
||||
|
||||
function onInputCommand(e) {
|
||||
switch (e.detail.command) {
|
||||
case "search":
|
||||
e.preventDefault(), Dashboard.navigate("search.html?collectionType=movies&parentId=" + params.topParentId)
|
||||
e.preventDefault();
|
||||
Dashboard.navigate("search.html?collectionType=movies&parentId=" + params.topParentId);
|
||||
}
|
||||
}
|
||||
var isViewRestored, self = this,
|
||||
currentTabIndex = parseInt(params.tab || getDefaultTabIndex(params.topParentId)),
|
||||
initialTabIndex = currentTabIndex,
|
||||
suggestionsTabIndex = 1;
|
||||
self.initTab = function() {
|
||||
|
||||
var isViewRestored;
|
||||
var self = this;
|
||||
var currentTabIndex = parseInt(params.tab || getDefaultTabIndex(params.topParentId));
|
||||
var initialTabIndex = currentTabIndex;
|
||||
var suggestionsTabIndex = 1;
|
||||
|
||||
self.initTab = function () {
|
||||
var tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']");
|
||||
initSuggestedTab(view, tabContent);
|
||||
}, self.renderTab = function() {
|
||||
var tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']");
|
||||
loadSuggestionsTab(view, params, tabContent)
|
||||
};
|
||||
var tabControllers = [],
|
||||
renderedTabs = [];
|
||||
view.addEventListener("viewshow", function(e) {
|
||||
|
||||
self.renderTab = function () {
|
||||
var tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']");
|
||||
loadSuggestionsTab(view, params, tabContent);
|
||||
};
|
||||
|
||||
var tabControllers = [];
|
||||
var renderedTabs = [];
|
||||
view.addEventListener("viewshow", function (e) {
|
||||
if (isViewRestored = e.detail.isRestored, initTabs(), !view.getAttribute("data-title")) {
|
||||
var parentId = params.topParentId;
|
||||
parentId ? ApiClient.getItem(ApiClient.getCurrentUserId(), parentId).then(function(item) {
|
||||
view.setAttribute("data-title", item.Name), libraryMenu.setTitle(item.Name)
|
||||
}) : (view.setAttribute("data-title", Globalize.translate("TabMovies")), libraryMenu.setTitle(Globalize.translate("TabMovies")))
|
||||
|
||||
if (parentId) {
|
||||
ApiClient.getItem(ApiClient.getCurrentUserId(), parentId).then(function (item) {
|
||||
view.setAttribute("data-title", item.Name);
|
||||
libraryMenu.setTitle(item.Name);
|
||||
});
|
||||
} else {
|
||||
view.setAttribute("data-title", Globalize.translate("TabMovies"));
|
||||
libraryMenu.setTitle(Globalize.translate("TabMovies"));
|
||||
}
|
||||
}
|
||||
events.on(playbackManager, "playbackstop", onPlaybackStop), inputManager.on(window, onInputCommand)
|
||||
}), view.addEventListener("viewbeforehide", function(e) {
|
||||
inputManager.off(window, onInputCommand)
|
||||
}), view.addEventListener("viewdestroy", function(e) {
|
||||
tabControllers.forEach(function(t) {
|
||||
t.destroy && t.destroy()
|
||||
})
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
events.on(playbackManager, "playbackstop", onPlaybackStop);
|
||||
inputManager.on(window, onInputCommand);
|
||||
});
|
||||
view.addEventListener("viewbeforehide", function (e) {
|
||||
inputManager.off(window, onInputCommand);
|
||||
});
|
||||
view.addEventListener("viewdestroy", function (e) {
|
||||
tabControllers.forEach(function (t) {
|
||||
if (t.destroy) {
|
||||
t.destroy();
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
});
|
||||
|
|
|
@ -1,185 +1,261 @@
|
|||
define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "alphaPicker", "listView", "cardBuilder", "apphost", "emby-itemscontainer"], function(layoutManager, loading, events, libraryBrowser, imageLoader, alphaPicker, listView, cardBuilder, appHost) {
|
||||
define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "alphaPicker", "listView", "cardBuilder", "apphost", "emby-itemscontainer"], function (layoutManager, loading, events, libraryBrowser, imageLoader, alphaPicker, listView, cardBuilder, appHost) {
|
||||
"use strict";
|
||||
return function(view, params, tabContent) {
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
function getPageData(context) {
|
||||
var key = getSavedQueryKey(context),
|
||||
pageData = data[key];
|
||||
return pageData || (pageData = data[key] = {
|
||||
query: {
|
||||
SortBy: "SortName",
|
||||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Trailer",
|
||||
Recursive: !0,
|
||||
Fields: "PrimaryImageAspectRatio,SortName,BasicSyncInfo",
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
|
||||
StartIndex: 0,
|
||||
Limit: pageSize
|
||||
},
|
||||
view: libraryBrowser.getSavedView(key) || "Poster"
|
||||
}, libraryBrowser.loadSavedQueryValues(key, pageData.query)), pageData
|
||||
var key = getSavedQueryKey(context);
|
||||
var pageData = data[key];
|
||||
|
||||
if (!pageData) {
|
||||
pageData = data[key] = {
|
||||
query: {
|
||||
SortBy: "SortName",
|
||||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Trailer",
|
||||
Recursive: true,
|
||||
Fields: "PrimaryImageAspectRatio,SortName,BasicSyncInfo",
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
|
||||
StartIndex: 0,
|
||||
Limit: pageSize
|
||||
},
|
||||
view: libraryBrowser.getSavedView(key) || "Poster"
|
||||
};
|
||||
libraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||
}
|
||||
|
||||
return pageData;
|
||||
}
|
||||
|
||||
function getQuery(context) {
|
||||
return getPageData(context).query
|
||||
return getPageData(context).query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey(context) {
|
||||
return context.savedQueryKey || (context.savedQueryKey = libraryBrowser.getSavedQueryKey("trailers")), context.savedQueryKey
|
||||
if (!context.savedQueryKey) {
|
||||
context.savedQueryKey = libraryBrowser.getSavedQueryKey("trailers");
|
||||
}
|
||||
|
||||
return context.savedQueryKey;
|
||||
}
|
||||
|
||||
function reloadItems() {
|
||||
loading.show();
|
||||
isLoading = true;
|
||||
var query = getQuery(tabContent);
|
||||
ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function(result) {
|
||||
ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function (result) {
|
||||
function onNextPageClick() {
|
||||
if (isLoading) return;
|
||||
query.StartIndex += query.Limit, reloadItems()
|
||||
if (isLoading) {
|
||||
return;
|
||||
}
|
||||
|
||||
query.StartIndex += query.Limit;
|
||||
reloadItems();
|
||||
}
|
||||
|
||||
function onPreviousPageClick() {
|
||||
if (isLoading) return;
|
||||
query.StartIndex -= query.Limit, reloadItems()
|
||||
if (isLoading) {
|
||||
return;
|
||||
}
|
||||
|
||||
query.StartIndex -= query.Limit;
|
||||
reloadItems();
|
||||
}
|
||||
window.scrollTo(0, 0), updateFilterControls(tabContent);
|
||||
var html, pagingHtml = libraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: !1,
|
||||
updatePageSizeSetting: !1,
|
||||
addLayoutButton: !1,
|
||||
sortButton: !1,
|
||||
filterButton: !1
|
||||
}),
|
||||
viewStyle = self.getCurrentViewStyle();
|
||||
html = "Thumb" == viewStyle ? cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
preferThumb: !0,
|
||||
context: "movies",
|
||||
overlayPlayButton: !0
|
||||
}) : "ThumbCard" == viewStyle ? cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
preferThumb: !0,
|
||||
context: "movies",
|
||||
cardLayout: !0,
|
||||
showTitle: !0,
|
||||
showYear: !0,
|
||||
centerText: !0
|
||||
}) : "Banner" == viewStyle ? cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "banner",
|
||||
preferBanner: !0,
|
||||
context: "movies"
|
||||
}) : "List" == viewStyle ? listView.getListViewHtml({
|
||||
items: result.Items,
|
||||
context: "movies",
|
||||
sortBy: query.SortBy
|
||||
}) : "PosterCard" == viewStyle ? cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "portrait",
|
||||
context: "movies",
|
||||
showTitle: !0,
|
||||
showYear: !0,
|
||||
centerText: !0,
|
||||
cardLayout: !0
|
||||
}) : cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "portrait",
|
||||
context: "movies",
|
||||
centerText: !0,
|
||||
overlayPlayButton: !0,
|
||||
showTitle: !0,
|
||||
showYear: !0
|
||||
|
||||
window.scrollTo(0, 0);
|
||||
updateFilterControls(tabContent);
|
||||
var pagingHtml = libraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
showLimit: false,
|
||||
updatePageSizeSetting: false,
|
||||
addLayoutButton: false,
|
||||
sortButton: false,
|
||||
filterButton: false
|
||||
});
|
||||
var i, length, elems = tabContent.querySelectorAll(".paging");
|
||||
for (i = 0, length = elems.length; i < length; i++) elems[i].innerHTML = pagingHtml;
|
||||
for (elems = tabContent.querySelectorAll(".btnNextPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onNextPageClick);
|
||||
for (elems = tabContent.querySelectorAll(".btnPreviousPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onPreviousPageClick);
|
||||
result.Items.length || (html = '<p style="text-align:center;">' + Globalize.translate("MessageNoTrailersFound") + "</p>");
|
||||
var html;
|
||||
var viewStyle = self.getCurrentViewStyle();
|
||||
|
||||
if (viewStyle == "Thumb") {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
preferThumb: true,
|
||||
context: "movies",
|
||||
overlayPlayButton: true
|
||||
});
|
||||
} else if (viewStyle == "ThumbCard") {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
preferThumb: true,
|
||||
context: "movies",
|
||||
cardLayout: true,
|
||||
showTitle: true,
|
||||
showYear: true,
|
||||
centerText: true
|
||||
});
|
||||
} else if (viewStyle == "Banner") {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "banner",
|
||||
preferBanner: true,
|
||||
context: "movies"
|
||||
});
|
||||
} else if (viewStyle == "List") {
|
||||
html = listView.getListViewHtml({
|
||||
items: result.Items,
|
||||
context: "movies",
|
||||
sortBy: query.SortBy
|
||||
});
|
||||
} else if (viewStyle == "PosterCard") {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "portrait",
|
||||
context: "movies",
|
||||
showTitle: true,
|
||||
showYear: true,
|
||||
cardLayout: true,
|
||||
centerText: true
|
||||
});
|
||||
} else {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "portrait",
|
||||
context: "movies",
|
||||
centerText: true,
|
||||
overlayPlayButton: true,
|
||||
showTitle: true,
|
||||
showYear: true
|
||||
});
|
||||
}
|
||||
|
||||
var i;
|
||||
var length;
|
||||
var elems = tabContent.querySelectorAll(".paging");
|
||||
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].innerHTML = pagingHtml;
|
||||
}
|
||||
|
||||
elems = tabContent.querySelectorAll(".btnNextPage");
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].addEventListener("click", onNextPageClick);
|
||||
}
|
||||
|
||||
elems = tabContent.querySelectorAll(".btnPreviousPage");
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].addEventListener("click", onPreviousPageClick);
|
||||
}
|
||||
|
||||
if (!result.Items.length) {
|
||||
html = '<p style="text-align:center;">' + Globalize.translate("MessageNoTrailersFound") + "</p>";
|
||||
}
|
||||
|
||||
var itemsContainer = tabContent.querySelector(".itemsContainer");
|
||||
itemsContainer.innerHTML = html;
|
||||
imageLoader.lazyChildren(itemsContainer);
|
||||
libraryBrowser.saveQueryValues(getSavedQueryKey(tabContent), query);
|
||||
loading.hide();
|
||||
isLoading = false;
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
function updateFilterControls(tabContent) {
|
||||
var query = getQuery(tabContent);
|
||||
self.alphaPicker.value(query.NameStartsWithOrGreater)
|
||||
self.alphaPicker.value(query.NameStartsWithOrGreater);
|
||||
}
|
||||
var self = this,
|
||||
pageSize = 100,
|
||||
data = {},
|
||||
isLoading = false;
|
||||
self.showFilterMenu = function() {
|
||||
require(["components/filterdialog/filterdialog"], function(filterDialogFactory) {
|
||||
var filterDialog = new filterDialogFactory({
|
||||
query: getQuery(tabContent),
|
||||
mode: "movies",
|
||||
serverId: ApiClient.serverId()
|
||||
});
|
||||
events.on(filterDialog, "filterchange", function() {
|
||||
getQuery(tabContent).StartIndex = 0, reloadItems()
|
||||
}), filterDialog.show()
|
||||
})
|
||||
}, self.getCurrentViewStyle = function() {
|
||||
return getPageData(tabContent).view
|
||||
},
|
||||
function(tabContent) {
|
||||
var alphaPickerElement = tabContent.querySelector(".alphaPicker");
|
||||
if (alphaPickerElement.addEventListener("alphavaluechanged", function(e) {
|
||||
var newValue = e.detail.value,
|
||||
query = getQuery(tabContent);
|
||||
query.NameStartsWithOrGreater = newValue, query.StartIndex = 0, reloadItems()
|
||||
}), self.alphaPicker = new alphaPicker({
|
||||
element: alphaPickerElement,
|
||||
valueChangeEvent: "click"
|
||||
}), layoutManager.desktop || layoutManager.mobile) {
|
||||
tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right");
|
||||
var itemsContainer = tabContent.querySelector(".itemsContainer");
|
||||
itemsContainer.classList.remove("padded-left-withalphapicker"), itemsContainer.classList.add("padded-right-withalphapicker")
|
||||
}
|
||||
tabContent.querySelector(".btnFilter").addEventListener("click", function() {
|
||||
self.showFilterMenu()
|
||||
}), tabContent.querySelector(".btnSort").addEventListener("click", function(e) {
|
||||
libraryBrowser.showSortMenu({
|
||||
items: [{
|
||||
name: Globalize.translate("OptionNameSort"),
|
||||
id: "SortName"
|
||||
}, {
|
||||
name: Globalize.translate("OptionImdbRating"),
|
||||
id: "CommunityRating,SortName"
|
||||
}, {
|
||||
name: Globalize.translate("OptionDateAdded"),
|
||||
id: "DateCreated,SortName"
|
||||
}, {
|
||||
name: Globalize.translate("OptionDatePlayed"),
|
||||
id: "DatePlayed,SortName"
|
||||
}, {
|
||||
name: Globalize.translate("OptionParentalRating"),
|
||||
id: "OfficialRating,SortName"
|
||||
}, {
|
||||
name: Globalize.translate("OptionPlayCount"),
|
||||
id: "PlayCount,SortName"
|
||||
}, {
|
||||
name: Globalize.translate("OptionReleaseDate"),
|
||||
id: "PremiereDate,SortName"
|
||||
}],
|
||||
callback: function() {
|
||||
getQuery(tabContent).StartIndex = 0, reloadItems()
|
||||
},
|
||||
query: getQuery(tabContent),
|
||||
button: e.target
|
||||
})
|
||||
})
|
||||
}(tabContent), self.renderTab = function() {
|
||||
reloadItems(), updateFilterControls(tabContent)
|
||||
}, self.destroy = function() {}
|
||||
}
|
||||
|
||||
var self = this;
|
||||
var pageSize = 100;
|
||||
var data = {};
|
||||
var isLoading = false;
|
||||
|
||||
self.showFilterMenu = function () {
|
||||
require(["components/filterdialog/filterdialog"], function (filterDialogFactory) {
|
||||
var filterDialog = new filterDialogFactory({
|
||||
query: getQuery(tabContent),
|
||||
mode: "movies",
|
||||
serverId: ApiClient.serverId()
|
||||
});
|
||||
events.on(filterDialog, "filterchange", function () {
|
||||
getQuery(tabContent).StartIndex = 0;
|
||||
reloadItems();
|
||||
});
|
||||
filterDialog.show();
|
||||
});
|
||||
};
|
||||
|
||||
self.getCurrentViewStyle = function () {
|
||||
return getPageData(tabContent).view;
|
||||
};
|
||||
|
||||
function initPage(tabContent) {
|
||||
var alphaPickerElement = tabContent.querySelector(".alphaPicker");
|
||||
alphaPickerElement.addEventListener("alphavaluechanged", function (e) {
|
||||
var newValue = e.detail.value;
|
||||
var query = getQuery(tabContent);
|
||||
query.NameStartsWithOrGreater = newValue;
|
||||
query.StartIndex = 0;
|
||||
reloadItems();
|
||||
});
|
||||
self.alphaPicker = new alphaPicker({
|
||||
element: alphaPickerElement,
|
||||
valueChangeEvent: "click"
|
||||
});
|
||||
|
||||
if (layoutManager.desktop || layoutManager.mobile) {
|
||||
tabContent.querySelector(".alphaPicker").classList.add("alphabetPicker-right");
|
||||
var itemsContainer = tabContent.querySelector(".itemsContainer");
|
||||
itemsContainer.classList.remove("padded-left-withalphapicker");
|
||||
itemsContainer.classList.add("padded-right-withalphapicker");
|
||||
}
|
||||
|
||||
tabContent.querySelector(".btnFilter").addEventListener("click", function () {
|
||||
self.showFilterMenu();
|
||||
});
|
||||
tabContent.querySelector(".btnSort").addEventListener("click", function (e) {
|
||||
libraryBrowser.showSortMenu({
|
||||
items: [{
|
||||
name: Globalize.translate("OptionNameSort"),
|
||||
id: "SortName"
|
||||
}, {
|
||||
name: Globalize.translate("OptionImdbRating"),
|
||||
id: "CommunityRating,SortName"
|
||||
}, {
|
||||
name: Globalize.translate("OptionDateAdded"),
|
||||
id: "DateCreated,SortName"
|
||||
}, {
|
||||
name: Globalize.translate("OptionDatePlayed"),
|
||||
id: "DatePlayed,SortName"
|
||||
}, {
|
||||
name: Globalize.translate("OptionParentalRating"),
|
||||
id: "OfficialRating,SortName"
|
||||
}, {
|
||||
name: Globalize.translate("OptionPlayCount"),
|
||||
id: "PlayCount,SortName"
|
||||
}, {
|
||||
name: Globalize.translate("OptionReleaseDate"),
|
||||
id: "PremiereDate,SortName"
|
||||
}],
|
||||
callback: function () {
|
||||
getQuery(tabContent).StartIndex = 0;
|
||||
reloadItems();
|
||||
},
|
||||
query: getQuery(tabContent),
|
||||
button: e.target
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
initPage(tabContent);
|
||||
|
||||
self.renderTab = function () {
|
||||
reloadItems();
|
||||
updateFilterControls(tabContent);
|
||||
};
|
||||
|
||||
self.destroy = function () {};
|
||||
};
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue