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

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,169 +1,233 @@
define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardBuilder", "emby-itemscontainer"], function(loading, events, libraryBrowser, imageLoader, listView, cardBuilder) {
define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardBuilder", "emby-itemscontainer"], function (loading, events, libraryBrowser, imageLoader, listView, cardBuilder) {
"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: "SeriesSortName,SortName",
SortOrder: "Ascending",
IncludeItemTypes: "Episode",
Recursive: !0,
Fields: "PrimaryImageAspectRatio,MediaSourceCount,UserData",
IsMissing: !1,
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Thumb",
StartIndex: 0,
Limit: pageSize
},
view: libraryBrowser.getSavedView(key) || "Poster"
}, pageData.query.ParentId = params.topParentId, libraryBrowser.loadSavedQueryValues(key, pageData.query)), pageData
var key = getSavedQueryKey(context);
var pageData = data[key];
if (!pageData) {
pageData = data[key] = {
query: {
SortBy: "SeriesSortName,SortName",
SortOrder: "Ascending",
IncludeItemTypes: "Episode",
Recursive: true,
Fields: "PrimaryImageAspectRatio,MediaSourceCount,UserData",
IsMissing: false,
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Thumb",
StartIndex: 0,
Limit: pageSize
},
view: libraryBrowser.getSavedView(key) || "Poster"
};
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("episodes")), context.savedQueryKey
if (!context.savedQueryKey) {
context.savedQueryKey = libraryBrowser.getSavedQueryKey("episodes");
}
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(Dashboard.getCurrentUserId(), query).then(function(result) {
ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
function onNextPageClick() {
if (isLoading) return;
if (isLoading) {
return;
}
query.StartIndex += query.Limit;
reloadItems(tabContent)
reloadItems(tabContent);
}
function onPreviousPageClick() {
if (isLoading) return;
if (isLoading) {
return;
}
query.StartIndex -= query.Limit;
reloadItems(tabContent)
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(),
itemsContainer = tabContent.querySelector(".itemsContainer");
html = "List" == viewStyle ? listView.getListViewHtml({
items: result.Items,
sortBy: query.SortBy,
showParentTitle: !0
}) : "PosterCard" == viewStyle ? cardBuilder.getCardsHtml({
items: result.Items,
shape: "backdrop",
showTitle: !0,
showParentTitle: !0,
scalable: !0,
cardLayout: !0
}) : cardBuilder.getCardsHtml({
items: result.Items,
shape: "backdrop",
showTitle: !0,
showParentTitle: !0,
overlayText: !1,
centerText: !0,
scalable: !0,
overlayPlayButton: !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;
for (elems = tabContent.querySelectorAll(".paging"), i = 0, length = elems.length; i < length; i++)
var viewStyle = self.getCurrentViewStyle();
var itemsContainer = tabContent.querySelector(".itemsContainer");
if (viewStyle == "List") {
html = listView.getListViewHtml({
items: result.Items,
sortBy: query.SortBy,
showParentTitle: true
});
} else if (viewStyle == "PosterCard") {
html = cardBuilder.getCardsHtml({
items: result.Items,
shape: "backdrop",
showTitle: true,
showParentTitle: true,
scalable: true,
cardLayout: true
});
} else {
html = cardBuilder.getCardsHtml({
items: result.Items,
shape: "backdrop",
showTitle: true,
showParentTitle: true,
overlayText: false,
centerText: true,
scalable: true,
overlayPlayButton: true
});
}
var i;
var length;
var elems;
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 = tabContent.querySelectorAll(".btnPreviousPage");
for (i = 0, length = elems.length; i < length; i++) {
elems[i].addEventListener("click", onPreviousPageClick);
}
itemsContainer.innerHTML = html;
imageLoader.lazyChildren(itemsContainer);
libraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
loading.hide();
isLoading = false;
})
});
}
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: "episodes",
serverId: ApiClient.serverId()
});
events.on(filterDialog, "filterchange", function() {
reloadItems(tabContent)
}), filterDialog.show()
})
}, self.getCurrentViewStyle = function() {
return getPageData(tabContent).view
},
function(tabContent) {
tabContent.querySelector(".btnFilter").addEventListener("click", function() {
self.showFilterMenu()
}), tabContent.querySelector(".btnSort").addEventListener("click", function(e) {
libraryBrowser.showSortMenu({
items: [{
name: Globalize.translate("OptionNameSort"),
id: "SeriesSortName,SortName"
}, {
name: Globalize.translate("OptionTvdbRating"),
id: "CommunityRating,SeriesSortName,SortName"
}, {
name: Globalize.translate("OptionDateAdded"),
id: "DateCreated,SeriesSortName,SortName"
}, {
name: Globalize.translate("OptionPremiereDate"),
id: "PremiereDate,SeriesSortName,SortName"
}, {
name: Globalize.translate("OptionDatePlayed"),
id: "DatePlayed,SeriesSortName,SortName"
}, {
name: Globalize.translate("OptionParentalRating"),
id: "OfficialRating,SeriesSortName,SortName"
}, {
name: Globalize.translate("OptionPlayCount"),
id: "PlayCount,SeriesSortName,SortName"
}, {
name: Globalize.translate("OptionRuntime"),
id: "Runtime,SeriesSortName,SortName"
}],
callback: function() {
reloadItems(tabContent)
},
query: getQuery(tabContent),
button: e.target
})
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: "episodes",
serverId: ApiClient.serverId()
});
var btnSelectView = tabContent.querySelector(".btnSelectView");
btnSelectView.addEventListener("click", function(e) {
libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), "List,Poster,PosterCard".split(","))
}), btnSelectView.addEventListener("layoutchange", function(e) {
var viewStyle = e.detail.viewStyle;
getPageData(tabContent).view = viewStyle, libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle), onViewStyleChange(), reloadItems(tabContent)
})
}(tabContent), onViewStyleChange(), self.renderTab = function() {
reloadItems(tabContent)
}, self.destroy = function() {}
}
events.on(filterDialog, "filterchange", function () {
reloadItems(tabContent);
});
filterDialog.show();
});
};
self.getCurrentViewStyle = function () {
return getPageData(tabContent).view;
};
function initPage(tabContent) {
tabContent.querySelector(".btnFilter").addEventListener("click", function () {
self.showFilterMenu();
});
tabContent.querySelector(".btnSort").addEventListener("click", function (e) {
libraryBrowser.showSortMenu({
items: [{
name: Globalize.translate("OptionNameSort"),
id: "SeriesSortName,SortName"
}, {
name: Globalize.translate("OptionTvdbRating"),
id: "CommunityRating,SeriesSortName,SortName"
}, {
name: Globalize.translate("OptionDateAdded"),
id: "DateCreated,SeriesSortName,SortName"
}, {
name: Globalize.translate("OptionPremiereDate"),
id: "PremiereDate,SeriesSortName,SortName"
}, {
name: Globalize.translate("OptionDatePlayed"),
id: "DatePlayed,SeriesSortName,SortName"
}, {
name: Globalize.translate("OptionParentalRating"),
id: "OfficialRating,SeriesSortName,SortName"
}, {
name: Globalize.translate("OptionPlayCount"),
id: "PlayCount,SeriesSortName,SortName"
}, {
name: Globalize.translate("OptionRuntime"),
id: "Runtime,SeriesSortName,SortName"
}],
callback: function () {
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".split(","));
});
btnSelectView.addEventListener("layoutchange", function (e) {
var viewStyle = e.detail.viewStyle;
getPageData(tabContent).view = viewStyle;
libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle);
onViewStyleChange();
reloadItems(tabContent);
});
}
initPage(tabContent);
onViewStyleChange();
self.renderTab = function () {
reloadItems(tabContent);
};
self.destroy = function () {};
};
});

