Deminify part 2 (#509)

This de-minifies and de-uglifies `controllers` subdirectory
This commit is contained in:
grafixeyehero 2019-11-06 13:43:39 +03:00 committed by Vasily
parent f98a43f06f
commit 23677db990
66 changed files with 8296 additions and 4227 deletions

View file

@ -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 () {};
};
});

View file

@ -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">&#xE5CC;</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">&#xE5CC;</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);
};
};
});

View file

@ -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;
};
};
});

View file

@ -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();
}
});
});
};
});

View file

@ -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 () {};
};
});