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:
parent
0d3a6e9ea2
commit
dd6c3b85ab
3 changed files with 37 additions and 0 deletions
|
@ -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>
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue