mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
enable shared media info
This commit is contained in:
parent
014d70f5d7
commit
3af73d4fde
23 changed files with 181 additions and 484 deletions
|
@ -1,4 +1,4 @@
|
|||
define(['layoutManager', 'datetime', 'jQuery', 'scrollStyles'], function (layoutManager, datetime, $) {
|
||||
define(['layoutManager', 'datetime', 'jQuery', 'mediaInfo', 'scrollStyles'], function (layoutManager, datetime, $, mediaInfo) {
|
||||
|
||||
var currentItem;
|
||||
|
||||
|
@ -171,8 +171,6 @@
|
|||
$('.chapterSettingsButton', page).hide();
|
||||
}
|
||||
|
||||
LiveTvHelpers.renderOriginalAirDate($('.airDate', page), item);
|
||||
|
||||
if (item.Type == "Person" && item.PremiereDate) {
|
||||
|
||||
try {
|
||||
|
@ -467,11 +465,13 @@
|
|||
bottomOverview.classList.add('hide');
|
||||
}
|
||||
|
||||
$('.itemCommunityRating', page).html(LibraryBrowser.getRatingHtml(item));
|
||||
|
||||
LibraryBrowser.renderAwardSummary($('#awardSummary', page), item);
|
||||
|
||||
$('.itemMiscInfo', page).html(LibraryBrowser.getMiscInfoHtml(item));
|
||||
$('.itemMiscInfo', page).each(function () {
|
||||
mediaInfo.fillPrimaryMediaInfo(this, item, {
|
||||
interactive: true
|
||||
});
|
||||
});
|
||||
|
||||
LibraryBrowser.renderGenres($('.itemGenres', page), item, null, isStatic);
|
||||
LibraryBrowser.renderStudios($('.itemStudios', page), item, isStatic);
|
||||
|
@ -1319,7 +1319,7 @@
|
|||
IncludeItemTypes: "MusicVideo",
|
||||
Recursive: true,
|
||||
Fields: "DateCreated,SyncInfo,CanDelete",
|
||||
Albums: item.Name
|
||||
AlbumNames: item.Name
|
||||
|
||||
}).then(function (result) {
|
||||
if (result.Items.length) {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(['playlistManager', 'appSettings', 'appStorage', 'apphost', 'datetime', 'jQuery', 'itemHelper', 'scrollStyles'], function (playlistManager, appSettings, appStorage, appHost, datetime, $, itemHelper) {
|
||||
define(['playlistManager', 'appSettings', 'appStorage', 'apphost', 'datetime', 'jQuery', 'itemHelper', 'mediaInfo', 'scrollStyles'], function (playlistManager, appSettings, appStorage, appHost, datetime, $, itemHelper, mediaInfo) {
|
||||
|
||||
function parentWithClass(elem, className) {
|
||||
|
||||
|
@ -1363,7 +1363,9 @@
|
|||
}
|
||||
}
|
||||
else {
|
||||
textlines.push(LibraryBrowser.getMiscInfoHtml(item));
|
||||
textlines.push('<div class="itemMiscInfo">' + mediaInfo.getPrimaryMediaInfoHtml(item, {
|
||||
endsAt: false
|
||||
}) + '</div>');
|
||||
}
|
||||
|
||||
if (textlines.length > 2) {
|
||||
|
@ -2992,44 +2994,6 @@
|
|||
});
|
||||
},
|
||||
|
||||
getRatingHtml: function (item, metascore) {
|
||||
|
||||
var html = "";
|
||||
|
||||
if (item.CommunityRating) {
|
||||
|
||||
html += "<div class='starRating' title='" + item.CommunityRating + "'></div>";
|
||||
html += '<div class="starRatingValue">';
|
||||
html += item.CommunityRating.toFixed(1);
|
||||
html += '</div>';
|
||||
}
|
||||
|
||||
if (item.CriticRating != null) {
|
||||
|
||||
if (item.CriticRating >= 60) {
|
||||
html += '<div class="fresh rottentomatoesicon" title="Rotten Tomatoes"></div>';
|
||||
} else {
|
||||
html += '<div class="rotten rottentomatoesicon" title="Rotten Tomatoes"></div>';
|
||||
}
|
||||
|
||||
html += '<div class="criticRating" title="Rotten Tomatoes">' + item.CriticRating + '%</div>';
|
||||
}
|
||||
|
||||
//if (item.Metascore && metascore !== false) {
|
||||
|
||||
// if (item.Metascore >= 60) {
|
||||
// html += '<div class="metascore metascorehigh" title="Metascore">' + item.Metascore + '</div>';
|
||||
// }
|
||||
// else if (item.Metascore >= 40) {
|
||||
// html += '<div class="metascore metascoremid" title="Metascore">' + item.Metascore + '</div>';
|
||||
// } else {
|
||||
// html += '<div class="metascore metascorelow" title="Metascore">' + item.Metascore + '</div>';
|
||||
// }
|
||||
//}
|
||||
|
||||
return html;
|
||||
},
|
||||
|
||||
getItemProgressBarHtml: function (item) {
|
||||
|
||||
|
||||
|
@ -3288,180 +3252,6 @@
|
|||
detailImageProgressContainer.innerHTML = progressHtml || '';
|
||||
},
|
||||
|
||||
getMiscInfoHtml: function (item) {
|
||||
|
||||
var miscInfo = [];
|
||||
var text, date;
|
||||
|
||||
if (item.IsSeries && !item.IsRepeat) {
|
||||
|
||||
require(['livetvcss']);
|
||||
miscInfo.push('<span class="newTvProgram">' + Globalize.translate('AttributeNew') + '</span>');
|
||||
|
||||
}
|
||||
|
||||
if (item.IsLive) {
|
||||
|
||||
miscInfo.push('<span class="liveTvProgram">' + Globalize.translate('AttributeLive') + '</span>');
|
||||
|
||||
}
|
||||
|
||||
if (item.ChannelId && item.ChannelName) {
|
||||
if (item.Type == 'Program' || item.Type == 'Recording') {
|
||||
miscInfo.push('<a class="textlink" href="itemdetails.html?id=' + item.ChannelId + '">' + item.ChannelName + '</a>');
|
||||
}
|
||||
}
|
||||
|
||||
if (item.Type == "Episode" || item.MediaType == 'Photo') {
|
||||
|
||||
if (item.PremiereDate) {
|
||||
|
||||
try {
|
||||
date = datetime.parseISO8601Date(item.PremiereDate, true);
|
||||
|
||||
text = date.toLocaleDateString();
|
||||
miscInfo.push(text);
|
||||
}
|
||||
catch (e) {
|
||||
console.log("Error parsing date: " + item.PremiereDate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (item.StartDate) {
|
||||
|
||||
try {
|
||||
date = datetime.parseISO8601Date(item.StartDate, true);
|
||||
|
||||
text = date.toLocaleDateString();
|
||||
miscInfo.push(text);
|
||||
|
||||
if (item.Type != "Recording") {
|
||||
text = datetime.getDisplayTime(date);
|
||||
miscInfo.push(text);
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
console.log("Error parsing date: " + item.PremiereDate);
|
||||
}
|
||||
}
|
||||
|
||||
if (item.ProductionYear && item.Type == "Series") {
|
||||
|
||||
if (item.Status == "Continuing") {
|
||||
miscInfo.push(Globalize.translate('ValueSeriesYearToPresent', item.ProductionYear));
|
||||
|
||||
}
|
||||
else if (item.ProductionYear) {
|
||||
|
||||
text = item.ProductionYear;
|
||||
|
||||
if (item.EndDate) {
|
||||
|
||||
try {
|
||||
|
||||
var endYear = datetime.parseISO8601Date(item.EndDate, true).getFullYear();
|
||||
|
||||
if (endYear != item.ProductionYear) {
|
||||
text += "-" + datetime.parseISO8601Date(item.EndDate, true).getFullYear();
|
||||
}
|
||||
|
||||
}
|
||||
catch (e) {
|
||||
console.log("Error parsing date: " + item.EndDate);
|
||||
}
|
||||
}
|
||||
|
||||
miscInfo.push(text);
|
||||
}
|
||||
}
|
||||
|
||||
if (item.Type != "Series" && item.Type != "Episode" && item.MediaType != 'Photo') {
|
||||
|
||||
if (item.ProductionYear) {
|
||||
|
||||
miscInfo.push(item.ProductionYear);
|
||||
}
|
||||
else if (item.PremiereDate) {
|
||||
|
||||
try {
|
||||
text = datetime.parseISO8601Date(item.PremiereDate, true).getFullYear();
|
||||
miscInfo.push(text);
|
||||
}
|
||||
catch (e) {
|
||||
console.log("Error parsing date: " + item.PremiereDate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var minutes;
|
||||
|
||||
if (item.RunTimeTicks && item.Type != "Series") {
|
||||
|
||||
if (item.Type == "Audio") {
|
||||
|
||||
miscInfo.push(datetime.getDisplayRunningTime(item.RunTimeTicks));
|
||||
|
||||
} else {
|
||||
minutes = item.RunTimeTicks / 600000000;
|
||||
|
||||
minutes = minutes || 1;
|
||||
|
||||
miscInfo.push(Math.round(minutes) + "min");
|
||||
}
|
||||
}
|
||||
|
||||
if (item.CumulativeRunTimeTicks && item.Type != "Series" && item.Type != "Season") {
|
||||
|
||||
miscInfo.push(datetime.getDisplayRunningTime(item.CumulativeRunTimeTicks));
|
||||
}
|
||||
|
||||
if (item.OfficialRating && item.Type !== "Season" && item.Type !== "Episode") {
|
||||
miscInfo.push(item.OfficialRating);
|
||||
}
|
||||
|
||||
if (item.IsHD) {
|
||||
|
||||
miscInfo.push(Globalize.translate('LabelHDProgram'));
|
||||
}
|
||||
|
||||
//if (item.Audio) {
|
||||
|
||||
// miscInfo.push(item.Audio);
|
||||
|
||||
//}
|
||||
|
||||
if (item.Video3DFormat) {
|
||||
miscInfo.push("3D");
|
||||
}
|
||||
|
||||
if (item.MediaType == 'Photo' && item.Width && item.Height) {
|
||||
miscInfo.push(item.Width + "x" + item.Height);
|
||||
}
|
||||
|
||||
if (item.SeriesTimerId) {
|
||||
var html = '';
|
||||
html += '<a href="livetvseriestimer.html?id=' + item.SeriesTimerId + '" title="' + Globalize.translate('ButtonViewSeriesRecording') + '">';
|
||||
html += '<div class="timerCircle seriesTimerCircle"></div>';
|
||||
html += '<div class="timerCircle seriesTimerCircle"></div>';
|
||||
html += '<div class="timerCircle seriesTimerCircle"></div>';
|
||||
html += '</a>';
|
||||
miscInfo.push(html);
|
||||
require(['livetvcss']);
|
||||
}
|
||||
else if (item.TimerId) {
|
||||
|
||||
var html = '';
|
||||
html += '<button type="button" class="clearButton" onclick="LibraryBrowser.editTimer(\'' + item.TimerId + '\');">';
|
||||
html += '<div class="timerCircle"></div>';
|
||||
html += '</button>';
|
||||
miscInfo.push(html);
|
||||
require(['livetvcss']);
|
||||
}
|
||||
|
||||
return miscInfo.join(' ');
|
||||
},
|
||||
|
||||
renderOverview: function (elems, item) {
|
||||
|
||||
for (var i = 0, length = elems.length; i < length; i++) {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(['appSettings', 'appStorage', 'libraryBrowser', 'apphost', 'jQuery', 'itemHelper'], function (appSettings, appStorage, LibraryBrowser, appHost, $, itemHelper) {
|
||||
define(['appSettings', 'appStorage', 'libraryBrowser', 'apphost', 'jQuery', 'itemHelper', 'mediaInfo'], function (appSettings, appStorage, LibraryBrowser, appHost, $, itemHelper, mediaInfo) {
|
||||
|
||||
var showOverlayTimeout;
|
||||
|
||||
|
@ -118,28 +118,22 @@
|
|||
html += name;
|
||||
html += '</p>';
|
||||
} else if (!isSmallItem && !isMiniItem) {
|
||||
html += '<p class="itemMiscInfo" style="white-space:nowrap;">';
|
||||
html += LibraryBrowser.getMiscInfoHtml(item);
|
||||
html += '</p>';
|
||||
html += '<div class="itemMiscInfo">';
|
||||
html += mediaInfo.getPrimaryMediaInfoHtml(item, {
|
||||
endsAt: false
|
||||
});
|
||||
html += '</div>';
|
||||
}
|
||||
|
||||
if (!isMiniItem) {
|
||||
html += '<div style="margin:1em 0 .75em;">';
|
||||
|
||||
if (isPortrait) {
|
||||
html += '<div class="itemCommunityRating">';
|
||||
html += LibraryBrowser.getRatingHtml(item, false);
|
||||
html += '</div>';
|
||||
|
||||
html += '<div class="userDataIcons" style="margin:.5em 0 0em;">';
|
||||
html += LibraryBrowser.getUserDataIconsHtml(item);
|
||||
html += '</div>';
|
||||
} else {
|
||||
|
||||
html += '<span class="itemCommunityRating" style="vertical-align:middle;">';
|
||||
html += LibraryBrowser.getRatingHtml(item, false);
|
||||
html += '</span>';
|
||||
|
||||
html += '<span class="userDataIcons" style="vertical-align:middle;">';
|
||||
html += LibraryBrowser.getUserDataIconsHtml(item);
|
||||
html += '</span>';
|
||||
|
|
|
@ -114,25 +114,6 @@
|
|||
});
|
||||
},
|
||||
|
||||
renderOriginalAirDate: function (elem, item) {
|
||||
|
||||
var airDate = item.PremiereDate;
|
||||
|
||||
if (airDate && item.IsRepeat) {
|
||||
|
||||
try {
|
||||
airDate = datetime.parseISO8601Date(airDate, true).toLocaleDateString();
|
||||
}
|
||||
catch (e) {
|
||||
console.log("Error parsing date: " + airDate);
|
||||
}
|
||||
|
||||
|
||||
elem.html(Globalize.translate('ValueOriginalAirDate').replace('{0}', airDate)).show();
|
||||
} else {
|
||||
elem.hide();
|
||||
}
|
||||
},
|
||||
getTimersHtml: getTimersHtml
|
||||
|
||||
};
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(['appSettings', 'datetime', 'jQuery', 'scrollStyles', 'paper-icon-button-light'], function (appSettings, datetime, $) {
|
||||
define(['appSettings', 'datetime', 'jQuery', 'mediaInfo', 'scrollStyles', 'paper-icon-button-light'], function (appSettings, datetime, $, mediaInfo) {
|
||||
|
||||
function createVideoPlayer(self) {
|
||||
|
||||
|
@ -444,18 +444,12 @@
|
|||
var nameHtml = MediaController.getNowPlayingNameHtml(item, false);
|
||||
nameHtml = '<div class="videoNowPlayingName">' + nameHtml + '</div>';
|
||||
|
||||
var miscInfo = LibraryBrowser.getMiscInfoHtml(item);
|
||||
var miscInfo = mediaInfo.getPrimaryMediaInfoHtml(item);
|
||||
if (miscInfo) {
|
||||
|
||||
nameHtml += '<div class="videoNowPlayingRating">' + miscInfo + '</div>';
|
||||
}
|
||||
|
||||
var ratingHtml = LibraryBrowser.getRatingHtml(item);
|
||||
if (ratingHtml) {
|
||||
|
||||
nameHtml += '<div class="videoNowPlayingRating">' + ratingHtml + '</div>';
|
||||
}
|
||||
|
||||
if (item.Overview) {
|
||||
|
||||
nameHtml += '<div class="videoNowPlayingOverview">' + item.Overview + '</div>';
|
||||
|
|
|
@ -1797,6 +1797,7 @@ var AppInfo = {};
|
|||
|
||||
if (navigator.webkitPersistentStorage) {
|
||||
paths.imageFetcher = embyWebComponentsBowerPath + "/images/persistentimagefetcher";
|
||||
//paths.imageFetcher = embyWebComponentsBowerPath + "/images/basicimagefetcher";
|
||||
} else if (Dashboard.isRunningInCordova()) {
|
||||
paths.imageFetcher = 'cordova/imagestore';
|
||||
} else {
|
||||
|
@ -1820,7 +1821,7 @@ var AppInfo = {};
|
|||
|
||||
define("libjass", [bowerPath + "/libjass/libjass", "css!" + bowerPath + "/libjass/libjass"], returnFirstDependency);
|
||||
|
||||
define("mediaInfo", [embyWebComponentsBowerPath + "/mediaInfo/mediaInfo"], returnFirstDependency);
|
||||
define("mediaInfo", [embyWebComponentsBowerPath + "/mediainfo/mediainfo"], returnFirstDependency);
|
||||
define("backdrop", [embyWebComponentsBowerPath + "/backdrop/backdrop"], returnFirstDependency);
|
||||
define("fetchHelper", [embyWebComponentsBowerPath + "/fetchhelper"], returnFirstDependency);
|
||||
|
||||
|
@ -3290,12 +3291,6 @@ pageClassOn('viewshow', "page", function () {
|
|||
page.classList.remove('ui-body-a');
|
||||
}
|
||||
|
||||
//if (currentTheme != 'a' && !browserInfo.mobile) {
|
||||
// document.documentElement.classList.add('darkScrollbars');
|
||||
//} else {
|
||||
// document.documentElement.classList.remove('darkScrollbars');
|
||||
//}
|
||||
|
||||
var apiClient = window.ApiClient;
|
||||
|
||||
Dashboard.ensureHeader(page);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue