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

Add guest cast on episode detail page

This commit is contained in:
fffrankieh 2023-04-17 10:00:51 -07:00 committed by Bill Thornton
parent 0d3a6e9ea2
commit dd6c3b85ab
3 changed files with 37 additions and 0 deletions

View file

@ -205,6 +205,13 @@
</div> </div>
</div> </div>
<div id="guestCastCollapsible" class="verticalSection detailVerticalSection hide">
<h2 id="guestCastHeader" class="sectionTitle sectionTitle-cards padded-right">${HeaderGuestCast}</h2>
<div is="emby-scroller" class="padded-top-focusscale padded-bottom-focusscale" data-centerfocus="true">
<div id="guestCastContent" is="emby-itemscontainer" class="scrollSlider focuscontainer-x itemsContainer"></div>
</div>
</div>
<div id="seriesScheduleSection" class="verticalSection detailVerticalSection hide"> <div id="seriesScheduleSection" class="verticalSection detailVerticalSection hide">
<h2 class="sectionTitle padded-right">${HeaderUpcomingOnTV}</h2> <h2 class="sectionTitle padded-right">${HeaderUpcomingOnTV}</h2>
<div id="seriesScheduleList" is="emby-itemscontainer" class="itemsContainer vertical-list padded-right"></div> <div id="seriesScheduleList" is="emby-itemscontainer" class="itemsContainer vertical-list padded-right"></div>

View file

@ -751,6 +751,9 @@ function setPeopleHeader(page, item) {
} else { } else {
page.querySelector('#peopleHeader').innerHTML = globalize.translate('HeaderCastAndCrew'); page.querySelector('#peopleHeader').innerHTML = globalize.translate('HeaderCastAndCrew');
} }
if (item.Type === 'Episode') {
page.querySelector('#guestCastHeader').innerHTML = globalize.translate('HeaderGuestCast');
}
} }
function renderNextUp(page, item, user) { function renderNextUp(page, item, user) {
@ -823,6 +826,7 @@ function setInitialCollapsibleState(page, item, apiClient, context, user) {
} }
renderCast(page, item); renderCast(page, item);
renderGuestCast(page, item);
if (item.PartCount && item.PartCount > 1) { if (item.PartCount && item.PartCount > 1) {
page.querySelector('#additionalPartsCollapsible').classList.remove('hide'); page.querySelector('#additionalPartsCollapsible').classList.remove('hide');
@ -1805,11 +1809,36 @@ function renderCast(page, item) {
}); });
} }
function renderGuestCast(page, item) {
const people = (item.People || []).filter(function (p) {
return p.Type === 'GuestStar';
});
if (!people.length) {
page.querySelector('#guestCastCollapsible').classList.add('hide');
return;
}
page.querySelector('#guestCastCollapsible').classList.remove('hide');
const guestCastContent = page.querySelector('#guestCastContent');
import('../../components/cardbuilder/peoplecardbuilder').then(({ default: peoplecardbuilder }) => {
peoplecardbuilder.buildPeopleCards(people, {
itemsContainer: guestCastContent,
coverImage: true,
serverId: item.ServerId,
shape: 'overflowPortrait',
imageBlurhashes: item.ImageBlurHashes
});
});
}
function ItemDetailPage() { function ItemDetailPage() {
const self = this; const self = this;
self.setInitialCollapsibleState = setInitialCollapsibleState; self.setInitialCollapsibleState = setInitialCollapsibleState;
self.renderDetails = renderDetails; self.renderDetails = renderDetails;
self.renderCast = renderCast; self.renderCast = renderCast;
self.renderGuestCast = renderGuestCast;
} }
function bindAll(view, selector, eventName, fn) { function bindAll(view, selector, eventName, fn) {

View file

@ -381,6 +381,7 @@
"HeaderFetchImages": "Fetch Images", "HeaderFetchImages": "Fetch Images",
"HeaderForKids": "For Kids", "HeaderForKids": "For Kids",
"HeaderFrequentlyPlayed": "Frequently Played", "HeaderFrequentlyPlayed": "Frequently Played",
"HeaderGuestCast": "Guest Cast",
"HeaderGuideProviders": "TV Guide Data Providers", "HeaderGuideProviders": "TV Guide Data Providers",
"HeaderHttpHeaders": "HTTP Headers", "HeaderHttpHeaders": "HTTP Headers",
"HeaderHttpsSettings": "HTTPS Settings", "HeaderHttpsSettings": "HTTPS Settings",