View file

@ -1,139 +1,200 @@
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: "Series",
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: "Series",
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("seriesgenres")
return libraryBrowser.getSavedQueryKey("seriesgenres");
}
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: "Series",
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: "Series",
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: "tvshows",
parentId: params.topParentId
}) + '" class="more button-flat button-flat-mini sectionTitleTextButton btnMoreFromGenre' + item.Id + '">', html += '<h2 class="sectionTitle sectionTitle-cards">', html += item.Name, html += "</h2>", html += '<i class="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: "tvshows",
parentId: params.topParentId
}) + '" class="more button-flat button-flat-mini sectionTitleTextButton btnMoreFromGenre' + item.Id + '">';
html += '<h2 class="sectionTitle sectionTitle-cards">';
html += item.Name;
html += "</h2>";
html += '<i class="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,52 +1,60 @@
define(["loading", "components/groupedcards", "cardBuilder", "apphost", "imageLoader"], function(loading, groupedcards, cardBuilder, appHost, imageLoader) {
define(["loading", "components/groupedcards", "cardBuilder", "apphost", "imageLoader"], function (loading, groupedcards, cardBuilder, appHost, imageLoader) {
"use strict";
function getLatestPromise(context, params) {
loading.show();
var userId = ApiClient.getCurrentUserId(),
parentId = params.topParentId,
options = {
IncludeItemTypes: "Episode",
Limit: 30,
Fields: "PrimaryImageAspectRatio,BasicSyncInfo",
ParentId: parentId,
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Thumb"
};
return ApiClient.getJSON(ApiClient.getUrl("Users/" + userId + "/Items/Latest", options))
var userId = ApiClient.getCurrentUserId();
var parentId = params.topParentId;
var options = {
IncludeItemTypes: "Episode",
Limit: 30,
Fields: "PrimaryImageAspectRatio,BasicSyncInfo",
ParentId: parentId,
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Thumb"
};
return ApiClient.getJSON(ApiClient.getUrl("Users/" + userId + "/Items/Latest", options));
}
function loadLatest(context, params, promise) {
promise.then(function(items) {
promise.then(function (items) {
var html = "";
appHost.supports("imageanalysis");
html += cardBuilder.getCardsHtml({
items: items,
shape: "backdrop",
preferThumb: !0,
showTitle: !0,
showSeriesYear: !0,
showParentTitle: !0,
overlayText: !1,
cardLayout: !1,
showUnplayedIndicator: !1,
showChildCountIndicator: !0,
centerText: !0,
lazy: !0,
overlayPlayButton: !0,
preferThumb: true,
showTitle: true,
showSeriesYear: true,
showParentTitle: true,
overlayText: false,
cardLayout: false,
showUnplayedIndicator: false,
showChildCountIndicator: true,
centerText: true,
lazy: true,
overlayPlayButton: true,
lines: 2
});
var elem = context.querySelector("#latestEpisodes");
elem.innerHTML = html, imageLoader.lazyChildren(elem), loading.hide()
})
elem.innerHTML = html;
imageLoader.lazyChildren(elem);
loading.hide();
});
}
return function(view, params, tabContent) {
return function (view, params, tabContent) {
var self = this;
var latestPromise;
self.preRender = function() {
latestPromise = getLatestPromise(view, params)
}, self.renderTab = function() {
loadLatest(tabContent, params, latestPromise)
}, tabContent.querySelector("#latestEpisodes").addEventListener("click", groupedcards.onItemsContainerClick)
}
});
self.preRender = function () {
latestPromise = getLatestPromise(view, params);
};
self.renderTab = function () {
loadLatest(tabContent, params, latestPromise);
};
tabContent.querySelector("#latestEpisodes").addEventListener("click", groupedcards.onItemsContainerClick);
};
});

