mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
fixes #697 - Support xbmc offline discs
This commit is contained in:
parent
a2a9e6f2a3
commit
8a5c833522
7 changed files with 76 additions and 18 deletions
|
@ -198,6 +198,10 @@
|
||||||
box-shadow: 0 0 12px 7px #38c;
|
box-shadow: 0 0 12px 7px #38c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.tblLibraryReport img {
|
||||||
|
height: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
@media all and (min-width: 600px) {
|
@media all and (min-width: 600px) {
|
||||||
|
|
||||||
.popupIdentify {
|
.popupIdentify {
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="editPageInnerContent">
|
<div class="editPageInnerContent">
|
||||||
|
|
||||||
<h1 style="margin-bottom: 0;">Library List</h1>
|
<h1 style="margin-bottom: 0;">Reports</h1>
|
||||||
|
|
||||||
<div style="text-align: center;">
|
<div style="text-align: center;">
|
||||||
<div class="viewControls">
|
<div class="viewControls">
|
||||||
|
@ -51,6 +51,7 @@
|
||||||
<th data-priority="1">Release Date</th>
|
<th data-priority="1">Release Date</th>
|
||||||
<th data-priority="1">Rating</th>
|
<th data-priority="1">Rating</th>
|
||||||
<th data-priority="1">Runtime</th>
|
<th data-priority="1">Runtime</th>
|
||||||
|
<th data-priority="1" class="thPlayers">Players</th>
|
||||||
<th data-priority="1">Codecs</th>
|
<th data-priority="1">Codecs</th>
|
||||||
<th data-priority="1" class="thSubtitles">Subtitles</th>
|
<th data-priority="1" class="thSubtitles">Subtitles</th>
|
||||||
<th data-priority="1">Features</th>
|
<th data-priority="1">Features</th>
|
||||||
|
@ -108,9 +109,15 @@
|
||||||
<strong>Management:</strong>
|
<strong>Management:</strong>
|
||||||
</legend>
|
</legend>
|
||||||
|
|
||||||
|
<input class="chkIsLocked" type="checkbox" id="chkIsLocked" data-mini="true">
|
||||||
|
<label for="chkIsLocked">Locked</label>
|
||||||
|
|
||||||
<input class="chkMissingOverview" type="checkbox" name="chkMissingOverview" id="chkMissingOverview" data-mini="true">
|
<input class="chkMissingOverview" type="checkbox" name="chkMissingOverview" id="chkMissingOverview" data-mini="true">
|
||||||
<label for="chkMissingOverview">Missing Overview</label>
|
<label for="chkMissingOverview">Missing Overview</label>
|
||||||
|
|
||||||
|
<input class="chkIsUnidentified" type="checkbox" id="chkIsUnidentified" data-mini="true">
|
||||||
|
<label for="chkIsUnidentified">Unidentified</label>
|
||||||
|
|
||||||
<input class="chkYearMismatch" type="checkbox" name="chkYearMismatch" id="chkYearMismatch" data-mini="true">
|
<input class="chkYearMismatch" type="checkbox" name="chkYearMismatch" id="chkYearMismatch" data-mini="true">
|
||||||
<label for="chkYearMismatch">File/Metadata Years Mismatched</label>
|
<label for="chkYearMismatch">File/Metadata Years Mismatched</label>
|
||||||
|
|
||||||
|
|
|
@ -1030,6 +1030,12 @@
|
||||||
html += result.ProductionYear || ' ';
|
html += result.ProductionYear || ' ';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
|
|
||||||
|
if (result.GameSystem) {
|
||||||
|
html += '<div class="remoteImageDetails">';
|
||||||
|
html += result.GameSystem;
|
||||||
|
html += '</div>';
|
||||||
|
}
|
||||||
|
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -106,7 +106,7 @@
|
||||||
nodes.push({ attr: { id: name, rel: 'folder', itemtype: 'livetvservice' }, data: htmlName, state: 'closed' });
|
nodes.push({ attr: { id: name, rel: 'folder', itemtype: 'livetvservice' }, data: htmlName, state: 'closed' });
|
||||||
}
|
}
|
||||||
|
|
||||||
nodes.push({ attr: { id: 'libraryreport', rel: 'default', itemtype: 'libraryreport' }, data: 'Library List' });
|
nodes.push({ attr: { id: 'libraryreport', rel: 'default', itemtype: 'libraryreport' }, data: 'Reports' });
|
||||||
|
|
||||||
callback(nodes);
|
callback(nodes);
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
$('#editButtonContainer', page).hide();
|
$('#editButtonContainer', page).hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (MediaPlayer.canPlay(item, user) && item.LocationType !== "Offline" && item.LocationType !== "Virtual") {
|
if (MediaPlayer.canPlay(item, user)) {
|
||||||
|
|
||||||
var url = MediaPlayer.getPlayUrl(item);
|
var url = MediaPlayer.getPlayUrl(item);
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
SortBy: "SeriesSortName,SortName",
|
SortBy: "SeriesSortName,SortName",
|
||||||
SortOrder: "Ascending",
|
SortOrder: "Ascending",
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
Fields: "MediaStreams,DateCreated",
|
Fields: "MediaStreams,DateCreated,Settings",
|
||||||
StartIndex: 0,
|
StartIndex: 0,
|
||||||
IncludeItemTypes: "Movie"
|
IncludeItemTypes: "Movie"
|
||||||
};
|
};
|
||||||
|
@ -23,7 +23,7 @@
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getTableRowsHtml(items, includeParentInfo, includeSubtitles) {
|
function getTableRowsHtml(items, includeParentInfo, includeSubtitles, includePlayers) {
|
||||||
|
|
||||||
var html = '';
|
var html = '';
|
||||||
|
|
||||||
|
@ -35,6 +35,9 @@
|
||||||
|
|
||||||
html += '<td>';
|
html += '<td>';
|
||||||
|
|
||||||
|
if (item.LockData) {
|
||||||
|
html += '<img src="css/images/editor/lock.png" />';
|
||||||
|
}
|
||||||
if (item.IsUnidentified) {
|
if (item.IsUnidentified) {
|
||||||
html += '<div class="libraryReportIndicator"><div class="ui-icon-alert ui-btn-icon-notext"></div></div>';
|
html += '<div class="libraryReportIndicator"><div class="ui-icon-alert ui-btn-icon-notext"></div></div>';
|
||||||
}
|
}
|
||||||
|
@ -46,10 +49,13 @@
|
||||||
html += '<a href="itemdetails.html?id=' + item.SeriesId + '">' + item.SeriesName + '</a>';
|
html += '<a href="itemdetails.html?id=' + item.SeriesId + '">' + item.SeriesName + '</a>';
|
||||||
}
|
}
|
||||||
else if (item.Album) {
|
else if (item.Album) {
|
||||||
html += item.Album + '<br/>';
|
html += item.Album;
|
||||||
}
|
}
|
||||||
else if (item.AlbumArtist) {
|
else if (item.AlbumArtist) {
|
||||||
html += item.AlbumArtist + '<br/>';
|
html += item.AlbumArtist;
|
||||||
|
}
|
||||||
|
else if (item.GameSystem) {
|
||||||
|
html += item.GameSystem;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
html += ' ';
|
html += ' ';
|
||||||
|
@ -123,8 +129,14 @@
|
||||||
}
|
}
|
||||||
html += '</td>';
|
html += '</td>';
|
||||||
|
|
||||||
|
if (includePlayers) {
|
||||||
html += '<td>';
|
html += '<td>';
|
||||||
html += (item.MediaStreams || []).filter(function(s) {
|
html += item.Players || ' ';
|
||||||
|
html += '</td>';
|
||||||
|
}
|
||||||
|
|
||||||
|
html += '<td>';
|
||||||
|
html += (item.MediaStreams || []).filter(function (s) {
|
||||||
|
|
||||||
return s.Type != 'Subtitle';
|
return s.Type != 'Subtitle';
|
||||||
|
|
||||||
|
@ -142,7 +154,7 @@
|
||||||
|
|
||||||
}).map(function (s) {
|
}).map(function (s) {
|
||||||
|
|
||||||
return (s.Language || 'Und') + ' - ' + s.Codec;
|
return (s.Language || 'und') + ' - ' + s.Codec;
|
||||||
|
|
||||||
}).join('<br/>');
|
}).join('<br/>');
|
||||||
|
|
||||||
|
@ -185,8 +197,9 @@
|
||||||
|
|
||||||
$('.listBottomPaging', page).html(LibraryBrowser.getPagingHtml(query, result.TotalRecordCount)).trigger('create');
|
$('.listBottomPaging', page).html(LibraryBrowser.getPagingHtml(query, result.TotalRecordCount)).trigger('create');
|
||||||
|
|
||||||
var includeParentInfo = query.IncludeItemTypes == "Audio" || query.IncludeItemTypes == "MusicAlbum" || query.IncludeItemTypes == "Episode" || query.IncludeItemTypes == "Book";
|
var includeParentInfo = query.IncludeItemTypes == "Audio" || query.IncludeItemTypes == "MusicAlbum" || query.IncludeItemTypes == "Episode" || query.IncludeItemTypes == "Book" || query.IncludeItemTypes == "Game";
|
||||||
var includeSubtitles = query.IncludeItemTypes == "Movie" || query.IncludeItemTypes == "Trailer" || query.IncludeItemTypes == "Episode" || query.IncludeItemTypes == "AdultVideo" || query.IncludeItemTypes == "MusicVideo" || query.IncludeItemTypes == "Video";
|
var includeSubtitles = query.IncludeItemTypes == "Movie" || query.IncludeItemTypes == "Trailer" || query.IncludeItemTypes == "Episode" || query.IncludeItemTypes == "AdultVideo" || query.IncludeItemTypes == "MusicVideo" || query.IncludeItemTypes == "Video";
|
||||||
|
var includePlayers = query.IncludeItemTypes == "Game";
|
||||||
|
|
||||||
if (includeParentInfo) {
|
if (includeParentInfo) {
|
||||||
|
|
||||||
|
@ -198,6 +211,9 @@
|
||||||
else if (query.IncludeItemTypes == "MusicAlbum") {
|
else if (query.IncludeItemTypes == "MusicAlbum") {
|
||||||
parentLabel = "Artist";
|
parentLabel = "Artist";
|
||||||
}
|
}
|
||||||
|
else if (query.IncludeItemTypes == "Game") {
|
||||||
|
parentLabel = "Game System";
|
||||||
|
}
|
||||||
|
|
||||||
$('.thParent', page).html(parentLabel).show();
|
$('.thParent', page).html(parentLabel).show();
|
||||||
|
|
||||||
|
@ -206,14 +222,20 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (includeSubtitles) {
|
if (includeSubtitles) {
|
||||||
|
|
||||||
$('.thSubtitles', page).show();
|
$('.thSubtitles', page).show();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$('.thSubtitles', page).hide();
|
$('.thSubtitles', page).hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
var rowsHtml = getTableRowsHtml(result.Items, includeParentInfo, includeSubtitles);
|
if (includePlayers) {
|
||||||
|
$('.thPlayers', page).show();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$('.thPlayers', page).hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
var rowsHtml = getTableRowsHtml(result.Items, includeParentInfo, includeSubtitles, includePlayers);
|
||||||
$('.resultBody', page).html(rowsHtml).parents('.tblLibraryReport').table("refresh").trigger('create');
|
$('.resultBody', page).html(rowsHtml).parents('.tblLibraryReport').table("refresh").trigger('create');
|
||||||
|
|
||||||
$('.btnNextPage', page).on('click', function () {
|
$('.btnNextPage', page).on('click', function () {
|
||||||
|
@ -269,6 +291,9 @@
|
||||||
|
|
||||||
$('#chkMissingOverview', page).checked(query.HasOverview == false).checkboxradio('refresh');
|
$('#chkMissingOverview', page).checked(query.HasOverview == false).checkboxradio('refresh');
|
||||||
$('#chkYearMismatch', page).checked(query.IsYearMismatched == true).checkboxradio('refresh');
|
$('#chkYearMismatch', page).checked(query.IsYearMismatched == true).checkboxradio('refresh');
|
||||||
|
|
||||||
|
$('#chkIsUnidentified', page).checked(query.IsUnidentified == true).checkboxradio('refresh');
|
||||||
|
$('#chkIsLocked', page).checked(query.IsLocked == true).checkboxradio('refresh');
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).on('pageinit', "#libraryReportPage", function () {
|
$(document).on('pageinit', "#libraryReportPage", function () {
|
||||||
|
@ -413,6 +438,22 @@
|
||||||
reloadItems(page);
|
reloadItems(page);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('#chkIsUnidentified', page).on('change', function () {
|
||||||
|
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.IsUnidentified = this.checked ? true : null;
|
||||||
|
|
||||||
|
reloadItems(page);
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#chkIsLocked', page).on('change', function () {
|
||||||
|
|
||||||
|
query.StartIndex = 0;
|
||||||
|
query.IsLocked = this.checked ? true : null;
|
||||||
|
|
||||||
|
reloadItems(page);
|
||||||
|
});
|
||||||
|
|
||||||
}).on('pagebeforeshow', "#libraryReportPage", function () {
|
}).on('pagebeforeshow', "#libraryReportPage", function () {
|
||||||
|
|
||||||
var page = this;
|
var page = this;
|
||||||
|
|
|
@ -1011,7 +1011,7 @@
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.LocationType == "Virtual") {
|
if (item.LocationType == "Virtual" || item.IsPlaceHolder) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (item.Type == "MusicAlbum" || item.Type == "MusicArtist" || item.Type == "MusicGenre") {
|
if (item.Type == "MusicAlbum" || item.Type == "MusicArtist" || item.Type == "MusicGenre") {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue