From 3ca4d1ea8c62a4f26e9ab30d460c03ccc3926e94 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 10 Apr 2013 13:36:34 -0400 Subject: [PATCH] consolidate itembyname detail js --- dashboard-ui/boxset.html | 6 +- dashboard-ui/itembynamedetails.html | 2 +- dashboard-ui/scripts/boxset.js | 320 ++++--------------- dashboard-ui/scripts/itembynamedetailpage.js | 212 +++--------- dashboard-ui/scripts/librarybrowser.js | 34 +- dashboard-ui/scripts/tvseries.js | 9 - 6 files changed, 134 insertions(+), 449 deletions(-) diff --git a/dashboard-ui/boxset.html b/dashboard-ui/boxset.html index 5611dbe272..cb0503b356 100644 --- a/dashboard-ui/boxset.html +++ b/dashboard-ui/boxset.html @@ -5,8 +5,8 @@
-

- Movies

+

+ Movies

@@ -38,7 +38,7 @@

- +
diff --git a/dashboard-ui/itembynamedetails.html b/dashboard-ui/itembynamedetails.html index 1e63164425..25749cd6ec 100644 --- a/dashboard-ui/itembynamedetails.html +++ b/dashboard-ui/itembynamedetails.html @@ -20,7 +20,7 @@

