mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update details
This commit is contained in:
parent
65ccdb73c7
commit
11e4966819
10 changed files with 131 additions and 88 deletions
|
@ -14,12 +14,12 @@
|
|||
},
|
||||
"devDependencies": {},
|
||||
"ignore": [],
|
||||
"version": "1.4.366",
|
||||
"_release": "1.4.366",
|
||||
"version": "1.4.368",
|
||||
"_release": "1.4.368",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "1.4.366",
|
||||
"commit": "0f80ba74da6484e52961e2199505d30a86fe5666"
|
||||
"tag": "1.4.368",
|
||||
"commit": "6d80986170e396308e4e9c1865b97375c1769708"
|
||||
},
|
||||
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
|
||||
"_target": "^1.2.1",
|
||||
|
|
|
@ -176,7 +176,24 @@
|
|||
currentLoadingBackdrop = instance;
|
||||
}
|
||||
|
||||
function getItemImageUrls(item) {
|
||||
var standardWidths = [480, 720, 1280, 1440, 1920];
|
||||
function getBackdropMaxWidth() {
|
||||
|
||||
var width = dom.getWindowSize().innerWidth;
|
||||
|
||||
if (standardWidths.indexOf(width) !== -1) {
|
||||
return width;
|
||||
}
|
||||
|
||||
var roundScreenTo = 100;
|
||||
width = Math.floor(width / roundScreenTo) * roundScreenTo;
|
||||
|
||||
return Math.min(width, 1920);
|
||||
}
|
||||
|
||||
function getItemImageUrls(item, imageOptions) {
|
||||
|
||||
imageOptions = imageOptions || {};
|
||||
|
||||
var apiClient = connectionManager.getApiClient(item.ServerId);
|
||||
|
||||
|
@ -184,12 +201,12 @@
|
|||
|
||||
return item.BackdropImageTags.map(function (imgTag, index) {
|
||||
|
||||
return apiClient.getScaledImageUrl(item.Id, {
|
||||
return apiClient.getScaledImageUrl(item.Id, Object.assign(imageOptions, {
|
||||
type: "Backdrop",
|
||||
tag: imgTag,
|
||||
maxWidth: Math.min(dom.getWindowSize().innerWidth, 1920),
|
||||
maxWidth: getBackdropMaxWidth(),
|
||||
index: index
|
||||
});
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -197,19 +214,19 @@
|
|||
|
||||
return item.ParentBackdropImageTags.map(function (imgTag, index) {
|
||||
|
||||
return apiClient.getScaledImageUrl(item.ParentBackdropItemId, {
|
||||
return apiClient.getScaledImageUrl(item.ParentBackdropItemId, Object.assign(imageOptions, {
|
||||
type: "Backdrop",
|
||||
tag: imgTag,
|
||||
maxWidth: Math.min(dom.getWindowSize().innerWidth, 1920),
|
||||
maxWidth: getBackdropMaxWidth(),
|
||||
index: index
|
||||
});
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
function getImageUrls(items) {
|
||||
function getImageUrls(items, imageOptions) {
|
||||
|
||||
var list = [];
|
||||
|
||||
|
@ -219,7 +236,7 @@
|
|||
|
||||
for (var i = 0, length = items.length; i < length; i++) {
|
||||
|
||||
var itemImages = getItemImageUrls(items[i]);
|
||||
var itemImages = getItemImageUrls(items[i], imageOptions);
|
||||
|
||||
itemImages.forEach(onImg);
|
||||
}
|
||||
|
@ -252,9 +269,9 @@
|
|||
var rotationInterval;
|
||||
var currentRotatingImages = [];
|
||||
var currentRotationIndex = -1;
|
||||
function setBackdrops(items, enableImageRotation) {
|
||||
function setBackdrops(items, imageOptions, enableImageRotation) {
|
||||
|
||||
var images = getImageUrls(items);
|
||||
var images = getImageUrls(items, imageOptions);
|
||||
|
||||
if (images.length) {
|
||||
|
||||
|
@ -307,11 +324,11 @@
|
|||
currentRotationIndex = -1;
|
||||
}
|
||||
|
||||
function setBackdrop(url) {
|
||||
function setBackdrop(url, imageOptions) {
|
||||
|
||||
if (url) {
|
||||
if (typeof url !== 'string') {
|
||||
url = getImageUrls([url])[0];
|
||||
url = getImageUrls([url], imageOptions)[0];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -300,7 +300,7 @@ define(['browser'], function (browser) {
|
|||
hlsVideoAudioCodecs.push('mp3');
|
||||
}
|
||||
|
||||
if (browser.tizen) {
|
||||
if (browser.tizen || options.supportsDts) {
|
||||
videoAudioCodecs.push('dca');
|
||||
videoAudioCodecs.push('dts');
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
user-select: none;
|
||||
cursor: pointer;
|
||||
z-index: 0;
|
||||
padding: 0.85em 0.57em;
|
||||
padding: 0.95em 0.64em;
|
||||
font-weight: normal;
|
||||
vertical-align: middle;
|
||||
border: 0;
|
||||
|
@ -50,13 +50,13 @@
|
|||
.fab {
|
||||
display: inline-flex;
|
||||
border-radius: 50%;
|
||||
background-color: rgb(170,170, 170);
|
||||
background-color: rgba(170,170,190, .4);
|
||||
padding: .6em;
|
||||
box-sizing: border-box;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
color: #222;
|
||||
color: #fff;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -31,11 +31,14 @@
|
|||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: -1;
|
||||
-webkit-filter: blur(20px);
|
||||
}
|
||||
|
||||
.backdropImage {
|
||||
/*-webkit-filter: blur(20px);
|
||||
-moz-filter: blur(20px);
|
||||
-o-filter: blur(20px);
|
||||
-ms-filter: blur(20px);
|
||||
filter: blur(20px);
|
||||
filter: blur(20px);*/
|
||||
}
|
||||
|
||||
.libraryPage .header {
|
||||
|
@ -291,6 +294,36 @@ span.itemCommunityRating:not(:empty) + .userDataIcons {
|
|||
margin-right: 2em;
|
||||
}
|
||||
|
||||
.detailPagePrimaryContent {
|
||||
position: relative;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.detailLogo {
|
||||
width: 300px;
|
||||
height: 80px;
|
||||
position: absolute;
|
||||
top: 10%;
|
||||
right: 20%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
background-size: contain;
|
||||
}
|
||||
|
||||
@media all and (max-width: 1400px) {
|
||||
|
||||
.detailLogo {
|
||||
right: 10%;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (max-width: 1000px) {
|
||||
|
||||
.detailLogo {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.itemDetailImage {
|
||||
border: solid 1px transparent;
|
||||
width: 280px;
|
||||
|
|
|
@ -16,14 +16,6 @@
|
|||
$('#txtMetadataPath', page).val(config.MetadataPath || '');
|
||||
$('#txtMetadataNetworkPath', page).val(config.MetadataNetworkPath || '');
|
||||
|
||||
$('#chkPeopleActors', page).checked(config.PeopleMetadataOptions.DownloadActorMetadata);
|
||||
$('#chkPeopleComposers', page).checked(config.PeopleMetadataOptions.DownloadComposerMetadata);
|
||||
$('#chkPeopleDirectors', page).checked(config.PeopleMetadataOptions.DownloadDirectorMetadata);
|
||||
$('#chkPeopleProducers', page).checked(config.PeopleMetadataOptions.DownloadProducerMetadata);
|
||||
$('#chkPeopleWriters', page).checked(config.PeopleMetadataOptions.DownloadWriterMetadata);
|
||||
$('#chkPeopleOthers', page).checked(config.PeopleMetadataOptions.DownloadOtherPeopleMetadata);
|
||||
$('#chkPeopleGuestStars', page).checked(config.PeopleMetadataOptions.DownloadGuestStarMetadata);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
|
@ -75,14 +67,6 @@
|
|||
config.MetadataNetworkPath = $('#txtMetadataNetworkPath', form).val();
|
||||
config.FanartApiKey = $('#txtFanartApiKey', form).val();
|
||||
|
||||
config.PeopleMetadataOptions.DownloadActorMetadata = $('#chkPeopleActors', form).checked();
|
||||
config.PeopleMetadataOptions.DownloadComposerMetadata = $('#chkPeopleComposers', form).checked();
|
||||
config.PeopleMetadataOptions.DownloadDirectorMetadata = $('#chkPeopleDirectors', form).checked();
|
||||
config.PeopleMetadataOptions.DownloadGuestStarMetadata = $('#chkPeopleGuestStars', form).checked();
|
||||
config.PeopleMetadataOptions.DownloadProducerMetadata = $('#chkPeopleProducers', form).checked();
|
||||
config.PeopleMetadataOptions.DownloadWriterMetadata = $('#chkPeopleWriters', form).checked();
|
||||
config.PeopleMetadataOptions.DownloadOtherPeopleMetadata = $('#chkPeopleOthers', form).checked();
|
||||
|
||||
ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult);
|
||||
});
|
||||
|
||||
|
|
|
@ -12,6 +12,9 @@
|
|||
<div class="detailImageContainer">
|
||||
</div>
|
||||
<div class="detailPagePrimaryContent">
|
||||
|
||||
<div class="detailLogo"></div>
|
||||
|
||||
<div class="syncLocalContainer hide" style="margin-top: 1em; display: inline-flex; padding: 0 .5em;">
|
||||
<label class="checkboxContainer" style="margin: 0;">
|
||||
<input type="checkbox" is="emby-checkbox" class="chkOffline"/>
|
||||
|
|
|
@ -29,46 +29,6 @@
|
|||
<div class="fieldDescription checkboxFieldDescription">${OptionSaveMetadataAsHiddenHelp}</div>
|
||||
</div>
|
||||
|
||||
<div is="emby-collapse" title="${HeaderPeople}">
|
||||
<div class="collapseContent">
|
||||
<br />
|
||||
<div>
|
||||
<h3 class="checkboxListLabel">${HeaderDownloadPeopleMetadataFor}</h3>
|
||||
<div class="checkboxList">
|
||||
<label>
|
||||
<input type="checkbox" is="emby-checkbox" class="chkAirDays" id="chkPeopleActors" data-filter="Sunday" />
|
||||
<span>${OptionActors}</span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="checkbox" is="emby-checkbox" class="chkAirDays" id="chkPeopleComposers" data-filter="Sunday" />
|
||||
<span>${OptionComposers}</span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="checkbox" is="emby-checkbox" class="chkAirDays" id="chkPeopleDirectors" data-filter="Sunday" />
|
||||
<span>${OptionDirectors}</span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="checkbox" is="emby-checkbox" class="chkAirDays" id="chkPeopleGuestStars" data-filter="Sunday" />
|
||||
<span>${OptionGuestStars}</span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="checkbox" is="emby-checkbox" class="chkAirDays" id="chkPeopleProducers" data-filter="Sunday" />
|
||||
<span>${OptionProducers}</span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="checkbox" is="emby-checkbox" class="chkAirDays" id="chkPeopleWriters" data-filter="Sunday" />
|
||||
<span>${OptionWriters}</span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="checkbox" is="emby-checkbox" class="chkAirDays" id="chkPeopleOthers" data-filter="Sunday" />
|
||||
<span>${OptionOthers}</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="fieldDescription checkboxFieldDescription">${HeaderDownloadPeopleMetadataForHelp}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div is="emby-collapse" title="${HeaderTV}">
|
||||
<div class="collapseContent">
|
||||
<div class="inputContainer">
|
||||
|
|
|
@ -111,11 +111,14 @@
|
|||
window.scrollTo(0, 0);
|
||||
|
||||
renderImage(page, item, user);
|
||||
renderLogo(page, item, ApiClient);
|
||||
|
||||
setInitialCollapsibleState(page, item, context, user);
|
||||
renderDetails(page, item, context);
|
||||
|
||||
backdrop.setBackdrops([item], false);
|
||||
backdrop.setBackdrops([item], {
|
||||
blur: 48
|
||||
}, false);
|
||||
|
||||
LibraryBrowser.renderDetailPageBackdrop(page, item, imageLoader);
|
||||
|
||||
|
@ -266,6 +269,42 @@
|
|||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
function logoImageUrl(item, apiClient, options) {
|
||||
|
||||
options = options || {};
|
||||
options.type = "Logo";
|
||||
|
||||
if (item.ImageTags && item.ImageTags.Logo) {
|
||||
|
||||
options.tag = item.ImageTags.Logo;
|
||||
return apiClient.getScaledImageUrl(item.Id, options);
|
||||
}
|
||||
|
||||
if (item.ParentLogoImageTag) {
|
||||
options.tag = item.ParentLogoImageTag;
|
||||
return apiClient.getScaledImageUrl(item.ParentLogoItemId, options);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
function renderLogo(page, item, apiClient) {
|
||||
var url = logoImageUrl(item, apiClient, {
|
||||
maxWidth: 300
|
||||
});
|
||||
|
||||
var detailLogo = page.querySelector('.detailLogo');
|
||||
|
||||
if (url) {
|
||||
detailLogo.classList.remove('hide');
|
||||
detailLogo.classList.add('lazy');
|
||||
detailLogo.setAttribute('data-src', url);
|
||||
imageLoader.lazyImage(detailLogo);
|
||||
} else {
|
||||
detailLogo.classList.add('hide');
|
||||
}
|
||||
}
|
||||
|
||||
function showRecordingFields(page, item, user) {
|
||||
|
||||
if (currentRecordingFields) {
|
||||
|
@ -593,7 +632,7 @@
|
|||
|
||||
var dateAddedElement = page.querySelector('#dateAdded');
|
||||
|
||||
if (!item.IsFolder && item.Type !== 'Program' && item.Type !== 'TvChannel' && item.Type !== 'Trailer') {
|
||||
if (!item.IsFolder && item.MediaType && item.Type !== 'Program' && item.Type !== 'TvChannel' && item.Type !== 'Trailer') {
|
||||
dateAddedElement.classList.remove('hide');
|
||||
dateAddedElement.innerHTML = globalize.translate('DateAddedValue', datetime.toLocaleDateString(datetime.parseISO8601Date(item.DateCreated)));
|
||||
} else {
|
||||
|
@ -1046,6 +1085,8 @@
|
|||
var scrollX = false;
|
||||
var isList = false;
|
||||
|
||||
var scrollClass = 'hiddenScrollX';
|
||||
|
||||
if (item.Type == "MusicAlbum") {
|
||||
|
||||
html = listView.getListViewHtml({
|
||||
|
@ -1077,16 +1118,20 @@
|
|||
}
|
||||
else if (item.Type == "Season" || item.Type == "Episode") {
|
||||
|
||||
scrollX = item.Type == "Episode";
|
||||
scrollClass = 'smoothScrollX';
|
||||
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: getThumbShape(false),
|
||||
shape: getThumbShape(scrollX),
|
||||
showTitle: true,
|
||||
displayAsSpecial: item.Type == "Season" && item.IndexNumber,
|
||||
playFromHere: true,
|
||||
overlayText: true,
|
||||
lazy: true,
|
||||
showDetailsMenu: true,
|
||||
overlayPlayButton: true
|
||||
overlayPlayButton: true,
|
||||
allowBottomPadding: !scrollX
|
||||
});
|
||||
}
|
||||
else if (item.Type == "GameSystem") {
|
||||
|
@ -1102,11 +1147,12 @@
|
|||
|
||||
var elem = page.querySelector('.childrenItemsContainer');
|
||||
if (scrollX) {
|
||||
elem.classList.add('hiddenScrollX');
|
||||
elem.classList.add(scrollClass);
|
||||
elem.classList.remove('vertical-wrap');
|
||||
elem.classList.remove('vertical-list');
|
||||
} else {
|
||||
elem.classList.remove('hiddenScrollX');
|
||||
elem.classList.remove('smoothScrollX');
|
||||
|
||||
if (isList) {
|
||||
elem.classList.add('vertical-list');
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
.ui-body-b .raised {
|
||||
background: rgba(170,170, 170, 1);
|
||||
color: #222;
|
||||
background: rgba(170,170,190, .4);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.ui-body-a .raised {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue