diff --git a/dashboard-ui/components/favoriteitems.js b/dashboard-ui/components/favoriteitems.js new file mode 100644 index 0000000000..9a0266fa35 --- /dev/null +++ b/dashboard-ui/components/favoriteitems.js @@ -0,0 +1,173 @@ +define(['libraryBrowser'], function (libraryBrowser) { + + function enableScrollX() { + return browserInfo.mobile && AppInfo.enableAppLayouts; + } + + function getThumbShape() { + return enableScrollX() ? 'overflowBackdrop' : 'backdrop'; + } + + function getPosterShape() { + return enableScrollX() ? 'overflowPortrait' : 'portrait'; + } + + function getSquareShape() { + return enableScrollX() ? 'overflowSquare' : 'square'; + } + + function getSections() { + + return [ + { name: 'HeaderFavoriteMovies', types: "Movie", id: "favoriteMovies", shape: getPosterShape(), showTitle: false, overlayPlayButton: true }, + { name: 'HeaderFavoriteShows', types: "Series", id: "favoriteShows", shape: getPosterShape(), showTitle: false, overlayPlayButton: true }, + { name: 'HeaderFavoriteEpisodes', types: "Episode", id: "favoriteEpisode", shape: getThumbShape(), preferThumb: false, showTitle: true, showParentTitle: true, overlayPlayButton: true }, + { name: 'HeaderFavoriteGames', types: "Game", id: "favoriteGames", shape: getSquareShape(), preferThumb: false, showTitle: true }, + { name: 'HeaderFavoriteArtists', types: "MusicArtist", id: "favoriteArtists", shape: getSquareShape(), preferThumb: false, showTitle: true, overlayText: false, showParentTitle: true, centerText: true, overlayPlayButton: true }, + { name: 'HeaderFavoriteAlbums', types: "MusicAlbum", id: "favoriteAlbums", shape: getSquareShape(), preferThumb: false, showTitle: true, overlayText: false, showParentTitle: true, centerText: true, overlayPlayButton: true }, + { name: 'HeaderFavoriteSongs', types: "Audio", id: "favoriteSongs", shape: getSquareShape(), preferThumb: false, showTitle: true, overlayText: false, showParentTitle: true, centerText: true, overlayMoreButton: true, defaultAction: 'instantmix' } + ]; + } + + function loadSection(elem, userId, topParentId, section, isSingleSection) { + + var screenWidth = window.innerWidth; + var options = { + + SortBy: "SortName", + SortOrder: "Ascending", + Filters: "IsFavorite", + Recursive: true, + Fields: "PrimaryImageAspectRatio,SyncInfo", + CollapseBoxSetItems: false, + ExcludeLocationTypes: "Virtual" + }; + + if (topParentId) { + options.ParentId = topParentId; + } + + if (!isSingleSection) { + options.Limit = screenWidth >= 1920 ? 10 : (screenWidth >= 1440 ? 8 : 6); + + if (enableScrollX()) { + options.Limit = 16; + } + } + + var promise; + if (section.types == 'MusicArtist') { + promise = ApiClient.getArtists(userId, options); + } else { + + options.IncludeItemTypes = section.types; + promise = ApiClient.getItems(userId, options); + } + + return promise.then(function (result) { + + var html = ''; + + if (result.Items.length) { + + html += '
'; + html += '

' + Globalize.translate(section.name) + '

'; + + if (result.TotalRecordCount > result.Items.length) { + var href = "secondaryitems.html?type=" + section.types + "&filters=IsFavorite&titlekey=" + section.name; + + html += '' + Globalize.translate('ButtonMore') + ''; + } + + html += '
'; + + if (enableScrollX()) { + html += '
'; + } else { + html += '
'; + } + + html += libraryBrowser.getPosterViewHtml({ + items: result.Items, + preferThumb: section.preferThumb, + shape: section.shape, + overlayText: section.overlayText !== false, + showTitle: section.showTitle, + showParentTitle: section.showParentTitle, + lazy: true, + showDetailsMenu: true, + centerText: section.centerText, + overlayPlayButton: section.overlayPlayButton, + overlayMoreButton: section.overlayMoreButton, + context: 'home-favorites', + defaultAction: section.defaultAction + }); + + html += '
'; + } + + elem.innerHTML = html; + ImageLoader.lazyChildren(elem); + libraryBrowser.createCardMenus(elem); + }); + } + + function loadSections(page, userId, topParentId, types) { + + Dashboard.showLoadingMsg(); + + var sections = getSections(); + + var sectionid = getParameterByName('sectionid'); + + if (sectionid) { + sections = sections.filter(function (s) { + + return s.id == sectionid; + }); + } + + if (types) { + sections = sections.filter(function (s) { + + return types.indexOf(s.id) != -1; + }); + } + + var i, length; + + var elem = page.querySelector('.favoriteSections'); + + if (!elem.innerHTML) { + var html = ''; + for (i = 0, length = sections.length; i < length; i++) { + + html += '
'; + } + + elem.innerHTML = html; + } + + var promises = []; + + for (i = 0, length = sections.length; i < length; i++) { + + var section = sections[i]; + + elem = page.querySelector('.section' + section.id); + + promises.push(loadSection(elem, userId, topParentId, section, sections.length == 1)); + } + + Promise.all(promises).then(function () { + Dashboard.hideLoadingMsg(); + + libraryBrowser.setLastRefreshed(page); + }); + } + + return { + render: loadSections + }; + +}); \ No newline at end of file diff --git a/dashboard-ui/scripts/favorites.js b/dashboard-ui/scripts/favorites.js index 96102590a5..78e4216ba6 100644 --- a/dashboard-ui/scripts/favorites.js +++ b/dashboard-ui/scripts/favorites.js @@ -1,197 +1,19 @@ -define(['libraryBrowser'], function (libraryBrowser) { +define(['components/favoriteitems'], function (favoriteItems) { - function enableScrollX() { - return browserInfo.mobile && AppInfo.enableAppLayouts; - } + return function (view, params) { - function getThumbShape() { - return enableScrollX() ? 'overflowBackdrop' : 'backdrop'; - } + var self = this; - function getPosterShape() { - return enableScrollX() ? 'overflowPortrait' : 'portrait'; - } + view.addEventListener('viewshow', function (e) { + + var isRestored = e.detail.isRestored; - function getSquareShape() { - return enableScrollX() ? 'overflowSquare' : 'square'; - } + if (!isRestored) { - function getSections() { - - return [ - { name: 'HeaderFavoriteMovies', types: "Movie", id: "favoriteMovies", shape: getPosterShape(), showTitle: false, overlayPlayButton: true }, - { name: 'HeaderFavoriteShows', types: "Series", id: "favoriteShows", shape: getPosterShape(), showTitle: false, overlayPlayButton: true }, - { name: 'HeaderFavoriteEpisodes', types: "Episode", id: "favoriteEpisode", shape: getThumbShape(), preferThumb: false, showTitle: true, showParentTitle: true, overlayPlayButton: true }, - { name: 'HeaderFavoriteGames', types: "Game", id: "favoriteGames", shape: getSquareShape(), preferThumb: false, showTitle: true }, - { name: 'HeaderFavoriteArtists', types: "MusicArtist", id: "favoriteArtists", shape: getSquareShape(), preferThumb: false, showTitle: true, overlayText: false, showParentTitle: true, centerText: true, overlayPlayButton: true }, - { name: 'HeaderFavoriteAlbums', types: "MusicAlbum", id: "favoriteAlbums", shape: getSquareShape(), preferThumb: false, showTitle: true, overlayText: false, showParentTitle: true, centerText: true, overlayPlayButton: true }, - { name: 'HeaderFavoriteSongs', types: "Audio", id: "favoriteSongs", shape: getSquareShape(), preferThumb: false, showTitle: true, overlayText: false, showParentTitle: true, centerText: true, overlayMoreButton: true, defaultAction: 'instantmix' } - ]; - } - - function loadSection(elem, userId, topParentId, section, isSingleSection) { - - var screenWidth = window.innerWidth; - var options = { - - SortBy: "SortName", - SortOrder: "Ascending", - Filters: "IsFavorite", - Recursive: true, - Fields: "PrimaryImageAspectRatio,SyncInfo", - CollapseBoxSetItems: false, - ExcludeLocationTypes: "Virtual" - }; - - if (topParentId) { - options.ParentId = topParentId; - } - - if (!isSingleSection) { - options.Limit = screenWidth >= 1920 ? 10 : (screenWidth >= 1440 ? 8 : 6); - - if (enableScrollX()) { - options.Limit = 16; + var parentId = null; + favoriteItems.render(view, Dashboard.getCurrentUserId(), parentId); } - } - - var promise; - if (section.types == 'MusicArtist') { - promise = ApiClient.getArtists(userId, options); - } else { - - options.IncludeItemTypes = section.types; - promise = ApiClient.getItems(userId, options); - } - - return promise.then(function (result) { - - var html = ''; - - if (result.Items.length) { - - html += '
'; - html += '

' + Globalize.translate(section.name) + '

'; - - if (result.TotalRecordCount > result.Items.length) { - var href = "secondaryitems.html?type=" + section.types + "&filters=IsFavorite&titlekey=" + section.name; - - html += '' + Globalize.translate('ButtonMore') + ''; - } - - html += '
'; - - if (enableScrollX()) { - html += '
'; - } else { - html += '
'; - } - - html += libraryBrowser.getPosterViewHtml({ - items: result.Items, - preferThumb: section.preferThumb, - shape: section.shape, - overlayText: section.overlayText !== false, - showTitle: section.showTitle, - showParentTitle: section.showParentTitle, - lazy: true, - showDetailsMenu: true, - centerText: section.centerText, - overlayPlayButton: section.overlayPlayButton, - overlayMoreButton: section.overlayMoreButton, - context: 'home-favorites', - defaultAction: section.defaultAction - }); - - html += '
'; - } - - elem.innerHTML = html; - ImageLoader.lazyChildren(elem); - libraryBrowser.createCardMenus(elem); }); - } - - function loadSections(page, userId, topParentId, types) { - - Dashboard.showLoadingMsg(); - - var sections = getSections(); - - var sectionid = getParameterByName('sectionid'); - - if (sectionid) { - sections = sections.filter(function (s) { - - return s.id == sectionid; - }); - } - - if (types) { - sections = sections.filter(function (s) { - - return types.indexOf(s.id) != -1; - }); - } - - var i, length; - - var elem = page.querySelector('.favoriteSections'); - - if (!elem.innerHTML) { - var html = ''; - for (i = 0, length = sections.length; i < length; i++) { - - html += '
'; - } - - elem.innerHTML = html; - } - - var promises = []; - - for (i = 0, length = sections.length; i < length; i++) { - - var section = sections[i]; - - elem = page.querySelector('.section' + section.id); - - promises.push(loadSection(elem, userId, topParentId, section, sections.length == 1)); - } - - Promise.all(promises).then(function () { - Dashboard.hideLoadingMsg(); - - libraryBrowser.setLastRefreshed(page); - }); - } - - function initHomePage() { - - if (window.HomePage) { - window.HomePage.renderFavorites = function (page, tabContent) { - if (libraryBrowser.needsRefresh(tabContent)) { - loadSections(tabContent, Dashboard.getCurrentUserId()); - } - }; - } - } - - initHomePage(); - - pageIdOn('pageinit', "indexPage", initHomePage); - - pageIdOn('pagebeforeshow', "favoritesPage", function () { - - var page = this; - - if (libraryBrowser.needsRefresh(page)) { - loadSections(page, Dashboard.getCurrentUserId()); - } - }); - - window.FavoriteItems = { - render: loadSections }; }); \ No newline at end of file diff --git a/dashboard-ui/scripts/homefavorites.js b/dashboard-ui/scripts/homefavorites.js new file mode 100644 index 0000000000..85b14599dd --- /dev/null +++ b/dashboard-ui/scripts/homefavorites.js @@ -0,0 +1,14 @@ +define(['components/favoriteitems'], function (favoriteItems) { + + return function (view, params, tabContent) { + + var self = this; + + self.renderTab = function () { + + var parentId = null; + favoriteItems.render(tabContent, Dashboard.getCurrentUserId(), parentId); + }; + }; + +}); \ No newline at end of file diff --git a/dashboard-ui/scripts/homenextup.js b/dashboard-ui/scripts/homenextup.js index 104c89848e..ae7a38e4e6 100644 --- a/dashboard-ui/scripts/homenextup.js +++ b/dashboard-ui/scripts/homenextup.js @@ -1,64 +1,65 @@ -define(['jQuery'], function ($) { - - function reload(page) { - - Dashboard.showLoadingMsg(); - - loadNextUp(page, 'home-nextup'); +define(['jQuery'], function ($) { + + function reload(page) { + + Dashboard.showLoadingMsg(); + + loadNextUp(page, 'home-nextup'); + } + + function loadNextUp(page) { + + var limit = AppInfo.hasLowImageBandwidth ? + 16 : + 24; + + var query = { + + Limit: limit, + Fields: "PrimaryImageAspectRatio,SeriesInfo,DateCreated,SyncInfo", + UserId: Dashboard.getCurrentUserId(), + ImageTypeLimit: 1, + EnableImageTypes: "Primary,Backdrop,Banner,Thumb" + }; + + ApiClient.getNextUpEpisodes(query).then(function (result) { + + if (result.Items.length) { + page.querySelector('.noNextUpItems').classList.add('hide'); + } else { + page.querySelector('.noNextUpItems').classList.remove('hide'); + } + + var html = ''; + + html += LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "backdrop", + showTitle: true, + showParentTitle: true, + overlayText: false, + lazy: true, + preferThumb: true, + showDetailsMenu: true, + centerText: true, + overlayPlayButton: AppInfo.enableAppLayouts, + context: 'home-nextup' + }); + + var elem = page.querySelector('#nextUpItems'); + elem.innerHTML = html; + ImageLoader.lazyChildren(elem); + Dashboard.hideLoadingMsg(); + }); } - - function loadNextUp(page) { - - var limit = AppInfo.hasLowImageBandwidth ? - 16 : - 24; - - var query = { - - Limit: limit, - Fields: "PrimaryImageAspectRatio,SeriesInfo,DateCreated,SyncInfo", - UserId: Dashboard.getCurrentUserId(), - ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Banner,Thumb" - }; - - ApiClient.getNextUpEpisodes(query).then(function (result) { - - if (result.Items.length) { - page.querySelector('.noNextUpItems').classList.add('hide'); - } else { - page.querySelector('.noNextUpItems').classList.remove('hide'); - } - - var html = ''; - - html += LibraryBrowser.getPosterViewHtml({ - items: result.Items, - shape: "backdrop", - showTitle: true, - showParentTitle: true, - overlayText: false, - lazy: true, - preferThumb: true, - showDetailsMenu: true, - centerText: true, - overlayPlayButton: AppInfo.enableAppLayouts, - context: 'home-nextup' - }); - - var elem = page.querySelector('#nextUpItems'); - elem.innerHTML = html; - ImageLoader.lazyChildren(elem); - Dashboard.hideLoadingMsg(); - - LibraryBrowser.setLastRefreshed(page); - }); - } - - window.HomePage.renderNextUp = function (page, tabContent) { - if (LibraryBrowser.needsRefresh(tabContent)) { - reload(tabContent); - } - }; - + return function (view, params, tabContent) { + + var self = this; + + self.renderTab = function () { + + reload(tabContent); + }; + }; + }); \ No newline at end of file diff --git a/dashboard-ui/scripts/homeupcoming.js b/dashboard-ui/scripts/homeupcoming.js index 57f43af530..65a7b880d4 100644 --- a/dashboard-ui/scripts/homeupcoming.js +++ b/dashboard-ui/scripts/homeupcoming.js @@ -1,130 +1,131 @@ -define(['jQuery'], function ($) { - - function loadUpcoming(page) { - Dashboard.showLoadingMsg(); - - var limit = AppInfo.hasLowImageBandwidth && !enableScrollX() ? - 24 : - 40; - - var query = { - - Limit: limit, - Fields: "AirTime,UserData,SeriesStudio,SyncInfo", - UserId: Dashboard.getCurrentUserId(), - ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Banner,Thumb" - }; - - ApiClient.getJSON(ApiClient.getUrl("Shows/Upcoming", query)).then(function (result) { - - var items = result.Items; - - if (items.length) { - page.querySelector('.noItemsMessage').style.display = 'none'; - } else { - page.querySelector('.noItemsMessage').style.display = 'block'; - } - - var elem = page.querySelector('#upcomingItems'); - renderUpcoming(elem, items); - - Dashboard.hideLoadingMsg(); - - LibraryBrowser.setLastRefreshed(page); - }); +define(['jQuery'], function ($) { + + function loadUpcoming(page) { + Dashboard.showLoadingMsg(); + + var limit = AppInfo.hasLowImageBandwidth && !enableScrollX() ? + 24 : + 40; + + var query = { + + Limit: limit, + Fields: "AirTime,UserData,SeriesStudio,SyncInfo", + UserId: Dashboard.getCurrentUserId(), + ImageTypeLimit: 1, + EnableImageTypes: "Primary,Backdrop,Banner,Thumb" + }; + + ApiClient.getJSON(ApiClient.getUrl("Shows/Upcoming", query)).then(function (result) { + + var items = result.Items; + + if (items.length) { + page.querySelector('.noItemsMessage').style.display = 'none'; + } else { + page.querySelector('.noItemsMessage').style.display = 'block'; + } + + var elem = page.querySelector('#upcomingItems'); + renderUpcoming(elem, items); + + Dashboard.hideLoadingMsg(); + }); + } + + function enableScrollX() { + return browserInfo.mobile && AppInfo.enableAppLayouts; + } + + function getThumbShape() { + return enableScrollX() ? 'overflowBackdrop' : 'backdrop'; + } + + function renderUpcoming(elem, items) { + + var groups = []; + + var currentGroupName = ''; + var currentGroup = []; + + var i, length; + + for (i = 0, length = items.length; i < length; i++) { + + var item = items[i]; + + var dateText = ''; + + if (item.PremiereDate) { + try { + + dateText = LibraryBrowser.getFutureDateText(parseISO8601Date(item.PremiereDate, { toLocal: true }), true); + + } catch (err) { + } + } + + if (dateText != currentGroupName) { + + if (currentGroup.length) { + groups.push({ + name: currentGroupName, + items: currentGroup + }); + } + + currentGroupName = dateText; + currentGroup = [item]; + } else { + currentGroup.push(item); + } + } + + var html = ''; + + for (i = 0, length = groups.length; i < length; i++) { + + var group = groups[i]; + + html += '
'; + html += '

' + group.name + '

'; + + if (enableScrollX()) { + html += '
'; + } else { + html += '
'; + } + + html += LibraryBrowser.getPosterViewHtml({ + items: group.items, + showLocationTypeIndicator: false, + shape: getThumbShape(), + showTitle: true, + showPremiereDate: true, + preferThumb: true, + lazy: true, + showDetailsMenu: true, + centerText: true, + context: 'home-upcoming', + overlayMoreButton: true + + }); + html += '
'; + + html += '
'; + } + + elem.innerHTML = html; + ImageLoader.lazyChildren(elem); } - - function enableScrollX() { - return browserInfo.mobile && AppInfo.enableAppLayouts; - } - - function getThumbShape() { - return enableScrollX() ? 'overflowBackdrop' : 'backdrop'; - } - - function renderUpcoming(elem, items) { - - var groups = []; - - var currentGroupName = ''; - var currentGroup = []; - - var i, length; - - for (i = 0, length = items.length; i < length; i++) { - - var item = items[i]; - - var dateText = ''; - - if (item.PremiereDate) { - try { - - dateText = LibraryBrowser.getFutureDateText(parseISO8601Date(item.PremiereDate, { toLocal: true }), true); - - } catch (err) { - } - } - - if (dateText != currentGroupName) { - - if (currentGroup.length) { - groups.push({ - name: currentGroupName, - items: currentGroup - }); - } - - currentGroupName = dateText; - currentGroup = [item]; - } else { - currentGroup.push(item); - } - } - - var html = ''; - - for (i = 0, length = groups.length; i < length; i++) { - - var group = groups[i]; - - html += '
'; - html += '

' + group.name + '

'; - - if (enableScrollX()) { - html += '
'; - } else { - html += '
'; - } - - html += LibraryBrowser.getPosterViewHtml({ - items: group.items, - showLocationTypeIndicator: false, - shape: getThumbShape(), - showTitle: true, - showPremiereDate: true, - preferThumb: true, - lazy: true, - showDetailsMenu: true, - centerText: true, - context: 'home-upcoming', - overlayMoreButton: true - - }); - html += '
'; - - html += '
'; - } - - elem.innerHTML = html; - ImageLoader.lazyChildren(elem); - } - - window.HomePage.renderUpcoming = function (page, tabContent) { - if (LibraryBrowser.needsRefresh(tabContent)) { - loadUpcoming(tabContent); - } - }; - + return function (view, params, tabContent) { + + var self = this; + + self.renderTab = function () { + + loadUpcoming(tabContent); + }; + }; + }); \ No newline at end of file diff --git a/dashboard-ui/scripts/indexpage.js b/dashboard-ui/scripts/indexpage.js index f63f1ca5df..61db7fe1da 100644 --- a/dashboard-ui/scripts/indexpage.js +++ b/dashboard-ui/scripts/indexpage.js @@ -237,41 +237,6 @@ } } - function loadTab(page, index) { - - var tabContent = page.querySelector('.pageTabContent[data-index=\'' + index + '\']'); - var depends = []; - var scope = 'HomePage'; - var method = ''; - - switch (index) { - - case 0: - depends.push('scripts/sections'); - method = 'renderHomeTab'; - break; - case 1: - depends.push('scripts/homenextup'); - method = 'renderNextUp'; - break; - case 2: - depends.push('scripts/favorites'); - method = 'renderFavorites'; - break; - case 3: - depends.push('scripts/homeupcoming'); - method = 'renderUpcoming'; - break; - default: - return; - break; - } - - require(depends, function () { - window[scope][method](page, tabContent); - }); - } - function onPlaybackStop(e, state) { if (state.NowPlayingItem && state.NowPlayingItem.MediaType == 'Video') { @@ -291,18 +256,68 @@ return ApiClient.getDisplayPreferences(key, userId, displayPreferencesKey()); } - window.HomePage = { - renderHomeTab: loadHomeTab - }; - return function (view, params) { var self = this; + self.renderTab = function () { + var tabContent = view.querySelector('.pageTabContent[data-index=\'' + 0 + '\']'); + loadHomeTab(view, tabContent); + }; + var pageTabsContainer = view.querySelector('.pageTabsContainer'); libraryBrowser.configurePaperLibraryTabs(view, view.querySelector('paper-tabs'), pageTabsContainer, 'home.html'); + var tabControllers = []; + var renderedTabs = []; + + function loadTab(page, index) { + + var tabContent = page.querySelector('.pageTabContent[data-index=\'' + index + '\']'); + var depends = []; + + switch (index) { + + case 0: + depends.push('scripts/sections'); + break; + case 1: + depends.push('scripts/homenextup'); + break; + case 2: + depends.push('scripts/homefavorites'); + break; + case 3: + depends.push('scripts/homeupcoming'); + break; + default: + return; + break; + } + + require(depends, function (controllerFactory) { + + if (index == 0) { + self.tabContent = tabContent; + } + var controller = tabControllers[index]; + if (!controller) { + controller = index ? new controllerFactory(view, params, tabContent) : self; + tabControllers[index] = controller; + + if (controller.initTab) { + controller.initTab(); + } + } + + if (renderedTabs.indexOf(index) == -1) { + renderedTabs.push(index); + controller.renderTab(); + } + }); + } + pageTabsContainer.addEventListener('tabchange', function (e) { loadTab(view, parseInt(e.detail.selectedTabIndex)); }); diff --git a/dashboard-ui/scripts/librarymenu.js b/dashboard-ui/scripts/librarymenu.js index 01b3b61783..05d9433356 100644 --- a/dashboard-ui/scripts/librarymenu.js +++ b/dashboard-ui/scripts/librarymenu.js @@ -331,6 +331,8 @@ var html = ''; + html += '
'; + var homeHref = window.ApiClient ? 'home.html' : 'selectserver.html?showuser=1'; html += ''; diff --git a/dashboard-ui/scripts/musicrecommended.js b/dashboard-ui/scripts/musicrecommended.js index 38007a7f58..a7b2d77116 100644 --- a/dashboard-ui/scripts/musicrecommended.js +++ b/dashboard-ui/scripts/musicrecommended.js @@ -206,9 +206,9 @@ loadRecentlyPlayed(tabContent, parentId); loadFrequentlyPlayed(tabContent, parentId); - require(['scripts/favorites'], function () { + require(['components/favoriteitems'], function (favoriteItems) { - FavoriteItems.render(tabContent, Dashboard.getCurrentUserId(), parentId, ['favoriteArtists', 'favoriteAlbums', 'favoriteSongs']); + favoriteItems.render(tabContent, Dashboard.getCurrentUserId(), parentId, ['favoriteArtists', 'favoriteAlbums', 'favoriteSongs']); }); } diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index 31e0695f7c..b2fda574c5 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -2474,7 +2474,8 @@ var AppInfo = {}; defineRoute({ path: '/favorites.html', dependencies: [], - autoFocus: false + autoFocus: false, + controller: 'scripts/favorites' }); defineRoute({