View file

@ -1,4 +1,4 @@
define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "dom", "userSettings", "cardBuilder", "playbackManager", "mainTabsManager", "scrollStyles", "emby-itemscontainer", "emby-button"], function(events, inputManager, libraryMenu, layoutManager, loading, dom, userSettings, cardBuilder, playbackManager, mainTabsManager) {
define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "dom", "userSettings", "cardBuilder", "playbackManager", "mainTabsManager", "scrollStyles", "emby-itemscontainer", "emby-button"], function (events, inputManager, libraryMenu, layoutManager, loading, dom, userSettings, cardBuilder, playbackManager, mainTabsManager) {
"use strict";
function getTabs() {
@ -19,30 +19,51 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do
}, {
name: Globalize.translate("ButtonSearch"),
cssClass: "searchTabButton"
}]
}];
}
function getDefaultTabIndex(folderId) {
switch (userSettings.get("landing-" + folderId)) {
case "suggestions":
return 1;
case "latest":
return 2;
case "favorites":
return 1;
case "genres":
return 4;
default:
return 0
return 0;
}
}
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");
}
}
return function(view, params) {
return function (view, params) {
function reload() {
loading.show(), loadResume(), loadNextUp()
loading.show();
loadResume();
loadNextUp();
}
function loadNextUp() {
@ -52,178 +73,263 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do
UserId: ApiClient.getCurrentUserId(),
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Thumb",
EnableTotalRecordCount: !1
EnableTotalRecordCount: false
};
query.ParentId = libraryMenu.getTopParentId(), ApiClient.getNextUpEpisodes(query).then(function(result) {
result.Items.length ? view.querySelector(".noNextUpItems").classList.add("hide") : view.querySelector(".noNextUpItems").classList.remove("hide");
query.ParentId = libraryMenu.getTopParentId();
ApiClient.getNextUpEpisodes(query).then(function (result) {
if (result.Items.length) {
view.querySelector(".noNextUpItems").classList.add("hide");
} else {
view.querySelector(".noNextUpItems").classList.remove("hide");
}
var container = view.querySelector("#nextUpItems");
cardBuilder.buildCards(result.Items, {
itemsContainer: container,
preferThumb: !0,
preferThumb: true,
shape: "backdrop",
scalable: !0,
showTitle: !0,
showParentTitle: !0,
overlayText: !1,
centerText: !0,
overlayPlayButton: !0,
cardLayout: !1
}), loading.hide()
})
scalable: true,
showTitle: true,
showParentTitle: true,
overlayText: false,
centerText: true,
overlayPlayButton: true,
cardLayout: false
});
loading.hide();
});
}
function enableScrollX() {
return !layoutManager.desktop
return !layoutManager.desktop;
}
function getThumbShape() {
return enableScrollX() ? "overflowBackdrop" : "backdrop"
return enableScrollX() ? "overflowBackdrop" : "backdrop";
}
function loadResume() {
var parentId = libraryMenu.getTopParentId(),
screenWidth = dom.getWindowSize().innerWidth,
limit = screenWidth >= 1600 ? 5 : 6,
options = {
SortBy: "DatePlayed",
SortOrder: "Descending",
IncludeItemTypes: "Episode",
Filters: "IsResumable",
Limit: limit,
Recursive: !0,
Fields: "PrimaryImageAspectRatio,SeriesInfo,UserData,BasicSyncInfo",
ExcludeLocationTypes: "Virtual",
ParentId: parentId,
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Thumb",
EnableTotalRecordCount: !1
};
ApiClient.getItems(ApiClient.getCurrentUserId(), options).then(function(result) {
result.Items.length ? view.querySelector("#resumableSection").classList.remove("hide") : view.querySelector("#resumableSection").classList.add("hide");
var allowBottomPadding = !enableScrollX(),
container = view.querySelector("#resumableItems");
var parentId = libraryMenu.getTopParentId();
var screenWidth = dom.getWindowSize().innerWidth;
var limit = screenWidth >= 1600 ? 5 : 6;
var options = {
SortBy: "DatePlayed",
SortOrder: "Descending",
IncludeItemTypes: "Episode",
Filters: "IsResumable",
Limit: limit,
Recursive: true,
Fields: "PrimaryImageAspectRatio,SeriesInfo,UserData,BasicSyncInfo",
ExcludeLocationTypes: "Virtual",
ParentId: parentId,
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Thumb",
EnableTotalRecordCount: false
};
ApiClient.getItems(ApiClient.getCurrentUserId(), options).then(function (result) {
if (result.Items.length) {
view.querySelector("#resumableSection").classList.remove("hide");
} else {
view.querySelector("#resumableSection").classList.add("hide");
}
var allowBottomPadding = !enableScrollX();
var container = view.querySelector("#resumableItems");
cardBuilder.buildCards(result.Items, {
itemsContainer: container,
preferThumb: !0,
preferThumb: true,
shape: getThumbShape(),
scalable: !0,
showTitle: !0,
showParentTitle: !0,
overlayText: !1,
centerText: !0,
overlayPlayButton: !0,
scalable: true,
showTitle: true,
showParentTitle: true,
overlayText: false,
centerText: true,
overlayPlayButton: true,
allowBottomPadding: allowBottomPadding,
cardLayout: !1
})
})
cardLayout: false
});
});
}
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/shows/tvshows");
break;
case 1:
break;
case 2:
depends.push("controllers/shows/tvlatest");
break;
case 3:
depends.push("controllers/shows/tvupcoming");
break;
case 4:
depends.push("controllers/shows/tvgenres");
break;
case 5:
depends.push("controllers/shows/tvstudios");
break;
case 6:
depends.push("controllers/shows/episodes");
break;
case 7:
depends.push("scripts/searchtab")
depends.push("scripts/searchtab");
}
require(depends, function(controllerFactory) {
require(depends, function (controllerFactory) {
var tabContent;
1 === index && (tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']"), self.tabContent = tabContent);
if (index === 1) {
tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']");
self.tabContent = tabContent;
}
var controller = tabControllers[index];
controller || (tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']"), controller = 1 === index ? self : 7 === index ? new controllerFactory(view, tabContent, {
collectionType: "tvshows",
parentId: params.topParentId
}) : 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 === 1) {
controller = self;
} else if (index === 7) {
controller = new controllerFactory(view, tabContent, {
collectionType: "tvshows",
parentId: params.topParentId
});
} 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 onWebSocketMessage(e, data) {
var msg = data;
"UserDataChanged" === msg.MessageType && msg.Data.UserId == ApiClient.getCurrentUserId() && (renderedTabs = [])
if (msg.MessageType === "UserDataChanged" && msg.Data.UserId == ApiClient.getCurrentUserId()) {
renderedTabs = [];
}
}
function onInputCommand(e) {
switch (e.detail.command) {
case "search":
e.preventDefault(), Dashboard.navigate("search.html?collectionType=tv&parentId=" + params.topParentId)
e.preventDefault();
Dashboard.navigate("search.html?collectionType=tv&parentId=" + params.topParentId);
}
}
var isViewRestored, self = this,
currentTabIndex = parseInt(params.tab || getDefaultTabIndex(params.topParentId)),
initialTabIndex = currentTabIndex;
self.initTab = function() {
var isViewRestored;
var self = this;
var currentTabIndex = parseInt(params.tab || getDefaultTabIndex(params.topParentId));
var initialTabIndex = currentTabIndex;
self.initTab = function () {
var tabContent = self.tabContent;
setScrollClasses(tabContent.querySelector("#resumableItems"), enableScrollX());
}, self.renderTab = function() {
reload()
};
var tabControllers = [],
renderedTabs = [];
setScrollClasses(view.querySelector("#resumableItems"), enableScrollX()), view.addEventListener("viewshow", function(e) {
if (isViewRestored = e.detail.isRestored, initTabs(), !view.getAttribute("data-title")) {
self.renderTab = function () {
reload();
};
var tabControllers = [];
var renderedTabs = [];
setScrollClasses(view.querySelector("#resumableItems"), enableScrollX());
view.addEventListener("viewshow", function (e) {
isViewRestored = e.detail.isRestored;
initTabs();
if (!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("TabShows")), libraryMenu.setTitle(Globalize.translate("TabShows")))
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("TabShows"));
libraryMenu.setTitle(Globalize.translate("TabShows"));
}
}
events.on(playbackManager, "playbackstop", onPlaybackStop), events.on(ApiClient, "message", onWebSocketMessage), inputManager.on(window, onInputCommand)
}), view.addEventListener("viewbeforehide", function(e) {
inputManager.off(window, onInputCommand), events.off(playbackManager, "playbackstop", onPlaybackStop), events.off(ApiClient, "message", onWebSocketMessage)
}), view.addEventListener("viewdestroy", function(e) {
tabControllers.forEach(function(t) {
t.destroy && t.destroy()
})
})
}
events.on(playbackManager, "playbackstop", onPlaybackStop);
events.on(ApiClient, "message", onWebSocketMessage);
inputManager.on(window, onInputCommand);
});
view.addEventListener("viewbeforehide", function (e) {
inputManager.off(window, onInputCommand);
events.off(playbackManager, "playbackstop", onPlaybackStop);
events.off(ApiClient, "message", onWebSocketMessage);
});
view.addEventListener("viewdestroy", function (e) {
tabControllers.forEach(function (t) {
if (t.destroy) {
t.destroy();
}
});
});
};
});

