mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
make live tv channels playable
This commit is contained in:
parent
18abc62bc9
commit
2137a2436f
5 changed files with 76 additions and 23 deletions
|
@ -832,6 +832,10 @@ a.itemTag:hover {
|
||||||
background: rgba(82, 181, 75, .8);
|
background: rgba(82, 181, 75, .8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.unplayedIndicator div:after {
|
||||||
|
background-color: transparent !important;
|
||||||
|
}
|
||||||
|
|
||||||
.itemProgress {
|
.itemProgress {
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
font-size: 19px;
|
font-size: 19px;
|
||||||
|
|
|
@ -458,7 +458,10 @@
|
||||||
var html = LibraryBrowser.getPosterViewHtml({
|
var html = LibraryBrowser.getPosterViewHtml({
|
||||||
items: result.Items,
|
items: result.Items,
|
||||||
useAverageAspectRatio: item.MediaType != "Game",
|
useAverageAspectRatio: item.MediaType != "Game",
|
||||||
shape: item.Type == "MusicAlbum" ? "square" : "portrait"
|
shape: item.Type == "MusicAlbum" ? "square" : "portrait",
|
||||||
|
showParentTitle: item.Type == "MusicAlbum",
|
||||||
|
showTitle: item.Type == "MusicAlbum" || item.Type == "Game",
|
||||||
|
borderless: item.Type == "Game"
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#similarContent', page).html(html);
|
$('#similarContent', page).html(html);
|
||||||
|
@ -521,10 +524,12 @@
|
||||||
|
|
||||||
var sortBy = item.Type == "BoxSet" ? "ProductionYear,SortName" : "SortName";
|
var sortBy = item.Type == "BoxSet" ? "ProductionYear,SortName" : "SortName";
|
||||||
|
|
||||||
|
var fields = "ItemCounts,DateCreated,AudioInfo,PrimaryImageAspectRatio";
|
||||||
|
|
||||||
var query = {
|
var query = {
|
||||||
ParentId: item.Id,
|
ParentId: item.Id,
|
||||||
SortBy: sortBy,
|
SortBy: sortBy,
|
||||||
Fields: "ItemCounts,DateCreated,AudioInfo"
|
Fields: fields
|
||||||
};
|
};
|
||||||
|
|
||||||
var promise;
|
var promise;
|
||||||
|
@ -533,7 +538,8 @@
|
||||||
|
|
||||||
promise = ApiClient.getSeasons(item.Id, {
|
promise = ApiClient.getSeasons(item.Id, {
|
||||||
|
|
||||||
userId: user.Id
|
userId: user.Id,
|
||||||
|
Fields: fields
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else if (item.Type == "Season") {
|
else if (item.Type == "Season") {
|
||||||
|
@ -542,7 +548,8 @@
|
||||||
promise = ApiClient.getEpisodes(item.SeriesId, {
|
promise = ApiClient.getEpisodes(item.SeriesId, {
|
||||||
|
|
||||||
seasonId: item.Id,
|
seasonId: item.Id,
|
||||||
userId: user.Id
|
userId: user.Id,
|
||||||
|
Fields: fields
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -562,13 +569,34 @@
|
||||||
shape = "smallBackdrop";
|
shape = "smallBackdrop";
|
||||||
}
|
}
|
||||||
|
|
||||||
var html = LibraryBrowser.getPosterDetailViewHtml({
|
var html;
|
||||||
items: result.Items,
|
|
||||||
useAverageAspectRatio: true,
|
if (item.Type == "Series" || item.Type == "BoxSet") {
|
||||||
shape: shape,
|
html = LibraryBrowser.getPosterViewHtml({
|
||||||
showParentName: false,
|
items: result.Items,
|
||||||
displayAsSpecial: item.Type == "Season" && item.IndexNumber
|
shape: "portrait",
|
||||||
});
|
useAverageAspectRatio: true,
|
||||||
|
showTitle: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if (item.Type == "Season") {
|
||||||
|
html = LibraryBrowser.getPosterViewHtml({
|
||||||
|
items: result.Items,
|
||||||
|
shape: "smallBackdrop",
|
||||||
|
useAverageAspectRatio: true,
|
||||||
|
showTitle: true,
|
||||||
|
displayAsSpecial: item.Type == "Season" && item.IndexNumber
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
html = LibraryBrowser.getPosterDetailViewHtml({
|
||||||
|
items: result.Items,
|
||||||
|
useAverageAspectRatio: true,
|
||||||
|
shape: shape,
|
||||||
|
showParentName: false,
|
||||||
|
displayAsSpecial: item.Type == "Season" && item.IndexNumber
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
$('#childrenContent', page).html(html);
|
$('#childrenContent', page).html(html);
|
||||||
|
|
||||||
|
|
|
@ -662,12 +662,12 @@
|
||||||
|
|
||||||
var html = "";
|
var html = "";
|
||||||
|
|
||||||
|
var primaryImageAspectRatio = options.useAverageAspectRatio ? LibraryBrowser.getAveragePrimaryImageAspectRatio(items) : null;
|
||||||
|
|
||||||
for (var i = 0, length = items.length; i < length; i++) {
|
for (var i = 0, length = items.length; i < length; i++) {
|
||||||
|
|
||||||
var item = items[i];
|
var item = items[i];
|
||||||
|
|
||||||
var primaryImageAspectRatio = options.useAverageAspectRatio ? LibraryBrowser.getAveragePrimaryImageAspectRatio([item]) : null;
|
|
||||||
|
|
||||||
var futureDateText;
|
var futureDateText;
|
||||||
|
|
||||||
if (item.PremiereDate) {
|
if (item.PremiereDate) {
|
||||||
|
@ -883,7 +883,7 @@
|
||||||
}
|
}
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
|
|
||||||
var name = LibraryBrowser.getPosterViewDisplayName(item);
|
var name = LibraryBrowser.getPosterViewDisplayName(item, options.displayAsSpecial);
|
||||||
|
|
||||||
if (!imgUrl && !options.showTitle) {
|
if (!imgUrl && !options.showTitle) {
|
||||||
html += "<div class='posterItemDefaultText'>";
|
html += "<div class='posterItemDefaultText'>";
|
||||||
|
@ -1089,8 +1089,23 @@
|
||||||
|
|
||||||
getPlayedIndicatorHtml: function (item) {
|
getPlayedIndicatorHtml: function (item) {
|
||||||
|
|
||||||
if (item.RecursiveUnplayedItemCount) {
|
if (item.Type == "Series" || item.Type == "Season" || item.Type == "BoxSet") {
|
||||||
return '<div class="unplayedIndicator">' + item.RecursiveUnplayedItemCount + '</div>';
|
if (item.RecursiveUnplayedItemCount) {
|
||||||
|
return '<div class="unplayedIndicator">' + item.RecursiveUnplayedItemCount + '</div>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item.PlayedPercentage == 100) {
|
||||||
|
return '<div class="unplayedIndicator"><div class="ui-icon-check ui-btn-icon-notext"></div></div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item.MediaType == "Video") {
|
||||||
|
|
||||||
|
var userData = item.UserData || {};
|
||||||
|
|
||||||
|
if (userData.Played) {
|
||||||
|
return '<div class="unplayedIndicator"><div class="ui-icon-check ui-btn-icon-notext"></div></div>';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return '';
|
return '';
|
||||||
|
|
|
@ -271,7 +271,7 @@
|
||||||
|
|
||||||
$('#btnPlay', page).on('click', function () {
|
$('#btnPlay', page).on('click', function () {
|
||||||
var userdata = currentItem.UserData || {};
|
var userdata = currentItem.UserData || {};
|
||||||
LibraryBrowser.showPlayMenu(this, currentItem.Name, currentItem.Type, currentItem.MediaType, userdata.PlaybackPositionTicks);
|
LibraryBrowser.showPlayMenu(this, currentItem.Id, currentItem.Type, currentItem.MediaType, userdata.PlaybackPositionTicks);
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#btnRemote', page).on('click', function () {
|
$('#btnRemote', page).on('click', function () {
|
||||||
|
|
|
@ -29,13 +29,19 @@
|
||||||
var checkSortOption = $('.radioSortBy:checked', page);
|
var checkSortOption = $('.radioSortBy:checked', page);
|
||||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||||
|
|
||||||
html += LibraryBrowser.getPosterViewHtml({
|
//html += LibraryBrowser.getPosterViewHtml({
|
||||||
|
// items: result.Items,
|
||||||
|
// useAverageAspectRatio: true,
|
||||||
|
// shape: "backdrop",
|
||||||
|
// showTitle: false,
|
||||||
|
// overlayText: false,
|
||||||
|
// context: 'tv'
|
||||||
|
//});
|
||||||
|
|
||||||
|
html += LibraryBrowser.getPosterDetailViewHtml({
|
||||||
items: result.Items,
|
items: result.Items,
|
||||||
useAverageAspectRatio: true,
|
context: "tv",
|
||||||
shape: "backdrop",
|
shape: "backdrop"
|
||||||
showTitle: false,
|
|
||||||
overlayText: false,
|
|
||||||
context: 'tv'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
html += LibraryBrowser.getPagingHtml(query, result.TotalRecordCount);
|
html += LibraryBrowser.getPagingHtml(query, result.TotalRecordCount);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue