From 850c2c4baf03ab81b8fde3e66e70403c60e53af7 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Tue, 8 Oct 2019 01:03:08 +0300 Subject: [PATCH] playlists.js --- src/scripts/playlists.js | 222 ++++++++++++++++++++++++--------------- 1 file changed, 137 insertions(+), 85 deletions(-) diff --git a/src/scripts/playlists.js b/src/scripts/playlists.js index ee9fac6c58..606a34c787 100644 --- a/src/scripts/playlists.js +++ b/src/scripts/playlists.js @@ -1,124 +1,176 @@ -define(["loading", "listView", "cardBuilder", "libraryMenu", "libraryBrowser", "apphost", "imageLoader", "emby-itemscontainer"], function(loading, listView, cardBuilder, libraryMenu, libraryBrowser, appHost, imageLoader) { +define(["loading", "listView", "cardBuilder", "libraryMenu", "libraryBrowser", "apphost", "imageLoader", "emby-itemscontainer"], function (loading, listView, cardBuilder, libraryMenu, libraryBrowser, appHost, imageLoader) { "use strict"; - return function(view, params) { + + return function (view, params) { function getPageData(context) { - var key = getSavedQueryKey(context), - pageData = data[key]; - return pageData || (pageData = data[key] = { - query: { - SortBy: "SortName", - SortOrder: "Ascending", - IncludeItemTypes: "Playlist", - Recursive: !0, - Fields: "PrimaryImageAspectRatio,SortName,CumulativeRunTimeTicks,CanDelete", - StartIndex: 0, - Limit: 100 - }, - view: libraryBrowser.getSavedView(key) || "Poster" - }, pageData.query.ParentId = libraryMenu.getTopParentId(), 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: "Playlist", + Recursive: true, + Fields: "PrimaryImageAspectRatio,SortName,CumulativeRunTimeTicks,CanDelete", + StartIndex: 0, + Limit: 100 + }, + view: libraryBrowser.getSavedView(key) || "Poster" + }; + pageData.query.ParentId = libraryMenu.getTopParentId(); + 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()), context.savedQueryKey + if (!context.savedQueryKey) { + context.savedQueryKey = libraryBrowser.getSavedQueryKey(); + } + + return context.savedQueryKey; } function showLoadingMessage() { - loading.show() + loading.show(); } function hideLoadingMessage() { - loading.hide() + loading.hide(); } function onViewStyleChange() { - var viewStyle = getPageData(view).view, - itemsContainer = view.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 = getPageData(view).view; + var itemsContainer = view.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() { showLoadingMessage(); - var query = getQuery(view), - promise1 = ApiClient.getItems(Dashboard.getCurrentUserId(), query), - promise2 = Dashboard.getCurrentUser(); - Promise.all([promise1, promise2]).then(function(responses) { + var query = getQuery(view); + var promise1 = ApiClient.getItems(Dashboard.getCurrentUserId(), query); + var promise2 = Dashboard.getCurrentUser(); + Promise.all([promise1, promise2]).then(function (responses) { var result = responses[0]; responses[1]; window.scrollTo(0, 0); - var html = "", - viewStyle = getPageData(view).view; + var html = ""; + var viewStyle = getPageData(view).view; view.querySelector(".listTopPaging").innerHTML = libraryBrowser.getQueryPagingHtml({ startIndex: query.StartIndex, limit: query.Limit, totalRecordCount: result.TotalRecordCount, - viewButton: !1, - showLimit: !1, - updatePageSizeSetting: !1, - addLayoutButton: !0, + viewButton: false, + showLimit: false, + updatePageSizeSetting: false, + addLayoutButton: true, layouts: "List,Poster,PosterCard,Thumb,ThumbCard", currentLayout: viewStyle - }), result.TotalRecordCount ? (html = "List" == viewStyle ? listView.getListViewHtml({ - items: result.Items, - sortBy: query.SortBy - }) : "PosterCard" == viewStyle ? cardBuilder.getCardsHtml({ - items: result.Items, - shape: "square", - coverImage: !0, - showTitle: !0, - cardLayout: !0 - }) : "Thumb" == viewStyle ? cardBuilder.getCardsHtml({ - items: result.Items, - shape: "backdrop", - showTitle: !0, - centerText: !0, - preferThumb: !0, - overlayPlayButton: !0 - }) : "ThumbCard" == viewStyle ? cardBuilder.getCardsHtml({ - items: result.Items, - shape: "backdrop", - showTitle: !0, - preferThumb: !0, - cardLayout: !0 - }) : cardBuilder.getCardsHtml({ - items: result.Items, - shape: "square", - showTitle: !0, - coverImage: !0, - centerText: !0, - overlayPlayButton: !0 - }), view.querySelector(".noItemsMessage").classList.add("hide")) : view.querySelector(".noItemsMessage").classList.remove("hide"); + }); + + if (result.TotalRecordCount) { + html = "List" == viewStyle ? listView.getListViewHtml({ + items: result.Items, + sortBy: query.SortBy + }) : "PosterCard" == viewStyle ? cardBuilder.getCardsHtml({ + items: result.Items, + shape: "square", + coverImage: true, + showTitle: true, + cardLayout: true + }) : "Thumb" == viewStyle ? cardBuilder.getCardsHtml({ + items: result.Items, + shape: "backdrop", + showTitle: true, + centerText: true, + preferThumb: true, + overlayPlayButton: true + }) : "ThumbCard" == viewStyle ? cardBuilder.getCardsHtml({ + items: result.Items, + shape: "backdrop", + showTitle: true, + preferThumb: true, + cardLayout: true + }) : cardBuilder.getCardsHtml({ + items: result.Items, + shape: "square", + showTitle: true, + coverImage: true, + centerText: true, + overlayPlayButton: true + }); + view.querySelector(".noItemsMessage").classList.add("hide"); + } else { + view.querySelector(".noItemsMessage").classList.remove("hide"); + } + var elem = view.querySelector(".itemsContainer"); - elem.innerHTML = html, imageLoader.lazyChildren(elem); + elem.innerHTML = html; + imageLoader.lazyChildren(elem); var btnNextPage = view.querySelector(".btnNextPage"); - btnNextPage && btnNextPage.addEventListener("click", function() { - query.StartIndex += query.Limit, reloadItems() - }); + + if (btnNextPage) { + btnNextPage.addEventListener("click", function () { + query.StartIndex += query.Limit; + reloadItems(); + }); + } + var btnPreviousPage = view.querySelector(".btnPreviousPage"); - btnPreviousPage && btnPreviousPage.addEventListener("click", function() { - query.StartIndex -= query.Limit, reloadItems() - }); + + if (btnPreviousPage) { + btnPreviousPage.addEventListener("click", function () { + query.StartIndex -= query.Limit; + reloadItems(); + }); + } + var btnChangeLayout = view.querySelector(".btnChangeLayout"); - btnChangeLayout && btnChangeLayout.addEventListener("layoutchange", function(e) { - var layout = e.detail.viewStyle; - getPageData(view).view = layout, libraryBrowser.saveViewSetting(getSavedQueryKey(view), layout), onViewStyleChange(), reloadItems() - }), libraryBrowser.saveQueryValues(getSavedQueryKey(view), query), hideLoadingMessage() - }) + + if (btnChangeLayout) { + btnChangeLayout.addEventListener("layoutchange", function (e) { + var layout = e.detail.viewStyle; + getPageData(view).view = layout; + libraryBrowser.saveViewSetting(getSavedQueryKey(view), layout); + onViewStyleChange(); + reloadItems(); + }); + } + + libraryBrowser.saveQueryValues(getSavedQueryKey(view), query); + hideLoadingMessage(); + }); } + var data = {}; - view.addEventListener("viewbeforeshow", function() { - reloadItems() - }), view.querySelector(".btnNewPlaylist").addEventListener("click", function() { - require(["playlistEditor"], function(playlistEditor) { + view.addEventListener("viewbeforeshow", function () { + reloadItems(); + }); + view.querySelector(".btnNewPlaylist").addEventListener("click", function () { + require(["playlistEditor"], function (playlistEditor) { var serverId = ApiClient.serverInfo().Id; - (new playlistEditor).show({ + new playlistEditor().show({ items: [], serverId: serverId - }) - }) - }), onViewStyleChange() - } -}); \ No newline at end of file + }); + }); + }); + onViewStyleChange(); + }; +});