View file

@ -1,199 +1,284 @@
define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "listView", "cardBuilder", "alphaPicker", "emby-itemscontainer"], function(layoutManager, loading, events, libraryBrowser, imageLoader, listView, cardBuilder, alphaPicker) {
define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "listView", "cardBuilder", "alphaPicker", "emby-itemscontainer"], function (layoutManager, loading, events, libraryBrowser, imageLoader, listView, cardBuilder, alphaPicker) {
"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: "Series",
Recursive: !0,
Fields: "PrimaryImageAspectRatio,BasicSyncInfo",
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
StartIndex: 0,
Limit: pageSize
},
view: libraryBrowser.getSavedView(key) || "Poster"
}, pageData.query.ParentId = params.topParentId, 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: "Series",
Recursive: true,
Fields: "PrimaryImageAspectRatio,BasicSyncInfo",
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
StartIndex: 0,
Limit: pageSize
},
view: libraryBrowser.getSavedView(key) || "Poster"
};
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("series")), context.savedQueryKey
if (!context.savedQueryKey) {
context.savedQueryKey = libraryBrowser.getSavedQueryKey("series");
}
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;
if (isLoading) {
return;
}
query.StartIndex += query.Limit;
reloadItems(tabContent);
}
function onPreviousPageClick() {
if (isLoading) return;
if (isLoading) {
return;
}
query.StartIndex -= query.Limit;
reloadItems(tabContent);
}
window.scrollTo(0, 0), updateFilterControls(page);
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: "tvshows",
overlayMoreButton: !0,
showTitle: !0,
centerText: !0
}) : "ThumbCard" == viewStyle ? cardBuilder.getCardsHtml({
items: result.Items,
shape: "backdrop",
preferThumb: !0,
context: "tvshows",
cardLayout: !0,
showTitle: !0,
showYear: !0,
centerText: !0
}) : "Banner" == viewStyle ? cardBuilder.getCardsHtml({
items: result.Items,
shape: "banner",
preferBanner: !0,
context: "tvshows"
}) : "List" == viewStyle ? listView.getListViewHtml({
items: result.Items,
context: "tvshows",
sortBy: query.SortBy
}) : "PosterCard" == viewStyle ? cardBuilder.getCardsHtml({
items: result.Items,
shape: "portrait",
context: "tvshows",
showTitle: !0,
showYear: !0,
centerText: !0,
cardLayout: !0
}) : cardBuilder.getCardsHtml({
items: result.Items,
shape: "portrait",
context: "tvshows",
centerText: !0,
lazy: !0,
overlayMoreButton: !0,
showTitle: !0,
showYear: !0
window.scrollTo(0, 0);
updateFilterControls(page);
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);
var viewStyle = self.getCurrentViewStyle();
if (viewStyle == "Thumb") {
html = cardBuilder.getCardsHtml({
items: result.Items,
shape: "backdrop",
preferThumb: true,
context: "tvshows",
overlayMoreButton: true,
showTitle: true,
centerText: true
});
} else if (viewStyle == "ThumbCard") {
html = cardBuilder.getCardsHtml({
items: result.Items,
shape: "backdrop",
preferThumb: true,
context: "tvshows",
cardLayout: true,
showTitle: true,
showYear: true,
centerText: true
});
} else if (viewStyle == "Banner") {
html = cardBuilder.getCardsHtml({
items: result.Items,
shape: "banner",
preferBanner: true,
context: "tvshows"
});
} else if (viewStyle == "List") {
html = listView.getListViewHtml({
items: result.Items,
context: "tvshows",
sortBy: query.SortBy
});
} else if (viewStyle == "PosterCard") {
html = cardBuilder.getCardsHtml({
items: result.Items,
shape: "portrait",
context: "tvshows",
showTitle: true,
showYear: true,
centerText: true,
cardLayout: true
});
} else {
html = cardBuilder.getCardsHtml({
items: result.Items,
shape: "portrait",
context: "tvshows",
centerText: true,
lazy: true,
overlayMoreButton: 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);
}
var itemsContainer = tabContent.querySelector(".itemsContainer");
itemsContainer.innerHTML = html;
imageLoader.lazyChildren(itemsContainer);
libraryBrowser.saveQueryValues(getSavedQueryKey(page), 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: "series",
serverId: ApiClient.serverId()
});
events.on(filterDialog, "filterchange", function() {
getQuery(tabContent).StartIndex = 0, reloadItems(tabContent)
}), 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(tabContent)
}), 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("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.showFilterMenu = function () {
require(["components/filterdialog/filterdialog"], function (filterDialogFactory) {
var filterDialog = new filterDialogFactory({
query: getQuery(tabContent),
mode: "series",
serverId: ApiClient.serverId()
});
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) {
var viewStyle = e.detail.viewStyle;
getPageData(tabContent).view = viewStyle, libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle), getQuery(tabContent).StartIndex = 0, onViewStyleChange(), reloadItems(tabContent)
})
}(tabContent), onViewStyleChange(), self.renderTab = function() {
reloadItems(tabContent), updateFilterControls(tabContent)
}, self.destroy = function() {}
}
events.on(filterDialog, "filterchange", function () {
getQuery(tabContent).StartIndex = 0;
reloadItems(tabContent);
});
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(tabContent);
});
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("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(), "Banner,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);
});
}
initPage(tabContent);
onViewStyleChange();
self.renderTab = function () {
reloadItems(tabContent);
updateFilterControls(tabContent);
};
self.destroy = function () {};
};
});

