diff --git a/dashboard-ui/css/card.css b/dashboard-ui/css/card.css index 2e7ec20095..73d6f2d781 100644 --- a/dashboard-ui/css/card.css +++ b/dashboard-ui/css/card.css @@ -90,8 +90,9 @@ } .visualCardBox-b { - border-radius: 3px; background: rgb(51, 51, 51); + border: 1px solid rgb(31, 31, 31); + border-radius: 3px; } .cardScalable { @@ -130,9 +131,9 @@ right: 0; } -.cardContent:hover .cardImage { - opacity: .5; -} + .cardContent:hover .cardImage { + opacity: .5; + } /*.preview-overlay-container { -moz-border-radius: 2px; diff --git a/dashboard-ui/css/site.css b/dashboard-ui/css/site.css index 93125ee878..e7b24b56b2 100644 --- a/dashboard-ui/css/site.css +++ b/dashboard-ui/css/site.css @@ -489,10 +489,10 @@ h1 .imageLink { .mediaLocationsHeader .ui-btn { position: absolute; - right: -6px; + right: -3px; margin-top: 0 !important; margin-bottom: 0 !important; - top: 6px; + top: 4px; } #ulDirectoryPickerList a { diff --git a/dashboard-ui/episodes.html b/dashboard-ui/episodes.html index 4a4b4e7121..9a743d1260 100644 --- a/dashboard-ui/episodes.html +++ b/dashboard-ui/episodes.html @@ -47,8 +47,9 @@

diff --git a/dashboard-ui/games.html b/dashboard-ui/games.html index 0a967f09e1..cb47b99387 100644 --- a/dashboard-ui/games.html +++ b/dashboard-ui/games.html @@ -38,8 +38,9 @@

diff --git a/dashboard-ui/moviegenres.html b/dashboard-ui/moviegenres.html index c03898b881..3eee92cb35 100644 --- a/dashboard-ui/moviegenres.html +++ b/dashboard-ui/moviegenres.html @@ -35,6 +35,15 @@
+
+ + +
+
diff --git a/dashboard-ui/movies.html b/dashboard-ui/movies.html index e02ef98946..7ac539c548 100644 --- a/dashboard-ui/movies.html +++ b/dashboard-ui/movies.html @@ -49,10 +49,11 @@
diff --git a/dashboard-ui/musicalbumartists.html b/dashboard-ui/musicalbumartists.html index 67ddcd6ae8..5d271c895f 100644 --- a/dashboard-ui/musicalbumartists.html +++ b/dashboard-ui/musicalbumartists.html @@ -43,8 +43,9 @@

diff --git a/dashboard-ui/musicalbums.html b/dashboard-ui/musicalbums.html index 4eea86cc8e..0d9ad9850d 100644 --- a/dashboard-ui/musicalbums.html +++ b/dashboard-ui/musicalbums.html @@ -43,8 +43,9 @@
diff --git a/dashboard-ui/musicartists.html b/dashboard-ui/musicartists.html index a08411e355..95de0f2042 100644 --- a/dashboard-ui/musicartists.html +++ b/dashboard-ui/musicartists.html @@ -42,8 +42,9 @@

diff --git a/dashboard-ui/scripts/episodes.js b/dashboard-ui/scripts/episodes.js index 3d932a7559..3af414d9ed 100644 --- a/dashboard-ui/scripts/episodes.js +++ b/dashboard-ui/scripts/episodes.js @@ -59,11 +59,21 @@ showTitle: true, showParentTitle: true, overlayText: true, - selectionPanel: true, lazy: true, context: 'tv' }); } + else if (view == "PosterCard") { + html += LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "backdrop", + showTitle: true, + showParentTitle: true, + lazy: true, + context: 'tv', + cardLayout: true + }); + } html += pagingHtml; diff --git a/dashboard-ui/scripts/gamespage.js b/dashboard-ui/scripts/gamespage.js index 49e7faa720..fe2b4c2a27 100644 --- a/dashboard-ui/scripts/gamespage.js +++ b/dashboard-ui/scripts/gamespage.js @@ -61,6 +61,17 @@ centerText: true }); } + else if (view == "PosterCard") { + html = LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "auto", + context: 'games', + showTitle: true, + showParentTitle: true, + cardLayout: true + }); + } + html += pagingHtml; diff --git a/dashboard-ui/scripts/gamesrecommendedpage.js b/dashboard-ui/scripts/gamesrecommendedpage.js index 3cb74e28d0..caf08e475f 100644 --- a/dashboard-ui/scripts/gamesrecommendedpage.js +++ b/dashboard-ui/scripts/gamesrecommendedpage.js @@ -10,7 +10,7 @@ var options = { IncludeItemTypes: "Game", - Limit: 8, + Limit: 18, Fields: "PrimaryImageAspectRatio", ParentId: parentId }; @@ -33,7 +33,7 @@ SortBy: "DatePlayed", SortOrder: "Descending", MediaTypes: "Game", - Limit: 8, + Limit: 18, Recursive: true, Filters: "IsPlayed", Fields: "ItemCounts,AudioInfo,PrimaryImageAspectRatio", diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index eb3bf9bd09..c3c877db4d 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -1217,7 +1217,7 @@ cssClass += ' itemWithAction'; } - html += ''; + html += ''; var style = ""; @@ -1250,7 +1250,7 @@ html += '
'; html += '
'; - html += ''; + html += ''; // cardScalable html += '
'; @@ -1304,7 +1304,7 @@ // cardBox html += '
'; - html += ""; + html += "
"; } @@ -1317,6 +1317,12 @@ html += '
'; + if (options.cardLayout) { + html += '
'; + html += ''; + html += "
"; + } + var name = LibraryBrowser.getPosterViewDisplayName(item, options.displayAsSpecial); if (!imgUrl && !options.showTitle) { @@ -1346,6 +1352,19 @@ lines.push(itemCountHtml); } + if (options.showSongCount) { + + var songLine = ''; + + if (item.SongCount) { + songLine = item.SongCount == 1 ? + Globalize.translate('ValueOneSong') : + Globalize.translate('ValueSongCount', item.SongCount); + } + + lines.push(songLine); + } + if (options.showPremiereDate && item.PremiereDate) { try { @@ -1363,6 +1382,18 @@ lines.push(item.ProductionYear || ''); } + if (options.showSeriesYear) { + + if (item.Status == "Continuing") { + + lines.push(Globalize.translate('ValueSeriesYearToPresent', item.ProductionYear || '')); + + } else { + lines.push(item.ProductionYear || ''); + } + + } + html += LibraryBrowser.getCardTextLines(lines, cssClass, !options.overlayText); if (options.overlayText) { diff --git a/dashboard-ui/scripts/librarylist.js b/dashboard-ui/scripts/librarylist.js index 637a3c5e8e..8c059946a0 100644 --- a/dashboard-ui/scripts/librarylist.js +++ b/dashboard-ui/scripts/librarylist.js @@ -319,7 +319,7 @@ var displayContextItem = card; if ($(card).hasClass('listviewMenuButton')) { - card = $(card).parents('.listItem')[0]; + card = $(card).parents('.listItem,.card')[0]; } var itemId = card.getAttribute('data-itemid'); @@ -342,7 +342,7 @@ html += '
'; @@ -281,7 +281,7 @@ var msg = Globalize.translate('MessageAreYouSureYouWishToRemoveMediaFolder'); if (locations.length) { - msg += "

"+Globalize.translate("MessageTheFollowingLocationWillBeRemovedFromLibrary")+"

"; + msg += "

" + Globalize.translate("MessageTheFollowingLocationWillBeRemovedFromLibrary") + "

"; msg += locations.join("
"); } diff --git a/dashboard-ui/scripts/mediaplayer-video.js b/dashboard-ui/scripts/mediaplayer-video.js index 2fbc906115..3deb5750ae 100644 --- a/dashboard-ui/scripts/mediaplayer-video.js +++ b/dashboard-ui/scripts/mediaplayer-video.js @@ -1119,7 +1119,8 @@ html += ''; } - var mp4BeforeWebm = self.getVideoTranscodingExtension() != '.webm'; + // Live streams seem to function better with mp4 + var mp4BeforeWebm = self.getVideoTranscodingExtension() != '.webm' || !mediaSource.RunTimeTicks; if (mp4BeforeWebm) { html += ''; diff --git a/dashboard-ui/scripts/moviegenres.js b/dashboard-ui/scripts/moviegenres.js index 2ee9a04068..84b9eb5725 100644 --- a/dashboard-ui/scripts/moviegenres.js +++ b/dashboard-ui/scripts/moviegenres.js @@ -1,5 +1,7 @@ (function ($, document) { + var view = LibraryBrowser.getDefaultItemsView('Thumb', 'Thumb'); + // The base query options var query = { @@ -39,14 +41,41 @@ updateFilterControls(page); - html = LibraryBrowser.getPosterViewHtml({ - items: result.Items, - shape: "backdrop", - preferThumb: true, - context: 'movies', - showItemCounts: true, - centerText: true - }); + if (view == "Thumb") { + html = LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "backdrop", + preferThumb: true, + context: 'movies', + showItemCounts: true, + centerText: true + }); + $('.itemsContainer', page).removeClass('timelineItemsContainer'); + } + else if (view == "ThumbCard") { + + html = LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "backdrop", + preferThumb: true, + context: 'movies', + showItemCounts: true, + cardLayout: true, + showTitle: true + }); + $('.itemsContainer', page).removeClass('timelineItemsContainer'); + } + else if (view == "Poster") { + html = LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "portrait", + context: 'movies', + centerText: true, + showItemCounts: true, + lazy: true + }); + $('.itemsContainer', page).removeClass('timelineItemsContainer'); + } html += pagingHtml; @@ -71,6 +100,7 @@ function updateFilterControls(page) { $('#selectPageSize', page).val(query.Limit).selectmenu('refresh'); + $('#selectView', page).val(view).selectmenu('refresh'); } $(document).on('pageinit', "#movieGenresPage", function () { @@ -100,8 +130,27 @@ reloadItems(page); }); + $('#selectView', this).on('change', function () { + + view = this.value; + + if (view == "Timeline") { + + query.SortBy = "PremiereDate"; + query.SortOrder = "Descending"; + query.StartIndex = 0; + $('#radioPremiereDate', page)[0].click(); + + } else { + reloadItems(page); + } + + LibraryBrowser.saveViewSetting(getSavedQueryKey(), view); + }); + }).on('pagebeforeshow', "#movieGenresPage", function () { + var page = this; query.ParentId = LibraryMenu.getTopParentId(); var limit = LibraryBrowser.getDefaultPageSize(); @@ -112,9 +161,18 @@ query.StartIndex = 0; } - LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query); + var viewkey = getSavedQueryKey(); - reloadItems(this); + LibraryBrowser.loadSavedQueryValues(viewkey, query); + + LibraryBrowser.getSavedViewSetting(viewkey).done(function (val) { + + if (val) { + $('#selectView', page).val(val).selectmenu('refresh').trigger('change'); + } else { + reloadItems(page); + } + }); }).on('pageshow', "#movieGenresPage", function () { diff --git a/dashboard-ui/scripts/movies.js b/dashboard-ui/scripts/movies.js index 83358b9d91..2bfcec348a 100644 --- a/dashboard-ui/scripts/movies.js +++ b/dashboard-ui/scripts/movies.js @@ -50,13 +50,26 @@ shape: "backdrop", preferThumb: true, context: 'movies', - selectionPanel: true, lazy: true, overlayText: true, showTitle: false }); $('.itemsContainer', page).removeClass('timelineItemsContainer'); } + else if (view == "ThumbCard") { + + html = LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "backdrop", + preferThumb: true, + context: 'movies', + lazy: true, + showTitle: true, + cardLayout: true, + showYear: true + }); + $('.itemsContainer', page).removeClass('timelineItemsContainer'); + } else if (view == "Banner") { html = LibraryBrowser.getPosterViewHtml({ @@ -84,7 +97,6 @@ context: 'movies', showTitle: false, centerText: true, - selectionPanel: true, lazy: true, overlayText: true }); @@ -98,7 +110,6 @@ showTitle: true, timeline: true, centerText: true, - selectionPanel: true, lazy: true }); $('.itemsContainer', page).addClass('timelineItemsContainer'); diff --git a/dashboard-ui/scripts/musicalbumartists.js b/dashboard-ui/scripts/musicalbumartists.js index 39da9b2f91..2d87da7349 100644 --- a/dashboard-ui/scripts/musicalbumartists.js +++ b/dashboard-ui/scripts/musicalbumartists.js @@ -60,10 +60,23 @@ showTitle: true, coverImage: true, centerText: true, - lazy: true, - selectionPanel: true + lazy: true }); } + else if (view == "PosterCard") { + + html = LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "square", + context: 'music', + showTitle: true, + coverImage: true, + lazy: true, + cardLayout: true, + showSongCount: true + }); + $('.itemsContainer', page).removeClass('timelineItemsContainer'); + } html += pagingHtml; diff --git a/dashboard-ui/scripts/musicalbums.js b/dashboard-ui/scripts/musicalbums.js index 6c7e349e1f..4dbc55138b 100644 --- a/dashboard-ui/scripts/musicalbums.js +++ b/dashboard-ui/scripts/musicalbums.js @@ -49,8 +49,21 @@ context: 'music', showTitle: true, showParentTitle: true, + lazy: true + }); + $('.itemsContainer', page).removeClass('timelineItemsContainer'); + } + else if (view == "PosterCard") { + + html = LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "square", + context: 'music', + showTitle: true, + coverImage: true, + showParentTitle: true, lazy: true, - selectionPanel: true + cardLayout: true }); $('.itemsContainer', page).removeClass('timelineItemsContainer'); } @@ -71,8 +84,7 @@ showTitle: true, showParentTitle: true, timeline: true, - lazy: true, - selectionPanel: true + lazy: true }); $('.itemsContainer', page).addClass('timelineItemsContainer'); } diff --git a/dashboard-ui/scripts/musicartists.js b/dashboard-ui/scripts/musicartists.js index f4703cd09d..4229f6e1ff 100644 --- a/dashboard-ui/scripts/musicartists.js +++ b/dashboard-ui/scripts/musicartists.js @@ -60,10 +60,23 @@ showTitle: true, coverImage: true, centerText: true, - lazy: true, - selectionPanel: true + lazy: true }); } + else if (view == "PosterCard") { + + html = LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "square", + context: 'music', + showTitle: true, + coverImage: true, + lazy: true, + cardLayout: true, + showSongCount: true + }); + $('.itemsContainer', page).removeClass('timelineItemsContainer'); + } html += pagingHtml; diff --git a/dashboard-ui/scripts/musicgenres.js b/dashboard-ui/scripts/musicgenres.js index 79cd23d60b..823a38e254 100644 --- a/dashboard-ui/scripts/musicgenres.js +++ b/dashboard-ui/scripts/musicgenres.js @@ -47,8 +47,7 @@ context: 'music', showItemCounts: true, centerText: true, - lazy: true, - selectionPanel: true + lazy: true }); html += pagingHtml; diff --git a/dashboard-ui/scripts/tvgenres.js b/dashboard-ui/scripts/tvgenres.js index 6301e25060..a0edc2057e 100644 --- a/dashboard-ui/scripts/tvgenres.js +++ b/dashboard-ui/scripts/tvgenres.js @@ -1,5 +1,7 @@ (function ($, document) { + var view = LibraryBrowser.getDefaultItemsView('Thumb', 'Thumb'); + // The base query options var query = { @@ -39,17 +41,41 @@ updateFilterControls(page); - html += LibraryBrowser.getPosterViewHtml({ - items: result.Items, - shape: "backdrop", - showTitle: false, - context: 'tv', - preferThumb: true, - showItemCounts: true, - centerText: true, - lazy: true - - }); + if (view == "Thumb") { + html = LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "backdrop", + preferThumb: true, + context: 'tv', + showItemCounts: true, + centerText: true + }); + $('.itemsContainer', page).removeClass('timelineItemsContainer'); + } + else if (view == "ThumbCard") { + + html = LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "backdrop", + preferThumb: true, + context: 'tv', + showItemCounts: true, + cardLayout: true, + showTitle: true + }); + $('.itemsContainer', page).removeClass('timelineItemsContainer'); + } + else if (view == "Poster") { + html = LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "portrait", + context: 'tv', + centerText: true, + showItemCounts: true, + lazy: true + }); + $('.itemsContainer', page).removeClass('timelineItemsContainer'); + } html += pagingHtml; @@ -89,6 +115,7 @@ }).checkboxradio('refresh'); $('#selectPageSize', page).val(query.Limit).selectmenu('refresh'); + $('#selectView', page).val(view).selectmenu('refresh'); } $(document).on('pageinit', "#tvGenresPage", function () { @@ -118,9 +145,28 @@ reloadItems(page); }); + $('#selectView', this).on('change', function () { + + view = this.value; + + if (view == "Timeline") { + + query.SortBy = "PremiereDate"; + query.SortOrder = "Descending"; + query.StartIndex = 0; + $('#radioPremiereDate', page)[0].click(); + + } else { + reloadItems(page); + } + + LibraryBrowser.saveViewSetting(getSavedQueryKey(), view); + }); + }).on('pagebeforeshow', "#tvGenresPage", function () { query.ParentId = LibraryMenu.getTopParentId(); + var page = this; var limit = LibraryBrowser.getDefaultPageSize(); @@ -130,9 +176,17 @@ query.StartIndex = 0; } - LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query); + var viewkey = getSavedQueryKey(); + LibraryBrowser.loadSavedQueryValues(viewkey, query); - reloadItems(this); + LibraryBrowser.getSavedViewSetting(viewkey).done(function (val) { + + if (val) { + $('#selectView', page).val(val).selectmenu('refresh').trigger('change'); + } else { + reloadItems(page); + } + }); }).on('pageshow', "#tvGenresPage", function () { diff --git a/dashboard-ui/scripts/tvshows.js b/dashboard-ui/scripts/tvshows.js index 533b5d7904..6c1ab87424 100644 --- a/dashboard-ui/scripts/tvshows.js +++ b/dashboard-ui/scripts/tvshows.js @@ -53,6 +53,20 @@ $('.itemsContainer', page).removeClass('timelineItemsContainer'); } + else if (view == "ThumbCard") { + + html = LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "backdrop", + preferThumb: true, + context: 'tv', + lazy: true, + cardLayout: true, + showTitle: true, + showSeriesYear: true + }); + $('.itemsContainer', page).removeClass('timelineItemsContainer'); + } else if (view == "Banner") { html = LibraryBrowser.getPosterViewHtml({ diff --git a/dashboard-ui/scripts/userprofilespage.js b/dashboard-ui/scripts/userprofilespage.js index d751b3eb1c..fc1b1bc440 100644 --- a/dashboard-ui/scripts/userprofilespage.js +++ b/dashboard-ui/scripts/userprofilespage.js @@ -139,7 +139,6 @@ html += '
'; html += '
'; - html += ''; html += "
"; diff --git a/dashboard-ui/tvgenres.html b/dashboard-ui/tvgenres.html index 6473757c94..ded1301ad1 100644 --- a/dashboard-ui/tvgenres.html +++ b/dashboard-ui/tvgenres.html @@ -33,6 +33,15 @@
+
+ + +
+
diff --git a/dashboard-ui/tvshows.html b/dashboard-ui/tvshows.html index 92f4fbbe65..90e5cf02f4 100644 --- a/dashboard-ui/tvshows.html +++ b/dashboard-ui/tvshows.html @@ -39,10 +39,11 @@