From 40e4f6a27a7d05218681cb4eb980115b9ece27e2 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Tue, 8 Oct 2019 00:57:40 +0300 Subject: [PATCH] itembynamedetailpage.js --- src/scripts/itembynamedetailpage.js | 309 ++++++++++++++++++++-------- 1 file changed, 221 insertions(+), 88 deletions(-) diff --git a/src/scripts/itembynamedetailpage.js b/src/scripts/itembynamedetailpage.js index 720c8a1e4e..1de421e6a3 100644 --- a/src/scripts/itembynamedetailpage.js +++ b/src/scripts/itembynamedetailpage.js @@ -1,40 +1,90 @@ -define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryBrowser", "emby-itemscontainer", "emby-button"], function(connectionManager, listView, cardBuilder, imageLoader, libraryBrowser) { +define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryBrowser", "emby-itemscontainer", "emby-button"], function (connectionManager, listView, cardBuilder, imageLoader, libraryBrowser) { "use strict"; function renderItems(page, item) { var sections = []; - item.ArtistCount && sections.push({ - name: Globalize.translate("TabArtists"), - type: "MusicArtist" - }), item.ProgramCount && "Person" == item.Type && sections.push({ - name: Globalize.translate("HeaderUpcomingOnTV"), - type: "Program" - }), item.MovieCount && sections.push({ - name: Globalize.translate("TabMovies"), - type: "Movie" - }), item.SeriesCount && sections.push({ - name: Globalize.translate("TabShows"), - type: "Series" - }), item.EpisodeCount && sections.push({ - name: Globalize.translate("TabEpisodes"), - type: "Episode" - }), item.TrailerCount && sections.push({ - name: Globalize.translate("TabTrailers"), - type: "Trailer" - }), item.AlbumCount && sections.push({ - name: Globalize.translate("TabAlbums"), - type: "MusicAlbum" - }), item.MusicVideoCount && sections.push({ - name: Globalize.translate("TabMusicVideos"), - type: "MusicVideo" - }); + + if (item.ArtistCount) { + sections.push({ + name: Globalize.translate("TabArtists"), + type: "MusicArtist" + }); + } + + if (item.ProgramCount && "Person" == item.Type) { + sections.push({ + name: Globalize.translate("HeaderUpcomingOnTV"), + type: "Program" + }); + } + + if (item.MovieCount) { + sections.push({ + name: Globalize.translate("TabMovies"), + type: "Movie" + }); + } + + if (item.SeriesCount) { + sections.push({ + name: Globalize.translate("TabShows"), + type: "Series" + }); + } + + if (item.EpisodeCount) { + sections.push({ + name: Globalize.translate("TabEpisodes"), + type: "Episode" + }); + } + + if (item.TrailerCount) { + sections.push({ + name: Globalize.translate("TabTrailers"), + type: "Trailer" + }); + } + + if (item.AlbumCount) { + sections.push({ + name: Globalize.translate("TabAlbums"), + type: "MusicAlbum" + }); + } + + if (item.MusicVideoCount) { + sections.push({ + name: Globalize.translate("TabMusicVideos"), + type: "MusicVideo" + }); + } + var elem = page.querySelector("#childrenContent"); - elem.innerHTML = sections.map(function(section) { - var html = "", - sectionClass = "verticalSection"; - return "Audio" === section.type && (sectionClass += " verticalSection-extrabottompadding"), html += '
', html += '
', html += '

', html += section.name, html += "

", html += '", html += "
", html += '
', html += "
", html += "
" + elem.innerHTML = sections.map(function (section) { + var html = ""; + var sectionClass = "verticalSection"; + + if ("Audio" === section.type) { + sectionClass += " verticalSection-extrabottompadding"; + } + + html += '
'; + html += '
'; + html += '

'; + html += section.name; + html += "

"; + html += '"; + html += "
"; + html += '
'; + html += "
"; + return html += "
"; }).join(""); - for (var sectionElems = elem.querySelectorAll(".verticalSection"), i = 0, length = sectionElems.length; i < length; i++) renderSection(page, item, sectionElems[i], sectionElems[i].getAttribute("data-type")) + var sectionElems = elem.querySelectorAll(".verticalSection"); + + for (var i = 0, length = sectionElems.length; i < length; i++) { + renderSection(page, item, sectionElems[i], sectionElems[i].getAttribute("data-type")); + } } function renderSection(page, item, element, type) { @@ -50,16 +100,17 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB SortBy: "StartDate" }, { shape: "backdrop", - showTitle: !0, - centerText: !0, - overlayMoreButton: !0, - preferThumb: !0, - overlayText: !1, - showAirTime: !0, - showAirDateTime: !0, - showChannelName: !0 + showTitle: true, + centerText: true, + overlayMoreButton: true, + preferThumb: true, + overlayText: false, + showAirTime: true, + showAirDateTime: true, + showChannelName: true }); break; + case "Movie": loadItems(element, item, type, { MediaTypes: "", @@ -71,13 +122,14 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB SortBy: "SortName" }, { shape: "portrait", - showTitle: !0, - centerText: !0, - overlayMoreButton: !0, - overlayText: !1, - showYear: !0 + showTitle: true, + centerText: true, + overlayMoreButton: true, + overlayText: false, + showYear: true }); break; + case "MusicVideo": loadItems(element, item, type, { MediaTypes: "", @@ -89,11 +141,12 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB SortBy: "SortName" }, { shape: "portrait", - showTitle: !0, - centerText: !0, - overlayPlayButton: !0 + showTitle: true, + centerText: true, + overlayPlayButton: true }); break; + case "Trailer": loadItems(element, item, type, { MediaTypes: "", @@ -105,11 +158,12 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB SortBy: "SortName" }, { shape: "portrait", - showTitle: !0, - centerText: !0, - overlayPlayButton: !0 + showTitle: true, + centerText: true, + overlayPlayButton: true }); break; + case "Series": loadItems(element, item, type, { MediaTypes: "", @@ -121,11 +175,12 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB SortBy: "SortName" }, { shape: "portrait", - showTitle: !0, - centerText: !0, - overlayMoreButton: !0 + showTitle: true, + centerText: true, + overlayMoreButton: true }); break; + case "MusicAlbum": loadItems(element, item, type, { MediaTypes: "", @@ -137,14 +192,15 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB SortBy: "ProductionYear,Sortname" }, { shape: "square", - playFromHere: !0, - showTitle: !0, - showYear: !0, - coverImage: !0, - centerText: !0, - overlayPlayButton: !0 + playFromHere: true, + showTitle: true, + showYear: true, + coverImage: true, + centerText: true, + overlayPlayButton: true }); break; + case "MusicArtist": loadItems(element, item, type, { MediaTypes: "", @@ -156,14 +212,15 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB SortBy: "SortName" }, { shape: "square", - playFromHere: !0, - showTitle: !0, - showParentTitle: !0, - coverImage: !0, - centerText: !0, - overlayPlayButton: !0 + playFromHere: true, + showTitle: true, + showParentTitle: true, + coverImage: true, + centerText: true, + overlayPlayButton: true }); break; + case "Episode": loadItems(element, item, type, { MediaTypes: "", @@ -175,12 +232,13 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB SortBy: "SortName" }, { shape: "backdrop", - showTitle: !0, - showParentTitle: !0, - centerText: !0, - overlayPlayButton: !0 + showTitle: true, + showParentTitle: true, + centerText: true, + overlayPlayButton: true }); break; + case "Audio": loadItems(element, item, type, { MediaTypes: "", @@ -190,57 +248,132 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB AlbumArtistIds: "", SortBy: "AlbumArtist,Album,SortName" }, { - playFromHere: !0, + playFromHere: true, action: "playallfromhere", - smallIcon: !0, - artist: !0 - }) + smallIcon: true, + artist: true + }); } } function loadItems(element, item, type, query, listOptions) { - query = getQuery(query, item), getItemsFunction(query, item)(query.StartIndex, query.Limit, query.Fields).then(function(result) { + query = getQuery(query, item); + getItemsFunction(query, item)(query.StartIndex, query.Limit, query.Fields).then(function (result) { var html = ""; + if (query.Limit && result.TotalRecordCount > query.Limit) { var link = element.querySelector("a"); - link.classList.remove("hide"), link.setAttribute("href", getMoreItemsHref(item, type)) - } else element.querySelector("a").classList.add("hide"); + link.classList.remove("hide"); + link.setAttribute("href", getMoreItemsHref(item, type)); + } else { + element.querySelector("a").classList.add("hide"); + } + listOptions.items = result.Items; var itemsContainer = element.querySelector(".itemsContainer"); - "Audio" == type ? (html = listView.getListViewHtml(listOptions), itemsContainer.classList.remove("vertical-wrap"), itemsContainer.classList.add("vertical-list")) : (html = cardBuilder.getCardsHtml(listOptions), itemsContainer.classList.add("vertical-wrap"), itemsContainer.classList.remove("vertical-list")), itemsContainer.innerHTML = html, imageLoader.lazyChildren(itemsContainer) - }) + + if ("Audio" == type) { + html = listView.getListViewHtml(listOptions); + itemsContainer.classList.remove("vertical-wrap"); + itemsContainer.classList.add("vertical-list"); + } else { + html = cardBuilder.getCardsHtml(listOptions); + itemsContainer.classList.add("vertical-wrap"); + itemsContainer.classList.remove("vertical-list"); + } + + itemsContainer.innerHTML = html; + imageLoader.lazyChildren(itemsContainer); + }); } function getMoreItemsHref(item, type) { - return "Genre" == item.Type ? "list.html?type=" + type + "&genreId=" + item.Id + "&serverId=" + item.ServerId : "MusicGenre" == item.Type ? "list.html?type=" + type + "&musicGenreId=" + item.Id + "&serverId=" + item.ServerId : "Studio" == item.Type ? "list.html?type=" + type + "&studioId=" + item.Id + "&serverId=" + item.ServerId : "MusicArtist" == item.Type ? "list.html?type=" + type + "&artistId=" + item.Id + "&serverId=" + item.ServerId : "Person" == item.Type ? "list.html?type=" + type + "&personId=" + item.Id + "&serverId=" + item.ServerId : "list.html?type=" + type + "&parentId=" + item.Id + "&serverId=" + item.ServerId + if ("Genre" == item.Type) { + return "list.html?type=" + type + "&genreId=" + item.Id + "&serverId=" + item.ServerId; + } + + if ("MusicGenre" == item.Type) { + return "list.html?type=" + type + "&musicGenreId=" + item.Id + "&serverId=" + item.ServerId; + } + + if ("Studio" == item.Type) { + return "list.html?type=" + type + "&studioId=" + item.Id + "&serverId=" + item.ServerId; + } + + if ("MusicArtist" == item.Type) { + return "list.html?type=" + type + "&artistId=" + item.Id + "&serverId=" + item.ServerId; + } + + if ("Person" == item.Type) { + return "list.html?type=" + type + "&personId=" + item.Id + "&serverId=" + item.ServerId; + } + + return "list.html?type=" + type + "&parentId=" + item.Id + "&serverId=" + item.ServerId; } function addCurrentItemToQuery(query, item) { - "Person" == item.Type ? query.PersonIds = item.Id : "Genre" == item.Type ? query.GenreIds = item.Id : "MusicGenre" == item.Type ? query.GenreIds = item.Id : "Studio" == item.Type ? query.StudioIds = item.Id : "MusicArtist" == item.Type && (connectionManager.getApiClient(item.ServerId).isMinServerVersion("3.4.1.18") ? query.AlbumArtistIds = item.Id : query.ArtistIds = item.Id) + if ("Person" == item.Type) { + query.PersonIds = item.Id; + } else { + if ("Genre" == item.Type) { + query.GenreIds = item.Id; + } else { + if ("MusicGenre" == item.Type) { + query.GenreIds = item.Id; + } else { + if ("Studio" == item.Type) { + query.StudioIds = item.Id; + } else { + if ("MusicArtist" == item.Type) { + if (connectionManager.getApiClient(item.ServerId).isMinServerVersion("3.4.1.18")) { + query.AlbumArtistIds = item.Id; + } else { + query.ArtistIds = item.Id; + } + } + } + } + } + } } function getQuery(options, item) { var query = { SortOrder: "Ascending", IncludeItemTypes: "", - Recursive: !0, + Recursive: true, Fields: "AudioInfo,SeriesInfo,ParentId,PrimaryImageAspectRatio,BasicSyncInfo", Limit: 100, StartIndex: 0, - CollapseBoxSetItems: !1 + CollapseBoxSetItems: false }; - return query = Object.assign(query, options || {}), addCurrentItemToQuery(query, item), query + query = Object.assign(query, options || {}); + addCurrentItemToQuery(query, item); + return query; } function getItemsFunction(options, item) { var query = getQuery(options, item); - return function(index, limit, fields) { - query.StartIndex = index, query.Limit = limit, fields && (query.Fields += "," + fields); + return function (index, limit, fields) { + query.StartIndex = index; + query.Limit = limit; + + if (fields) { + query.Fields += "," + fields; + } + var apiClient = connectionManager.getApiClient(item.ServerId); - return "MusicArtist" === query.IncludeItemTypes ? (query.IncludeItemTypes = null, apiClient.getAlbumArtists(apiClient.getCurrentUserId(), query)) : apiClient.getItems(apiClient.getCurrentUserId(), query) - } + + if ("MusicArtist" === query.IncludeItemTypes) { + query.IncludeItemTypes = null; + return apiClient.getAlbumArtists(apiClient.getCurrentUserId(), query); + } + + return apiClient.getItems(apiClient.getCurrentUserId(), query); + }; } + window.ItemsByName = { renderItems: renderItems - } + }; });