View file

@ -1,52 +1,65 @@
define(["loading", "libraryBrowser", "cardBuilder", "apphost"], function(loading, libraryBrowser, cardBuilder, appHost) {
define(["loading", "libraryBrowser", "cardBuilder", "apphost"], function (loading, libraryBrowser, cardBuilder, appHost) {
"use strict";
function getQuery(params) {
var key = getSavedQueryKey(),
pageData = data[key];
return pageData || (pageData = data[key] = {
query: {
SortBy: "SortName",
SortOrder: "Ascending",
IncludeItemTypes: "Series",
Recursive: !0,
Fields: "DateCreated,PrimaryImageAspectRatio",
StartIndex: 0
}
}, pageData.query.ParentId = params.topParentId), pageData.query
var key = getSavedQueryKey();
var pageData = data[key];
if (!pageData) {
pageData = data[key] = {
query: {
SortBy: "SortName",
SortOrder: "Ascending",
IncludeItemTypes: "Series",
Recursive: true,
Fields: "DateCreated,PrimaryImageAspectRatio",
StartIndex: 0
}
};
pageData.query.ParentId = params.topParentId;
}
return pageData.query;
}
function getSavedQueryKey() {
return libraryBrowser.getSavedQueryKey("studios")
return libraryBrowser.getSavedQueryKey("studios");
}
function getPromise(context, params) {
var query = getQuery(params);
return loading.show(), ApiClient.getStudios(ApiClient.getCurrentUserId(), query)
loading.show();
return ApiClient.getStudios(ApiClient.getCurrentUserId(), query);
}
function reloadItems(context, params, promise) {
promise.then(function(result) {
promise.then(function (result) {
var elem = context.querySelector("#items");
cardBuilder.buildCards(result.Items, {
itemsContainer: elem,
shape: "backdrop",
preferThumb: !0,
showTitle: !0,
scalable: !0,
centerText: !0,
overlayMoreButton: !0,
preferThumb: true,
showTitle: true,
scalable: true,
centerText: true,
overlayMoreButton: true,
context: "tvshows"
}), loading.hide()
})
});
loading.hide();
});
}
var data = {};
return function(view, params, tabContent) {
var promise, self = this;
self.preRender = function() {
promise = getPromise(view, params)
}, self.renderTab = function() {
reloadItems(tabContent, params, promise)
}
}
});
return function (view, params, tabContent) {
var promise;
var self = this;
self.preRender = function () {
promise = getPromise(view, params);
};
self.renderTab = function () {
reloadItems(tabContent, params, promise);
};
};
});

View file

@ -1,4 +1,4 @@
define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder", "apphost", "imageLoader", "scrollStyles", "emby-itemscontainer"], function(layoutManager, loading, datetime, libraryBrowser, cardBuilder, appHost, imageLoader) {
define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder", "apphost", "imageLoader", "scrollStyles", "emby-itemscontainer"], function (layoutManager, loading, datetime, libraryBrowser, cardBuilder, appHost, imageLoader) {
"use strict";
function getUpcomingPromise(context, params) {
@ -9,82 +9,129 @@ define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder",
UserId: ApiClient.getCurrentUserId(),
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
EnableTotalRecordCount: !1
EnableTotalRecordCount: false
};
return query.ParentId = params.topParentId, ApiClient.getJSON(ApiClient.getUrl("Shows/Upcoming", query))
query.ParentId = params.topParentId;
return ApiClient.getJSON(ApiClient.getUrl("Shows/Upcoming", query));
}
function loadUpcoming(context, params, promise) {
promise.then(function(result) {
promise.then(function (result) {
var items = result.Items;
items.length ? context.querySelector(".noItemsMessage").style.display = "none" : context.querySelector(".noItemsMessage").style.display = "block", renderUpcoming(context.querySelector("#upcomingItems"), items), loading.hide()
})
if (items.length) {
context.querySelector(".noItemsMessage").style.display = "none";
} else {
context.querySelector(".noItemsMessage").style.display = "block";
}
renderUpcoming(context.querySelector("#upcomingItems"), items);
loading.hide();
});
}
function enableScrollX() {
return !layoutManager.desktop
return !layoutManager.desktop;
}
function getThumbShape() {
return enableScrollX() ? "overflowBackdrop" : "backdrop"
return enableScrollX() ? "overflowBackdrop" : "backdrop";
}
function renderUpcoming(elem, items) {
var i, length, groups = [],
currentGroupName = "",
currentGroup = [];
var i;
var length;
var groups = [];
var currentGroupName = "";
var currentGroup = [];
for (i = 0, length = items.length; i < length; i++) {
var item = items[i],
dateText = "";
if (item.PremiereDate) try {
var premiereDate = datetime.parseISO8601Date(item.PremiereDate, !0);
dateText = datetime.isRelativeDay(premiereDate, -1) ? Globalize.translate("Yesterday") : datetime.toLocaleDateString(premiereDate, {
weekday: "long",
month: "short",
day: "numeric"
})
} catch (err) {}
dateText != currentGroupName ? (currentGroup.length && groups.push({
name: currentGroupName,
items: currentGroup
}), currentGroupName = dateText, currentGroup = [item]) : currentGroup.push(item)
var item = items[i];
var dateText = "";
if (item.PremiereDate) {
try {
var premiereDate = datetime.parseISO8601Date(item.PremiereDate, true);
dateText = datetime.isRelativeDay(premiereDate, -1) ? Globalize.translate("Yesterday") : datetime.toLocaleDateString(premiereDate, {
weekday: "long",
month: "short",
day: "numeric"
});
} catch (err) {}
}
if (dateText != currentGroupName) {
if (currentGroup.length) {
groups.push({
name: currentGroupName,
items: currentGroup
});
}
currentGroupName = dateText;
currentGroup = [item];
} else {
currentGroup.push(item);
}
}
var html = "";
for (i = 0, length = groups.length; i < length; i++) {
var group = groups[i];
html += '<div class="verticalSection">', html += '<h2 class="sectionTitle sectionTitle-cards padded-left">' + group.name + "</h2>";
var allowBottomPadding = !0;
html += '<div class="verticalSection">';
html += '<h2 class="sectionTitle sectionTitle-cards padded-left">' + group.name + "</h2>";
var allowBottomPadding = true;
if (enableScrollX()) {
allowBottomPadding = !1;
allowBottomPadding = false;
var scrollXClass = "scrollX hiddenScrollX";
layoutManager.tv && (scrollXClass += " smoothScrollX"), html += '<div is="emby-itemscontainer" class="itemsContainer ' + scrollXClass + ' padded-left padded-right">'
} else html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap padded-left padded-right">';
if (layoutManager.tv) {
scrollXClass += " smoothScrollX";
}
html += '<div is="emby-itemscontainer" class="itemsContainer ' + scrollXClass + ' padded-left padded-right">';
} else {
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap padded-left padded-right">';
}
var supportsImageAnalysis = appHost.supports("imageanalysis");
supportsImageAnalysis = !1, html += cardBuilder.getCardsHtml({
supportsImageAnalysis = false;
html += cardBuilder.getCardsHtml({
items: group.items,
showLocationTypeIndicator: !1,
showLocationTypeIndicator: false,
shape: getThumbShape(),
showTitle: !0,
preferThumb: !0,
lazy: !0,
showDetailsMenu: !0,
showTitle: true,
preferThumb: true,
lazy: true,
showDetailsMenu: true,
centerText: !supportsImageAnalysis,
showParentTitle: !0,
overlayText: !1,
showParentTitle: true,
overlayText: false,
allowBottomPadding: allowBottomPadding,
cardLayout: supportsImageAnalysis,
overlayMoreButton: !0,
missingIndicator: !1
}), html += "</div>", html += "</div>"
overlayMoreButton: true,
missingIndicator: false
});
html += "</div>";
html += "</div>";
}
elem.innerHTML = html, imageLoader.lazyChildren(elem)
elem.innerHTML = html;
imageLoader.lazyChildren(elem);
}
return function(view, params, tabContent) {
var upcomingPromise, self = this;
self.preRender = function() {
upcomingPromise = getUpcomingPromise(view, params)
}, self.renderTab = function() {
loadUpcoming(tabContent, params, upcomingPromise)
}
}
});
return function (view, params, tabContent) {
var upcomingPromise;
var self = this;
self.preRender = function () {
upcomingPromise = getUpcomingPromise(view, params);
};
self.renderTab = function () {
loadUpcoming(tabContent, params, upcomingPromise);
};
};
});