diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index 42004a3ad1..6d333b1688 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -149,6 +149,9 @@ if (item.Type == "Series") { return "tvseries.html?id=" + item.Id; } + if (item.Type == "Season") { + return "tvseason.html?id=" + item.Id; + } if (item.Type == "BoxSet") { return "boxset.html?id=" + item.Id; } diff --git a/dashboard-ui/scripts/medialibrarypage.js b/dashboard-ui/scripts/medialibrarypage.js index 758fe67ee4..f98e4071cf 100644 --- a/dashboard-ui/scripts/medialibrarypage.js +++ b/dashboard-ui/scripts/medialibrarypage.js @@ -4,17 +4,15 @@ MediaLibraryPage.lastVirtualFolderName = ""; - MediaLibraryPage.reloadLibrary(); + MediaLibraryPage.reloadLibrary(this); }, - reloadLibrary: function () { + reloadLibrary: function (page) { Dashboard.showLoadingMsg(); var userId = getParameterByName("userId"); - var page = $.mobile.activePage; - if (userId) { $('#userProfileNavigation', page).show(); @@ -28,8 +26,11 @@ if (user.Configuration.UseCustomLibrary) { - ApiClient.getVirtualFolders(userId).done(MediaLibraryPage.reloadVirtualFolders); - $(".editing_default").hide(); + ApiClient.getVirtualFolders(userId).done(function (result) { + MediaLibraryPage.reloadVirtualFolders(page, result); + }); + + $(".editing_default", page).hide(); $('#divMediaLibrary', page).show(); } else { $('#divMediaLibrary', page).hide(); @@ -41,7 +42,9 @@ } else { $('#userProfileNavigation', page).hide(); - ApiClient.getVirtualFolders().done(MediaLibraryPage.reloadVirtualFolders); + ApiClient.getVirtualFolders().done(function(result) { + MediaLibraryPage.reloadVirtualFolders(page, result); + }); $('#fldUseDefaultLibrary', page).hide(); $('#divMediaLibrary', page).show(); @@ -49,9 +52,7 @@ } }, - reloadVirtualFolders: function (virtualFolders) { - - var page = $.mobile.activePage; + reloadVirtualFolders: function (page, virtualFolders) { if (virtualFolders) { MediaLibraryPage.virtualFolders = virtualFolders; @@ -113,14 +114,17 @@ Dashboard.showLoadingMsg(); var userId = getParameterByName("userId"); + var page = $.mobile.activePage; ApiClient.getUser(userId).done(function (user) { user.Configuration.UseCustomLibrary = !useDefaultLibrary; - ApiClient.updateUser(user).done(MediaLibraryPage.reloadLibrary); + ApiClient.updateUser(user).done(function() { + MediaLibraryPage.reloadLibrary(page); + }); - $(".editing_default").hide(); + $(".editing_default", page).hide(); }); }, @@ -266,7 +270,7 @@ $('#popupEnterText', page).popup("close"); $('#popupDirectoryPicker', page).popup("close"); - MediaLibraryPage.reloadLibrary(); + MediaLibraryPage.reloadLibrary(page); } }; diff --git a/dashboard-ui/scripts/tvseason.js b/dashboard-ui/scripts/tvseason.js new file mode 100644 index 0000000000..85048c6775 --- /dev/null +++ b/dashboard-ui/scripts/tvseason.js @@ -0,0 +1,159 @@ +(function ($, document, LibraryBrowser, window) { + + var currentItem; + + function reload(page) { + + var id = getParameterByName('id'); + + Dashboard.showLoadingMsg(); + + ApiClient.getItem(Dashboard.getCurrentUserId(), id).done(function (item) { + + currentItem = item; + + var name = item.Name; + + $('#itemImage', page).html(LibraryBrowser.getDetailImageHtml(item)); + + Dashboard.setPageTitle(name); + + $('#itemName', page).html(name); + + setInitialCollapsibleState(page, item); + renderDetails(page, item); + + if (LibraryBrowser.shouldDisplayGallery(item)) { + $('#galleryCollapsible', page).show(); + } else { + $('#galleryCollapsible', page).hide(); + } + + Dashboard.hideLoadingMsg(); + }); + } + + function setInitialCollapsibleState(page, item) { + + if (!item.People || !item.People.length) { + $('#castCollapsible', page).hide(); + } else { + $('#castCollapsible', page).show(); + } + } + + function renderDetails(page, item) { + + if (item.Taglines && item.Taglines.length) { + $('#itemTagline', page).html(item.Taglines[0]).show(); + } else { + $('#itemTagline', page).hide(); + } + + if (item.Overview || item.OverviewHtml) { + var overview = item.OverviewHtml || item.Overview; + + $('#itemOverview', page).html(overview).show(); + $('#itemOverview a').each(function () { + $(this).attr("target", "_blank"); + }); + } else { + $('#itemOverview', page).hide(); + } + + if (item.CommunityRating) { + $('#itemCommunityRating', page).html(LibraryBrowser.getStarRatingHtml(item)).show().attr('title', item.CommunityRating); + } else { + $('#itemCommunityRating', page).hide(); + } + + $('#itemMiscInfo', page).html(LibraryBrowser.getMiscInfoHtml(item)); + + LibraryBrowser.renderGenres($('#itemGenres', page), item); + LibraryBrowser.renderStudios($('#itemStudios', page), item); + renderUserDataIcons(page, item); + LibraryBrowser.renderLinks($('#itemLinks', page), item); + } + + function renderUserDataIcons(page, item) { + $('#itemRatings', page).html(LibraryBrowser.getUserDataIconsHtml(item)); + } + + function renderSeasons(page) { + + ApiClient.getItems(Dashboard.getCurrentUserId(), { + + ParentId: getParameterByName('id'), + SortBy: "SortName", + Fields: "PrimaryImageAspectRatio,ItemCounts,DisplayMediaType,DateCreated,UserData" + + }).done(function (result) { + + var html = LibraryBrowser.getPosterDetailViewHtml({ + items: result.Items, + useAverageAspectRatio: true + }); + + $('#episodesContent', page).html(html); + }); + } + + function renderGallery(page, item) { + + var html = LibraryBrowser.getGalleryHtml(item); + + $('#galleryContent', page).html(html).trigger('create'); + } + + function renderCast(page, item) { + var html = ''; + + var casts = item.People || []; + + for (var i = 0, length = casts.length; i < length; i++) { + + var cast = casts[i]; + + html += LibraryBrowser.createCastImage(cast); + } + + $('#castContent', page).html(html); + } + + $(document).on('pageshow', "#tvSeasonPage", function () { + + var page = this; + + reload(page); + + $('#episodesCollapsible', page).on('expand.lazyload', function () { + + renderSeasons(page); + + $(this).off('expand.lazyload'); + }); + + $('#castCollapsible', page).on('expand.lazyload', function () { + renderCast(page, currentItem); + + $(this).off('expand.lazyload'); + }); + + $('#galleryCollapsible', page).on('expand.lazyload', function () { + + renderGallery(page, currentItem); + + $(this).off('expand.lazyload'); + }); + + }).on('pagehide', "#tvSeasonPage", function () { + + currentItem = null; + var page = this; + + $('#episodesCollapsible', page).off('expand.lazyload'); + $('#castCollapsible', page).off('expand.lazyload'); + $('#galleryCollapsible', page).off('expand.lazyload'); + }); + +})(jQuery, document, LibraryBrowser, window); diff --git a/dashboard-ui/scripts/tvseries.js b/dashboard-ui/scripts/tvseries.js index 4311623982..b34efe9ac3 100644 --- a/dashboard-ui/scripts/tvseries.js +++ b/dashboard-ui/scripts/tvseries.js @@ -84,14 +84,14 @@ ApiClient.getItems(Dashboard.getCurrentUserId(), { ParentId: getParameterByName('id'), - SortBy: "SortName" + SortBy: "SortName", + Fields: "PrimaryImageAspectRatio,ItemCounts,DisplayMediaType,DateCreated,UserData" }).done(function(result) { var html = LibraryBrowser.getPosterDetailViewHtml({ items: result.Items, - useAverageAspectRatio: true, - Fields: "PrimaryImageAspectRatio,ItemCounts,DisplayMediaType,DateCreated,UserData" + useAverageAspectRatio: true }); $('#seasonsContent', page).html(html); @@ -120,11 +120,7 @@ $('#castContent', page).html(html); } - $(document).on('pageinit', "#tvSeriesPage", function () { - - var page = this; - - }).on('pageshow', "#tvSeriesPage", function () { + $(document).on('pageshow', "#tvSeriesPage", function () { var page = this; @@ -160,12 +156,4 @@ $('#galleryCollapsible', page).off('expand.lazyload'); }); - function tvSeriesPage() { - - var self = this; - - } - - window.TvSeriesPage = new tvSeriesPage(); - })(jQuery, document, LibraryBrowser, window); diff --git a/dashboard-ui/tvseason.html b/dashboard-ui/tvseason.html new file mode 100644 index 0000000000..bd6673a99d --- /dev/null +++ b/dashboard-ui/tvseason.html @@ -0,0 +1,65 @@ + + + + + + +
+

+ TV Shows

+ +
+ + + +
+ +

+ +
+
+
+
+
+ +
+ +

+

+

+

+

+ +

+

+ +
+
+ +
+

Episodes

+
+
+
+

Trailers

+
+
+
+

Cast & Crew

+
+
+
+

Gallery

+
+
+ +
+
+ +