- +
diff --git a/dashboard-ui/scripts/boxset.js b/dashboard-ui/scripts/boxset.js index c5c3301bda..f398887d8f 100644 --- a/dashboard-ui/scripts/boxset.js +++ b/dashboard-ui/scripts/boxset.js @@ -1,127 +1,28 @@ -var BoxsetPage = { +(function ($, document, LibraryBrowser) { - onPageShow: function () { + function reload(page) { - BoxsetPage.reload(); - }, - - onPageHide: function () { - - BoxsetPage.item = null; - }, - - reload: function () { var id = getParameterByName('id'); Dashboard.showLoadingMsg(); - ApiClient.getItem(Dashboard.getCurrentUserId(), id).done(BoxsetPage.renderItem); - }, + ApiClient.getItem(Dashboard.getCurrentUserId(), id).done(function (item) { - renderItem: function (item) { + var name = item.Name; - BoxsetPage.item = item; + $('#itemImage', page).html(LibraryBrowser.getDetailImageHtml(item)); - var page = $.mobile.activePage; + Dashboard.setPageTitle(name); - BoxsetPage.item = item; + $('#itemName', page).html(name); - var name = item.Name; + renderDetails(page, item); - if (item.IndexNumber != null) { - name = item.IndexNumber + " - " + name; - } - if (item.ParentIndexNumber != null) { - name = item.ParentIndexNumber + "." + name; - } + Dashboard.hideLoadingMsg(); + }); + } - Dashboard.setPageTitle(name); - - BoxsetPage.renderImage(item); - BoxsetPage.renderOverviewBlock(item); - - $('#itemName', page).html(name); - - if (item.SeriesName || item.Album) { - var series_name = item.SeriesName || item.Album; - $('#seriesName', page).html(series_name).show(); - } - - BoxsetPage.renderFav(item); - LibraryBrowser.renderLinks(item); - - Dashboard.hideLoadingMsg(); - }, - - renderImage: function (item) { - - var page = $.mobile.activePage; - - var imageTags = item.ImageTags || {}; - - var html = ''; - - var url; - var useBackgroundColor; - - if (imageTags.Primary) { - - url = ApiClient.getImageUrl(item.Id, { - type: "Primary", - width: 800, - tag: item.ImageTags.Primary - }); - } - else if (item.BackdropImageTags && item.BackdropImageTags.length) { - - url = ApiClient.getImageUrl(item.Id, { - type: "Backdrop", - width: 800, - tag: item.BackdropImageTags[0] - }); - } - else if (imageTags.Thumb) { - - url = ApiClient.getImageUrl(item.Id, { - type: "Thumb", - width: 800, - tag: item.ImageTags.Thumb - }); - } - else if (imageTags.Disc) { - - url = ApiClient.getImageUrl(item.Id, { - type: "Disc", - width: 800, - tag: item.ImageTags.Disc - }); - } - else if (item.MediaType == "Audio") { - url = "css/images/items/detail/audio.png"; - useBackgroundColor = true; - } - else if (item.MediaType == "Game") { - url = "css/images/items/detail/game.png"; - useBackgroundColor = true; - } - else { - url = "css/images/items/detail/video.png"; - useBackgroundColor = true; - } - - if (url) { - - var style = useBackgroundColor ? "background-color:" + LibraryBrowser.getMetroColor(item.Id) + ";" : ""; - - html += ""; - } - - $('#itemImage', page).html(html); - }, - - renderOverviewBlock: function (item) { - - var page = $.mobile.activePage; + function renderDetails(page, item) { if (item.Taglines && item.Taglines.length) { $('#itemTagline', page).html(item.Taglines[0]).show(); @@ -146,42 +47,50 @@ $('#itemCommunityRating', page).hide(); } - var miscInfo = []; + $('#itemMiscInfo', page).html(LibraryBrowser.getMiscInfoHtml(item)); - if (item.ProductionYear) { - miscInfo.push(item.ProductionYear); + renderGenres(page, item); + renderStudios(page, item); + renderUserDataIcons(page, item); + renderLinks(page, item); + } + + function renderLinks(page, item) { + if (item.ProviderIds) { + + $('#itemLinks', page).html(LibraryBrowser.getLinksHtml(item)); + + } else { + $('#itemLinks', page).hide(); } + } - if (item.OfficialRating) { - miscInfo.push(item.OfficialRating); + function renderStudios(page, item) { + + if (item.Studios && item.Studios.length) { + + var elem = $('#itemStudios', page).show(); + + var html = 'Studios:  '; + + for (var i = 0, length = item.Studios.length; i < length; i++) { + + if (i > 0) { + html += '  /  '; + } + + html += '' + item.Studios[i] + ''; + } + + elem.html(html).trigger('create'); + + + } else { + $('#itemStudios', page).hide(); } + } - if (item.RunTimeTicks) { - - var minutes = item.RunTimeTicks / 600000000; - - minutes = minutes || 1; - - miscInfo.push(parseInt(minutes) + "min"); - } - - if (item.DisplayMediaType) { - miscInfo.push(item.DisplayMediaType); - } - - if (item.VideoFormat && item.VideoFormat !== 'Standard') { - miscInfo.push(item.VideoFormat); - } - - $('#itemMiscInfo', page).html(miscInfo.join('     ')); - - BoxsetPage.renderGenres(item); - BoxsetPage.renderStudios(item); - }, - - renderGenres: function (item) { - - var page = $.mobile.activePage; + function renderGenres(page, item) { if (item.Genres && item.Genres.length) { var elem = $('#itemGenres', page).show(); @@ -203,124 +112,15 @@ } else { $('#itemGenres', page).hide(); } - }, - - renderStudios: function (item) { - - var page = $.mobile.activePage; - - if (item.Studios && item.Studios.length) { - var elem = $('#itemStudios', page).show(); - - var html = 'Studios:  '; - - for (var i = 0, length = item.Studios.length; i < length; i++) { - - if (i > 0) { - html += '  /  '; - } - - html += '' + item.Studios[i] + ''; - } - - elem.html(html).trigger('create'); - - - } else { - $('#itemStudios', page).hide(); - } - }, - - renderFav: function (item) { - var html = ''; - var page = $.mobile.activePage; - - var userData = item.UserData || {}; - - if (typeof userData.Likes == "undefined") { - html += 'Dislike'; - html += 'Like'; - } else if (userData.Likes) { - html += 'Dislike'; - html += 'Liked'; - } else { - html += 'Dislike'; - html += 'Like'; - } - - if (userData.IsFavorite) { - html += 'Favorite'; - } else { - html += 'Favorite'; - } - - $('#itemRatings', page).html(html); - }, - - setFavorite: function () { - var item = BoxsetPage.item; - - item.UserData = item.UserData || {}; - - var setting = !item.UserData.IsFavorite; - item.UserData.IsFavorite = setting; - - ApiClient.updateFavoriteStatus(Dashboard.getCurrentUserId(), item.Id, setting); - - BoxsetPage.renderFav(item); - }, - - setLike: function () { - - var item = BoxsetPage.item; - - item.UserData = item.UserData || {}; - - item.UserData.Likes = true; - - ApiClient.updateUserItemRating(Dashboard.getCurrentUserId(), item.Id, true); - - BoxsetPage.renderFav(item); - }, - - clearLike: function () { - - var item = BoxsetPage.item; - - item.UserData = item.UserData || {}; - - item.UserData.Likes = undefined; - - ApiClient.clearUserItemRating(Dashboard.getCurrentUserId(), item.Id); - - BoxsetPage.renderFav(item); - }, - - setDislike: function () { - var item = BoxsetPage.item; - - item.UserData = item.UserData || {}; - - item.UserData.Likes = false; - - ApiClient.updateUserItemRating(Dashboard.getCurrentUserId(), item.Id, false); - - BoxsetPage.renderFav(item); - }, - - setPlayed: function () { - var item = BoxsetPage.item; - - item.UserData = item.UserData || {}; - - var setting = !item.UserData.Played; - item.UserData.Played = setting; - - ApiClient.updatePlayedStatus(Dashboard.getCurrentUserId(), item.Id, setting); - - BoxsetPage.renderFav(item); } -}; + function renderUserDataIcons(page, item) { + $('#itemRatings', page).html(LibraryBrowser.getUserDataIconsHtml(item)); + } -$(document).on('pageshow', "#boxsetPage", BoxsetPage.onPageShow).on('pagehide', "#boxsetPage", BoxsetPage.onPageHide); + $(document).on('pageshow', "#boxsetPage", function () { + reload(this); + }); + + +})(jQuery, document, LibraryBrowser); \ No newline at end of file diff --git a/dashboard-ui/scripts/itembynamedetailpage.js b/dashboard-ui/scripts/itembynamedetailpage.js index bc07715ac3..c0ed3c70a4 100644 --- a/dashboard-ui/scripts/itembynamedetailpage.js +++ b/dashboard-ui/scripts/itembynamedetailpage.js @@ -1,206 +1,76 @@ -var ItemByNameDetailPage = { +(function ($, document, LibraryBrowser) { - onPageShow: function () { - ItemByNameDetailPage.reload(); - }, - - reload: function () { + function reload(page) { Dashboard.showLoadingMsg(); + var getItemPromise; + var person = getParameterByName('person'); if (person) { - ApiClient.getPerson(person).done(ItemByNameDetailPage.renderItem); - return; + getItemPromise = ApiClient.getPerson(person); } - var studio = getParameterByName('studio'); - - if (studio) { - ApiClient.getStudio(studio).done(ItemByNameDetailPage.renderItem); - return; + else if (getParameterByName('studio')) { + getItemPromise = ApiClient.getStudio(getParameterByName('studio')); + } + else if (getParameterByName('genre')) { + getItemPromise = ApiClient.getGenre(getParameterByName('genre')); + } else { + throw new Error('Invalid request'); } - var genre = getParameterByName('genre'); + getItemPromise.done(function (item) { - if (genre) { - ApiClient.getGenre(genre).done(ItemByNameDetailPage.renderItem); - return; - } - }, + var name = item.Name; - renderItem: function (item) { + $('#itemImage', page).html(LibraryBrowser.getDetailImageHtml(item)); - var page = $.mobile.activePage; - var name = item.Name; + Dashboard.setPageTitle(name); - Dashboard.setPageTitle(name); + $('#itemName', page).html(name); - ItemByNameDetailPage.item = item; + renderDetails(page, item); - ItemByNameDetailPage.renderImage(item); - ItemByNameDetailPage.renderOverviewBlock(item); - ItemByNameDetailPage.renderFav(item); - LibraryBrowser.renderLinks(item); + Dashboard.hideLoadingMsg(); + }); + } - $('#itemName', page).html(name); - - Dashboard.hideLoadingMsg(); - }, - - renderImage: function (item) { - - var page = $.mobile.activePage; - var imageTags = item.ImageTags || {}; - var html = ''; - var url; - var useBackgroundColor; - - if (item.Type == "Person") { - if (imageTags.Primary) { - - url = ApiClient.getPersonImageUrl(item.Name, { - width: 800, - tag: imageTags.Primary, - type: "primary" - }); - - } else { - url = 'css/images/items/list/person.png'; - useBackgroundColor = true; - } - }else if (item.Type == "Studio") { - if (imageTags.Primary) { - - url = ApiClient.getStudioImageUrl(item.Name, { - width: 800, - tag: item.PrimaryImageTag, - type: "primary" - }); - - } else { - url = 'css/images/items/detail/video.png'; - useBackgroundColor = true; - } - }else if (item.Type == "Genre") { - if (imageTags.Primary) { - - url = ApiClient.getGenreImageUrl(item.Name, { - width: 800, - tag: item.PrimaryImageTag, - type: "primary" - }); - - } else { - url = 'css/images/items/detail/video.png'; - useBackgroundColor = true; - } - } - - if (url) { - var style = useBackgroundColor ? "background-color:" + LibraryBrowser.getMetroColor(item.Id) + ";" : ""; - - html += ""; - } - - $('#itemImage', page).html(html); - }, - - renderOverviewBlock: function (item) { - - var page = $.mobile.activePage; + function renderDetails(page, item) { if (item.Overview || item.OverviewHtml) { var overview = item.OverviewHtml || item.Overview; $('#itemOverview', page).html(overview).show(); - $('#itemOverview a').each(function(){ - $(this).attr("target","_blank"); + $('#itemOverview a').each(function () { + $(this).attr("target", "_blank"); }); } else { $('#itemOverview', page).hide(); } - }, + renderUserDataIcons(page, item); + renderLinks(page, item); + } - renderFav: function (item) { - var html = ''; - var page = $.mobile.activePage; + function renderLinks(page, item) { + if (item.ProviderIds) { - var userData = item.UserData || {}; + $('#itemLinks', page).html(LibraryBrowser.getLinksHtml(item)); - if (typeof userData.Likes == "undefined") { - html += 'Dislike'; - html += 'Like'; - } else if (userData.Likes) { - html += 'Dislike'; - html += 'Liked'; - } else { - html += 'Dislike'; - html += 'Like'; - } + } else { + $('#itemLinks', page).hide(); + } + } - if (userData.IsFavorite) { - html += 'Favorite'; - } else { - html += 'Favorite'; - } + function renderUserDataIcons(page, item) { + $('#itemRatings', page).html(LibraryBrowser.getUserDataIconsHtml(item)); + } - $('#itemRatings', page).html(html); - }, + $(document).on('pageshow', "#itemByNameDetailPage", function () { + reload(this); + }); - setFavorite: function () { - var item = ItemByNameDetailPage.item; -/* - item.UserData = item.UserData || {}; - var setting = !item.UserData.IsFavorite; - item.UserData.IsFavorite = setting; - - ApiClient.updateFavoriteStatus(Dashboard.getCurrentUserId(), item.Id, setting); -*/ - ItemByNameDetailPage.renderFav(item); - }, - - setLike: function () { - - var item = ItemDetailPage.item; -/* - item.UserData = item.UserData || {}; - - item.UserData.Likes = true; - - ApiClient.updateUserItemRating(Dashboard.getCurrentUserId(), item.Id, true); -*/ - ItemByNameDetailPage.renderFav(item); - }, - - clearLike: function () { - - var item = ItemDetailPage.item; -/* - item.UserData = item.UserData || {}; - - item.UserData.Likes = undefined; - - ApiClient.clearUserItemRating(Dashboard.getCurrentUserId(), item.Id); -*/ - ItemByNameDetailPage.renderFav(item); - }, - - setDislike: function () { - var item = ItemDetailPage.item; -/* - item.UserData = item.UserData || {}; - - item.UserData.Likes = false; - - ApiClient.updateUserItemRating(Dashboard.getCurrentUserId(), item.Id, false); -*/ - ItemByNameDetailPage.renderFav(item); - } - -}; - -$(document).on('pageshow', "#itemByNameDetailPage", ItemByNameDetailPage.onPageShow); +})(jQuery, document, LibraryBrowser); \ No newline at end of file diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index 2aa5b31798..db0c4bcdb2 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -632,6 +632,7 @@ }, getDetailImageHtml: function (item) { + var imageTags = item.ImageTags || {}; var html = ''; @@ -641,11 +642,34 @@ if (imageTags.Primary) { - url = ApiClient.getImageUrl(item.Id, { - type: "Primary", - width: 800, - tag: item.ImageTags.Primary - }); + if (item.Type == "Person") { + url = ApiClient.getPersonImageUrl(item.Name, { + width: 800, + tag: imageTags.Primary, + type: "primary" + }); + } + else if (item.Type == "Genre") { + url = ApiClient.getGenreImageUrl(item.Name, { + width: 800, + tag: imageTags.Primary, + type: "primary" + }); + } + else if (item.Type == "Studio") { + url = ApiClient.getStudioImageUrl(item.Name, { + width: 800, + tag: imageTags.Primary, + type: "primary" + }); + } + else { + url = ApiClient.getImageUrl(item.Id, { + type: "Primary", + width: 800, + tag: item.ImageTags.Primary + }); + } } else if (item.BackdropImageTags && item.BackdropImageTags.length) { diff --git a/dashboard-ui/scripts/tvseries.js b/dashboard-ui/scripts/tvseries.js index 206a28182a..43c525a4f5 100644 --- a/dashboard-ui/scripts/tvseries.js +++ b/dashboard-ui/scripts/tvseries.js @@ -1,7 +1,5 @@ (function ($, document, LibraryBrowser) { - var currentItem; - function reload(page) { var id = getParameterByName('id'); @@ -10,8 +8,6 @@ ApiClient.getItem(Dashboard.getCurrentUserId(), id).done(function (item) { - currentItem = item; - var name = item.Name; $('#itemImage', page).html(LibraryBrowser.getDetailImageHtml(item)); @@ -123,12 +119,7 @@ } $(document).on('pageshow', "#tvSeriesPage", function () { - reload(this); - - }).on('pagehide', "#tvSeriesPage", function () { - - currentItem = null; });