diff --git a/dashboard-ui/css/metadataeditor.css b/dashboard-ui/css/metadataeditor.css index 38b5b25594..44399b9113 100644 --- a/dashboard-ui/css/metadataeditor.css +++ b/dashboard-ui/css/metadataeditor.css @@ -198,6 +198,10 @@ box-shadow: 0 0 12px 7px #38c; } +.tblLibraryReport img { + height: 20px; +} + @media all and (min-width: 600px) { .popupIdentify { diff --git a/dashboard-ui/libraryreport.html b/dashboard-ui/libraryreport.html index 7895a593e6..7813202c79 100644 --- a/dashboard-ui/libraryreport.html +++ b/dashboard-ui/libraryreport.html @@ -14,7 +14,7 @@
-

Library List

+

Reports

@@ -51,6 +51,7 @@ Release Date Rating Runtime + Players Codecs Subtitles Features @@ -108,9 +109,15 @@ Management: + + + + + + diff --git a/dashboard-ui/scripts/edititemmetadata.js b/dashboard-ui/scripts/edititemmetadata.js index cbc0d7a065..32bfced26a 100644 --- a/dashboard-ui/scripts/edititemmetadata.js +++ b/dashboard-ui/scripts/edititemmetadata.js @@ -1029,6 +1029,12 @@ html += '
'; html += result.ProductionYear || ' '; html += '
'; + + if (result.GameSystem) { + html += '
'; + html += result.GameSystem; + html += '
'; + } html += '
'; } diff --git a/dashboard-ui/scripts/editorsidebar.js b/dashboard-ui/scripts/editorsidebar.js index 1ab0593c93..050784eeeb 100644 --- a/dashboard-ui/scripts/editorsidebar.js +++ b/dashboard-ui/scripts/editorsidebar.js @@ -106,7 +106,7 @@ 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); diff --git a/dashboard-ui/scripts/itemdetailpage.js b/dashboard-ui/scripts/itemdetailpage.js index 7d84c9d8ca..fc4bd6c99a 100644 --- a/dashboard-ui/scripts/itemdetailpage.js +++ b/dashboard-ui/scripts/itemdetailpage.js @@ -35,7 +35,7 @@ $('#editButtonContainer', page).hide(); } - if (MediaPlayer.canPlay(item, user) && item.LocationType !== "Offline" && item.LocationType !== "Virtual") { + if (MediaPlayer.canPlay(item, user)) { var url = MediaPlayer.getPlayUrl(item); diff --git a/dashboard-ui/scripts/libraryreport.js b/dashboard-ui/scripts/libraryreport.js index 6cf6751d9d..df4427283e 100644 --- a/dashboard-ui/scripts/libraryreport.js +++ b/dashboard-ui/scripts/libraryreport.js @@ -6,16 +6,16 @@ SortBy: "SeriesSortName,SortName", SortOrder: "Ascending", Recursive: true, - Fields: "MediaStreams,DateCreated", + Fields: "MediaStreams,DateCreated,Settings", StartIndex: 0, IncludeItemTypes: "Movie" }; - + function getCodecName(stream) { var val = stream.Codec || ''; val = val.toUpperCase(); - + if (val == 'DCA') { return stream.Profile; } @@ -23,7 +23,7 @@ return val; } - function getTableRowsHtml(items, includeParentInfo, includeSubtitles) { + function getTableRowsHtml(items, includeParentInfo, includeSubtitles, includePlayers) { var html = ''; @@ -34,7 +34,10 @@ html += ''; html += ''; - + + if (item.LockData) { + html += ''; + } if (item.IsUnidentified) { html += '
'; } @@ -46,10 +49,13 @@ html += '' + item.SeriesName + ''; } else if (item.Album) { - html += item.Album + '
'; + html += item.Album; } else if (item.AlbumArtist) { - html += item.AlbumArtist + '
'; + html += item.AlbumArtist; + } + else if (item.GameSystem) { + html += item.GameSystem; } else { html += ' '; @@ -123,15 +129,21 @@ } html += ''; + if (includePlayers) { + html += ''; + html += item.Players || ' '; + html += ''; + } + html += ''; - html += (item.MediaStreams || []).filter(function(s) { + html += (item.MediaStreams || []).filter(function (s) { return s.Type != 'Subtitle'; }).map(getCodecName).filter(function (s) { return s; }).join('
'); - + html += ''; if (includeSubtitles) { @@ -142,7 +154,7 @@ }).map(function (s) { - return (s.Language || 'Und') + ' - ' + s.Codec; + return (s.Language || 'und') + ' - ' + s.Codec; }).join('
'); @@ -185,19 +197,23 @@ $('.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 includePlayers = query.IncludeItemTypes == "Game"; if (includeParentInfo) { var parentLabel = "Series"; - + if (query.IncludeItemTypes == "Audio") { parentLabel = "Album"; } else if (query.IncludeItemTypes == "MusicAlbum") { parentLabel = "Artist"; } + else if (query.IncludeItemTypes == "Game") { + parentLabel = "Game System"; + } $('.thParent', page).html(parentLabel).show(); @@ -206,14 +222,20 @@ } if (includeSubtitles) { - $('.thSubtitles', page).show(); } else { $('.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'); $('.btnNextPage', page).on('click', function () { @@ -269,6 +291,9 @@ $('#chkMissingOverview', page).checked(query.HasOverview == false).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 () { @@ -413,6 +438,22 @@ 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 () { var page = this; diff --git a/dashboard-ui/scripts/mediaplayer.js b/dashboard-ui/scripts/mediaplayer.js index cc0732a680..8234fff9a9 100644 --- a/dashboard-ui/scripts/mediaplayer.js +++ b/dashboard-ui/scripts/mediaplayer.js @@ -1011,7 +1011,7 @@ return false; } - if (item.LocationType == "Virtual") { + if (item.LocationType == "Virtual" || item.IsPlaceHolder) { return false; } if (item.Type == "MusicAlbum" || item.Type == "MusicArtist" || item.Type == "MusicGenre") {