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

itembynamedetailpage.js

This commit is contained in:
grafixeyehero 2019-10-08 00:57:40 +03:00
parent af8d421a8c
commit 40e4f6a27a

View file

@ -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"; "use strict";
function renderItems(page, item) { function renderItems(page, item) {
var sections = []; var sections = [];
item.ArtistCount && sections.push({
name: Globalize.translate("TabArtists"), if (item.ArtistCount) {
type: "MusicArtist" sections.push({
}), item.ProgramCount && "Person" == item.Type && sections.push({ name: Globalize.translate("TabArtists"),
name: Globalize.translate("HeaderUpcomingOnTV"), type: "MusicArtist"
type: "Program" });
}), item.MovieCount && sections.push({ }
name: Globalize.translate("TabMovies"),
type: "Movie" if (item.ProgramCount && "Person" == item.Type) {
}), item.SeriesCount && sections.push({ sections.push({
name: Globalize.translate("TabShows"), name: Globalize.translate("HeaderUpcomingOnTV"),
type: "Series" type: "Program"
}), item.EpisodeCount && sections.push({ });
name: Globalize.translate("TabEpisodes"), }
type: "Episode"
}), item.TrailerCount && sections.push({ if (item.MovieCount) {
name: Globalize.translate("TabTrailers"), sections.push({
type: "Trailer" name: Globalize.translate("TabMovies"),
}), item.AlbumCount && sections.push({ type: "Movie"
name: Globalize.translate("TabAlbums"), });
type: "MusicAlbum" }
}), item.MusicVideoCount && sections.push({
name: Globalize.translate("TabMusicVideos"), if (item.SeriesCount) {
type: "MusicVideo" 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"); var elem = page.querySelector("#childrenContent");
elem.innerHTML = sections.map(function(section) { elem.innerHTML = sections.map(function (section) {
var html = "", var html = "";
sectionClass = "verticalSection"; var sectionClass = "verticalSection";
return "Audio" === section.type && (sectionClass += " verticalSection-extrabottompadding"), html += '<div class="' + sectionClass + '" data-type="' + section.type + '">', html += '<div class="sectionTitleContainer sectionTitleContainer-cards">', html += '<h2 class="sectionTitle sectionTitle-cards padded-left">', html += section.name, html += "</h2>", html += '<a is="emby-linkbutton" href="#" class="clearLink hide" style="margin-left:1em;vertical-align:middle;"><button is="emby-button" type="button" class="raised more raised-mini noIcon">' + Globalize.translate("ButtonMore") + "</button></a>", html += "</div>", html += '<div is="emby-itemscontainer" class="itemsContainer padded-left padded-right">', html += "</div>", html += "</div>"
if ("Audio" === section.type) {
sectionClass += " verticalSection-extrabottompadding";
}
html += '<div class="' + sectionClass + '" data-type="' + section.type + '">';
html += '<div class="sectionTitleContainer sectionTitleContainer-cards">';
html += '<h2 class="sectionTitle sectionTitle-cards padded-left">';
html += section.name;
html += "</h2>";
html += '<a is="emby-linkbutton" href="#" class="clearLink hide" style="margin-left:1em;vertical-align:middle;"><button is="emby-button" type="button" class="raised more raised-mini noIcon">' + Globalize.translate("ButtonMore") + "</button></a>";
html += "</div>";
html += '<div is="emby-itemscontainer" class="itemsContainer padded-left padded-right">';
html += "</div>";
return html += "</div>";
}).join(""); }).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) { function renderSection(page, item, element, type) {
@ -50,16 +100,17 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB
SortBy: "StartDate" SortBy: "StartDate"
}, { }, {
shape: "backdrop", shape: "backdrop",
showTitle: !0, showTitle: true,
centerText: !0, centerText: true,
overlayMoreButton: !0, overlayMoreButton: true,
preferThumb: !0, preferThumb: true,
overlayText: !1, overlayText: false,
showAirTime: !0, showAirTime: true,
showAirDateTime: !0, showAirDateTime: true,
showChannelName: !0 showChannelName: true
}); });
break; break;
case "Movie": case "Movie":
loadItems(element, item, type, { loadItems(element, item, type, {
MediaTypes: "", MediaTypes: "",
@ -71,13 +122,14 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB
SortBy: "SortName" SortBy: "SortName"
}, { }, {
shape: "portrait", shape: "portrait",
showTitle: !0, showTitle: true,
centerText: !0, centerText: true,
overlayMoreButton: !0, overlayMoreButton: true,
overlayText: !1, overlayText: false,
showYear: !0 showYear: true
}); });
break; break;
case "MusicVideo": case "MusicVideo":
loadItems(element, item, type, { loadItems(element, item, type, {
MediaTypes: "", MediaTypes: "",
@ -89,11 +141,12 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB
SortBy: "SortName" SortBy: "SortName"
}, { }, {
shape: "portrait", shape: "portrait",
showTitle: !0, showTitle: true,
centerText: !0, centerText: true,
overlayPlayButton: !0 overlayPlayButton: true
}); });
break; break;
case "Trailer": case "Trailer":
loadItems(element, item, type, { loadItems(element, item, type, {
MediaTypes: "", MediaTypes: "",
@ -105,11 +158,12 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB
SortBy: "SortName" SortBy: "SortName"
}, { }, {
shape: "portrait", shape: "portrait",
showTitle: !0, showTitle: true,
centerText: !0, centerText: true,
overlayPlayButton: !0 overlayPlayButton: true
}); });
break; break;
case "Series": case "Series":
loadItems(element, item, type, { loadItems(element, item, type, {
MediaTypes: "", MediaTypes: "",
@ -121,11 +175,12 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB
SortBy: "SortName" SortBy: "SortName"
}, { }, {
shape: "portrait", shape: "portrait",
showTitle: !0, showTitle: true,
centerText: !0, centerText: true,
overlayMoreButton: !0 overlayMoreButton: true
}); });
break; break;
case "MusicAlbum": case "MusicAlbum":
loadItems(element, item, type, { loadItems(element, item, type, {
MediaTypes: "", MediaTypes: "",
@ -137,14 +192,15 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB
SortBy: "ProductionYear,Sortname" SortBy: "ProductionYear,Sortname"
}, { }, {
shape: "square", shape: "square",
playFromHere: !0, playFromHere: true,
showTitle: !0, showTitle: true,
showYear: !0, showYear: true,
coverImage: !0, coverImage: true,
centerText: !0, centerText: true,
overlayPlayButton: !0 overlayPlayButton: true
}); });
break; break;
case "MusicArtist": case "MusicArtist":
loadItems(element, item, type, { loadItems(element, item, type, {
MediaTypes: "", MediaTypes: "",
@ -156,14 +212,15 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB
SortBy: "SortName" SortBy: "SortName"
}, { }, {
shape: "square", shape: "square",
playFromHere: !0, playFromHere: true,
showTitle: !0, showTitle: true,
showParentTitle: !0, showParentTitle: true,
coverImage: !0, coverImage: true,
centerText: !0, centerText: true,
overlayPlayButton: !0 overlayPlayButton: true
}); });
break; break;
case "Episode": case "Episode":
loadItems(element, item, type, { loadItems(element, item, type, {
MediaTypes: "", MediaTypes: "",
@ -175,12 +232,13 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB
SortBy: "SortName" SortBy: "SortName"
}, { }, {
shape: "backdrop", shape: "backdrop",
showTitle: !0, showTitle: true,
showParentTitle: !0, showParentTitle: true,
centerText: !0, centerText: true,
overlayPlayButton: !0 overlayPlayButton: true
}); });
break; break;
case "Audio": case "Audio":
loadItems(element, item, type, { loadItems(element, item, type, {
MediaTypes: "", MediaTypes: "",
@ -190,57 +248,132 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB
AlbumArtistIds: "", AlbumArtistIds: "",
SortBy: "AlbumArtist,Album,SortName" SortBy: "AlbumArtist,Album,SortName"
}, { }, {
playFromHere: !0, playFromHere: true,
action: "playallfromhere", action: "playallfromhere",
smallIcon: !0, smallIcon: true,
artist: !0 artist: true
}) });
} }
} }
function loadItems(element, item, type, query, listOptions) { 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 = ""; var html = "";
if (query.Limit && result.TotalRecordCount > query.Limit) { if (query.Limit && result.TotalRecordCount > query.Limit) {
var link = element.querySelector("a"); var link = element.querySelector("a");
link.classList.remove("hide"), link.setAttribute("href", getMoreItemsHref(item, type)) link.classList.remove("hide");
} else element.querySelector("a").classList.add("hide"); link.setAttribute("href", getMoreItemsHref(item, type));
} else {
element.querySelector("a").classList.add("hide");
}
listOptions.items = result.Items; listOptions.items = result.Items;
var itemsContainer = element.querySelector(".itemsContainer"); 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) { 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) { 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) { function getQuery(options, item) {
var query = { var query = {
SortOrder: "Ascending", SortOrder: "Ascending",
IncludeItemTypes: "", IncludeItemTypes: "",
Recursive: !0, Recursive: true,
Fields: "AudioInfo,SeriesInfo,ParentId,PrimaryImageAspectRatio,BasicSyncInfo", Fields: "AudioInfo,SeriesInfo,ParentId,PrimaryImageAspectRatio,BasicSyncInfo",
Limit: 100, Limit: 100,
StartIndex: 0, 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) { function getItemsFunction(options, item) {
var query = getQuery(options, item); var query = getQuery(options, item);
return function(index, limit, fields) { return function (index, limit, fields) {
query.StartIndex = index, query.Limit = limit, fields && (query.Fields += "," + fields); query.StartIndex = index;
query.Limit = limit;
if (fields) {
query.Fields += "," + fields;
}
var apiClient = connectionManager.getApiClient(item.ServerId); 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 = { window.ItemsByName = {
renderItems: renderItems renderItems: renderItems
} };
}); });