diff --git a/dashboard-ui/movies.html b/dashboard-ui/movies.html index 57cafc0a4c..cf4f7b75ca 100644 --- a/dashboard-ui/movies.html +++ b/dashboard-ui/movies.html @@ -1,4 +1,4 @@ -
+
diff --git a/dashboard-ui/scripts/moviecollections.js b/dashboard-ui/scripts/moviecollections.js index c09d26c87c..28c154314b 100644 --- a/dashboard-ui/scripts/moviecollections.js +++ b/dashboard-ui/scripts/moviecollections.js @@ -71,13 +71,10 @@ if (result.TotalRecordCount) { - var context = getParameterByName('context'); - if (view == "List") { html = LibraryBrowser.getListViewHtml({ items: result.Items, - context: context, sortBy: query.SortBy }); } @@ -85,7 +82,6 @@ html = LibraryBrowser.getPosterViewHtml({ items: result.Items, shape: "auto", - context: context, showTitle: true, centerText: true, lazy: true, @@ -96,7 +92,6 @@ html = LibraryBrowser.getPosterViewHtml({ items: result.Items, shape: "auto", - context: context, showTitle: true, cardLayout: true, lazy: true, @@ -107,7 +102,6 @@ html = LibraryBrowser.getPosterViewHtml({ items: result.Items, shape: "backdrop", - context: context, showTitle: true, centerText: true, lazy: true, @@ -119,7 +113,6 @@ html = LibraryBrowser.getPosterViewHtml({ items: result.Items, shape: "backdrop", - context: context, showTitle: true, lazy: true, preferThumb: true, @@ -205,7 +198,7 @@ } pageIdOn('pageinit', 'boxsetsPage', function () { - + var page = this; var content = page; @@ -223,16 +216,19 @@ }); - window.MoviesPage = window.MoviesPage || {}; - window.MoviesPage.renderCollectionsTab = function (page, tabContent) { + return function (view, params, tabContent) { + + var self = this; + + self.initTab = function () { + + initPage(tabContent); + }; + + self.renderTab = function () { - if (LibraryBrowser.needsRefresh(tabContent)) { reloadItems(tabContent); - } - }; - window.MoviesPage.initCollectionsTab = function (page, tabContent) { - - initPage(tabContent); + }; }; }); \ No newline at end of file diff --git a/dashboard-ui/scripts/moviegenres.js b/dashboard-ui/scripts/moviegenres.js index 9509fcfb02..c04d560e58 100644 --- a/dashboard-ui/scripts/moviegenres.js +++ b/dashboard-ui/scripts/moviegenres.js @@ -1,151 +1,141 @@ -define(['jQuery'], function ($) { - - var data = {}; - function getPageData() { - var key = getSavedQueryKey(); - var pageData = data[key]; - - if (!pageData) { - pageData = data[key] = { - query: { - SortBy: "SortName", - SortOrder: "Ascending", - IncludeItemTypes: "Movie", - Recursive: true, - Fields: "DateCreated,SyncInfo,ItemCounts", - StartIndex: 0, - Limit: LibraryBrowser.getDefaultPageSize() - }, - view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Thumb', 'Thumb') - }; - - pageData.query.ParentId = LibraryMenu.getTopParentId(); - LibraryBrowser.loadSavedQueryValues(key, pageData.query); +define(['jQuery'], function ($) { + + return function (view, params, tabContent) { + + var self = this; + + var data = {}; + function getPageData() { + var key = getSavedQueryKey(); + var pageData = data[key]; + + if (!pageData) { + pageData = data[key] = { + query: { + SortBy: "SortName", + SortOrder: "Ascending", + IncludeItemTypes: "Movie", + Recursive: true, + Fields: "DateCreated,SyncInfo,ItemCounts", + StartIndex: 0, + Limit: LibraryBrowser.getDefaultPageSize() + }, + view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Thumb', 'Thumb') + }; + + pageData.query.ParentId = params.topParentId; + LibraryBrowser.loadSavedQueryValues(key, pageData.query); + } + return pageData; + } + + function getQuery() { + + return getPageData().query; + } + + function getSavedQueryKey() { + + return LibraryBrowser.getSavedQueryKey('genres'); + } + + function reloadItems(context) { + + Dashboard.showLoadingMsg(); + var query = getQuery(); + + ApiClient.getGenres(Dashboard.getCurrentUserId(), query).then(function (result) { + + // Scroll back up so they can see the results from the beginning + window.scrollTo(0, 0); + + var html = ''; + + var viewStyle = getPageData().view; + + $('.listTopPaging', context).html(LibraryBrowser.getQueryPagingHtml({ + startIndex: query.StartIndex, + limit: query.Limit, + totalRecordCount: result.TotalRecordCount, + viewButton: false, + showLimit: false, + updatePageSizeSetting: false, + addLayoutButton: true, + currentLayout: viewStyle + })); + + if (viewStyle == "Thumb") { + html = LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "backdrop", + preferThumb: true, + showItemCounts: true, + centerText: true, + lazy: true, + overlayPlayButton: true + }); + } + else if (viewStyle == "ThumbCard") { + + html = LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "backdrop", + preferThumb: true, + showItemCounts: true, + cardLayout: true, + showTitle: true, + lazy: true + }); + } + else if (viewStyle == "PosterCard") { + html = LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "portrait", + showItemCounts: true, + lazy: true, + cardLayout: true, + showTitle: true + }); + } + else if (viewStyle == "Poster") { + html = LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "portrait", + centerText: true, + showItemCounts: true, + lazy: true, + overlayPlayButton: true + }); + } + + var elem = context.querySelector('.itemsContainer'); + elem.innerHTML = html; + ImageLoader.lazyChildren(elem); + + $('.btnNextPage', context).on('click', function () { + query.StartIndex += query.Limit; + reloadItems(context); + }); + + $('.btnPreviousPage', context).on('click', function () { + query.StartIndex -= query.Limit; + reloadItems(context); + }); + + $('.btnChangeLayout', context).on('layoutchange', function (e, layout) { + getPageData().view = layout; + LibraryBrowser.saveViewSetting(getSavedQueryKey(), layout); + reloadItems(context); + }); + + LibraryBrowser.saveQueryValues(getSavedQueryKey(), query); + + Dashboard.hideLoadingMsg(); + }); } - return pageData; - } - - function getQuery() { - - return getPageData().query; - } - - function getSavedQueryKey() { - - return LibraryBrowser.getSavedQueryKey('genres'); - } - - function reloadItems(page) { - - Dashboard.showLoadingMsg(); - - var query = getQuery(); - ApiClient.getGenres(Dashboard.getCurrentUserId(), query).then(function (result) { - - // Scroll back up so they can see the results from the beginning - window.scrollTo(0, 0); - - var html = ''; - - var view = getPageData().view; - $('.listTopPaging', page).html(LibraryBrowser.getQueryPagingHtml({ - startIndex: query.StartIndex, - limit: query.Limit, - totalRecordCount: result.TotalRecordCount, - viewButton: false, - showLimit: false, - updatePageSizeSetting: false, - addLayoutButton: true, - currentLayout: view - - })); - - if (view == "List") { - - html = LibraryBrowser.getListViewHtml({ - items: result.Items, - sortBy: query.SortBy - }); - } - else if (view == "Thumb") { - html = LibraryBrowser.getPosterViewHtml({ - items: result.Items, - shape: "backdrop", - preferThumb: true, - context: 'movies', - showItemCounts: true, - centerText: true, - lazy: true, - overlayPlayButton: true - }); - } - else if (view == "ThumbCard") { - - html = LibraryBrowser.getPosterViewHtml({ - items: result.Items, - shape: "backdrop", - preferThumb: true, - context: 'movies', - showItemCounts: true, - cardLayout: true, - showTitle: true, - lazy: true - }); - } - else if (view == "PosterCard") { - html = LibraryBrowser.getPosterViewHtml({ - items: result.Items, - shape: "portrait", - context: 'movies', - showItemCounts: true, - lazy: true, - cardLayout: true, - showTitle: true - }); - } - else if (view == "Poster") { - html = LibraryBrowser.getPosterViewHtml({ - items: result.Items, - shape: "portrait", - context: 'movies', - centerText: true, - showItemCounts: true, - lazy: true, - overlayPlayButton: true - }); - } - - var elem = page.querySelector('.itemsContainer'); - elem.innerHTML = html; - ImageLoader.lazyChildren(elem); - - $('.btnNextPage', page).on('click', function () { - query.StartIndex += query.Limit; - reloadItems(page); - }); - - $('.btnPreviousPage', page).on('click', function () { - query.StartIndex -= query.Limit; - reloadItems(page); - }); - - $('.btnChangeLayout', page).on('layoutchange', function (e, layout) { - getPageData().view = layout; - LibraryBrowser.saveViewSetting(getSavedQueryKey(), layout); - reloadItems(page); - }); - - LibraryBrowser.saveQueryValues(getSavedQueryKey(), query); - - Dashboard.hideLoadingMsg(); - }); - } - - window.MoviesPage.renderGenresTab = function (page, tabContent) { - - if (LibraryBrowser.needsRefresh(tabContent)) { - reloadItems(tabContent); - } - }; - + self.renderTab = function () { + + reloadItems(tabContent); + }; + }; }); \ No newline at end of file diff --git a/dashboard-ui/scripts/movies.js b/dashboard-ui/scripts/movies.js index 4cc81eca0d..8dfd94b6cf 100644 --- a/dashboard-ui/scripts/movies.js +++ b/dashboard-ui/scripts/movies.js @@ -1,311 +1,314 @@ define(['jQuery'], function ($) { - var data = {}; + return function (view, params, tabContent) { - function getPageData(context) { - var key = getSavedQueryKey(context); - var pageData = data[key]; + var self = this; - if (!pageData) { - pageData = data[key] = { - query: { - SortBy: "SortName", - SortOrder: "Ascending", - IncludeItemTypes: "Movie", - Recursive: true, - Fields: "PrimaryImageAspectRatio,SortName,MediaSourceCount,SyncInfo", - ImageTypeLimit: 1, - EnableImageTypes: "Primary,Backdrop,Banner,Thumb", - StartIndex: 0, - Limit: LibraryBrowser.getDefaultPageSize() - }, - view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Poster', 'Poster') - }; + var data = {}; - pageData.query.ParentId = LibraryMenu.getTopParentId(); - LibraryBrowser.loadSavedQueryValues(key, pageData.query); + function getPageData(context) { + var key = getSavedQueryKey(context); + var pageData = data[key]; + + if (!pageData) { + pageData = data[key] = { + query: { + SortBy: "SortName", + SortOrder: "Ascending", + IncludeItemTypes: "Movie", + Recursive: true, + Fields: "PrimaryImageAspectRatio,SortName,MediaSourceCount,SyncInfo", + ImageTypeLimit: 1, + EnableImageTypes: "Primary,Backdrop,Banner,Thumb", + StartIndex: 0, + Limit: LibraryBrowser.getDefaultPageSize() + }, + view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Poster', 'Poster') + }; + + pageData.query.ParentId = params.topParentId; + LibraryBrowser.loadSavedQueryValues(key, pageData.query); + } + return pageData; } - return pageData; - } - function getQuery(context) { + function getQuery(context) { - return getPageData(context).query; - } - - function getSavedQueryKey(context) { - - if (!context.savedQueryKey) { - context.savedQueryKey = LibraryBrowser.getSavedQueryKey('movies'); + return getPageData(context).query; } - return context.savedQueryKey; - } - function reloadItems(context) { + function getSavedQueryKey(context) { - Dashboard.showLoadingMsg(); - - var userId = Dashboard.getCurrentUserId(); - - var query = getQuery(context); - var view = getPageData(context).view; - - ApiClient.getItems(userId, query).then(function (result) { - - // Scroll back up so they can see the results from the beginning - window.scrollTo(0, 0); - - var html = ''; - - var pagingHtml = LibraryBrowser.getQueryPagingHtml({ - startIndex: query.StartIndex, - limit: query.Limit, - totalRecordCount: result.TotalRecordCount, - showLimit: false, - updatePageSizeSetting: false, - addLayoutButton: true, - sortButton: true, - currentLayout: view, - layouts: 'Banner,List,Poster,PosterCard,Thumb,ThumbCard,Timeline', - filterButton: true - }); - - context.querySelector('.listTopPaging').innerHTML = pagingHtml; - - updateFilterControls(context); - - if (view == "Thumb") { - html = LibraryBrowser.getPosterViewHtml({ - items: result.Items, - shape: "backdrop", - preferThumb: true, - lazy: true, - showDetailsMenu: true, - overlayPlayButton: true - }); + if (!context.savedQueryKey) { + context.savedQueryKey = LibraryBrowser.getSavedQueryKey('movies'); } - else if (view == "ThumbCard") { + return context.savedQueryKey; + } - html = LibraryBrowser.getPosterViewHtml({ - items: result.Items, - shape: "backdrop", - preferThumb: true, - lazy: true, - showTitle: true, - cardLayout: true, - showYear: true, - showDetailsMenu: true + function reloadItems(context) { + + Dashboard.showLoadingMsg(); + + var userId = Dashboard.getCurrentUserId(); + + var query = getQuery(context); + var view = getPageData(context).view; + + ApiClient.getItems(userId, query).then(function (result) { + + // Scroll back up so they can see the results from the beginning + window.scrollTo(0, 0); + + var html = ''; + + var pagingHtml = LibraryBrowser.getQueryPagingHtml({ + startIndex: query.StartIndex, + limit: query.Limit, + totalRecordCount: result.TotalRecordCount, + showLimit: false, + updatePageSizeSetting: false, + addLayoutButton: true, + sortButton: true, + currentLayout: view, + layouts: 'Banner,List,Poster,PosterCard,Thumb,ThumbCard,Timeline', + filterButton: true }); - } - else if (view == "Banner") { - html = LibraryBrowser.getPosterViewHtml({ - items: result.Items, - shape: "banner", - preferBanner: true, - lazy: true, - showDetailsMenu: true - }); - } - else if (view == "List") { + context.querySelector('.listTopPaging').innerHTML = pagingHtml; - html = LibraryBrowser.getListViewHtml({ - items: result.Items, - sortBy: query.SortBy - }); - } - else if (view == "Poster") { - html = LibraryBrowser.getPosterViewHtml({ - items: result.Items, - shape: "portrait", - centerText: true, - lazy: true, - showDetailsMenu: true, - overlayPlayButton: true - }); - } - else if (view == "PosterCard") { - html = LibraryBrowser.getPosterViewHtml({ - items: result.Items, - shape: "portrait", - showTitle: true, - showYear: true, - lazy: true, - cardLayout: true, - showDetailsMenu: true - }); - } - else if (view == "Timeline") { - html = LibraryBrowser.getPosterViewHtml({ - items: result.Items, - shape: "portrait", - showTitle: true, - timeline: true, - centerText: true, - lazy: true, - showDetailsMenu: true - }); - } + updateFilterControls(context); - var elem = context.querySelector('.itemsContainer'); - elem.innerHTML = html + pagingHtml; - ImageLoader.lazyChildren(elem); + if (view == "Thumb") { + html = LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "backdrop", + preferThumb: true, + lazy: true, + showDetailsMenu: true, + overlayPlayButton: true + }); + } + else if (view == "ThumbCard") { - $('.btnNextPage', context).on('click', function () { - query.StartIndex += query.Limit; - reloadItems(context); - }); + html = LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "backdrop", + preferThumb: true, + lazy: true, + showTitle: true, + cardLayout: true, + showYear: true, + showDetailsMenu: true + }); + } + else if (view == "Banner") { - $('.btnPreviousPage', context).on('click', function () { - query.StartIndex -= query.Limit; - reloadItems(context); - }); + html = LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "banner", + preferBanner: true, + lazy: true, + showDetailsMenu: true + }); + } + else if (view == "List") { - $('.btnChangeLayout', context).on('layoutchange', function (e, layout) { - - if (layout == 'Timeline') { - getQuery(context).SortBy = 'ProductionYear,PremiereDate,SortName'; - getQuery(context).SortOrder = 'Descending'; + html = LibraryBrowser.getListViewHtml({ + items: result.Items, + sortBy: query.SortBy + }); + } + else if (view == "Poster") { + html = LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "portrait", + centerText: true, + lazy: true, + showDetailsMenu: true, + overlayPlayButton: true + }); + } + else if (view == "PosterCard") { + html = LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "portrait", + showTitle: true, + showYear: true, + lazy: true, + cardLayout: true, + showDetailsMenu: true + }); + } + else if (view == "Timeline") { + html = LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "portrait", + showTitle: true, + timeline: true, + centerText: true, + lazy: true, + showDetailsMenu: true + }); } - getPageData(context).view = layout; - LibraryBrowser.saveViewSetting(getSavedQueryKey(context), layout); - reloadItems(context); - }); + var elem = context.querySelector('.itemsContainer'); + elem.innerHTML = html + pagingHtml; + ImageLoader.lazyChildren(elem); - $('.btnFilter', context).on('click', function () { - showFilterMenu(context); - }); - - // On callback make sure to set StartIndex = 0 - $('.btnSort', context).on('click', function () { - LibraryBrowser.showSortMenu({ - items: [{ - name: Globalize.translate('OptionNameSort'), - id: 'SortName' - }, - { - name: Globalize.translate('OptionBudget'), - id: 'Budget,SortName' - }, - { - name: Globalize.translate('OptionImdbRating'), - id: 'CommunityRating,SortName' - }, - { - name: Globalize.translate('OptionCriticRating'), - id: 'CriticRating,SortName' - }, - { - name: Globalize.translate('OptionDateAdded'), - id: 'DateCreated,SortName' - }, - { - name: Globalize.translate('OptionDatePlayed'), - id: 'DatePlayed,SortName' - }, - { - name: Globalize.translate('OptionMetascore'), - id: 'Metascore,SortName' - }, - { - name: Globalize.translate('OptionParentalRating'), - id: 'OfficialRating,SortName' - }, - { - name: Globalize.translate('OptionPlayCount'), - id: 'PlayCount,SortName' - }, - { - name: Globalize.translate('OptionReleaseDate'), - id: 'PremiereDate,SortName' - }, - { - name: Globalize.translate('OptionRevenue'), - id: 'Revenue,SortName' - }, - { - name: Globalize.translate('OptionRuntime'), - id: 'Runtime,SortName' - }, - { - name: Globalize.translate('OptionVideoBitrate'), - id: 'VideoBitRate,SortName' - }], - callback: function () { - reloadItems(context); - }, - query: query + $('.btnNextPage', context).on('click', function () { + query.StartIndex += query.Limit; + reloadItems(context); }); + + $('.btnPreviousPage', context).on('click', function () { + query.StartIndex -= query.Limit; + reloadItems(context); + }); + + $('.btnChangeLayout', context).on('layoutchange', function (e, layout) { + + if (layout == 'Timeline') { + getQuery(context).SortBy = 'ProductionYear,PremiereDate,SortName'; + getQuery(context).SortOrder = 'Descending'; + } + + getPageData(context).view = layout; + LibraryBrowser.saveViewSetting(getSavedQueryKey(context), layout); + reloadItems(context); + }); + + $('.btnFilter', context).on('click', function () { + showFilterMenu(context); + }); + + // On callback make sure to set StartIndex = 0 + $('.btnSort', context).on('click', function () { + LibraryBrowser.showSortMenu({ + items: [{ + name: Globalize.translate('OptionNameSort'), + id: 'SortName' + }, + { + name: Globalize.translate('OptionBudget'), + id: 'Budget,SortName' + }, + { + name: Globalize.translate('OptionImdbRating'), + id: 'CommunityRating,SortName' + }, + { + name: Globalize.translate('OptionCriticRating'), + id: 'CriticRating,SortName' + }, + { + name: Globalize.translate('OptionDateAdded'), + id: 'DateCreated,SortName' + }, + { + name: Globalize.translate('OptionDatePlayed'), + id: 'DatePlayed,SortName' + }, + { + name: Globalize.translate('OptionMetascore'), + id: 'Metascore,SortName' + }, + { + name: Globalize.translate('OptionParentalRating'), + id: 'OfficialRating,SortName' + }, + { + name: Globalize.translate('OptionPlayCount'), + id: 'PlayCount,SortName' + }, + { + name: Globalize.translate('OptionReleaseDate'), + id: 'PremiereDate,SortName' + }, + { + name: Globalize.translate('OptionRevenue'), + id: 'Revenue,SortName' + }, + { + name: Globalize.translate('OptionRuntime'), + id: 'Runtime,SortName' + }, + { + name: Globalize.translate('OptionVideoBitrate'), + id: 'VideoBitRate,SortName' + }], + callback: function () { + reloadItems(context); + }, + query: query + }); + }); + + LibraryBrowser.saveQueryValues(getSavedQueryKey(context), query); + + LibraryBrowser.setLastRefreshed(context); + + Dashboard.hideLoadingMsg(); }); + } - LibraryBrowser.saveQueryValues(getSavedQueryKey(context), query); + function showFilterMenu(context) { - LibraryBrowser.setLastRefreshed(context); + require(['components/filterdialog/filterdialog'], function (filterDialogFactory) { - Dashboard.hideLoadingMsg(); - }); - } + var filterDialog = new filterDialogFactory({ + query: getQuery(context), + mode: 'movies' + }); - function showFilterMenu(context) { + Events.on(filterDialog, 'filterchange', function () { + reloadItems(context); + }); - require(['components/filterdialog/filterdialog'], function (filterDialogFactory) { - - var filterDialog = new filterDialogFactory({ - query: getQuery(context), - mode: 'movies' + filterDialog.show(); }); + } + + function updateFilterControls(context) { + + var query = getQuery(context); + + $('.alphabetPicker', context).alphaValue(query.NameStartsWithOrGreater); + } + + function initPage(context) { + + $('.alphabetPicker', context).on('alphaselect', function (e, character) { + + var query = getQuery(context); + query.NameStartsWithOrGreater = character; + query.StartIndex = 0; + + reloadItems(context); + + }).on('alphaclear', function (e) { + + var query = getQuery(context); + query.NameStartsWithOrGreater = ''; - Events.on(filterDialog, 'filterchange', function () { reloadItems(context); }); - filterDialog.show(); - }); - } + $('.itemsContainer', context).on('needsrefresh', function () { - function updateFilterControls(context) { + reloadItems(context); + }); + } - var query = getQuery(context); + self.initTab = function () { - $('.alphabetPicker', context).alphaValue(query.NameStartsWithOrGreater); - } + initPage(tabContent); + }; - function initPage(context) { + self.renderTab = function () { - $('.alphabetPicker', context).on('alphaselect', function (e, character) { - - var query = getQuery(context); - query.NameStartsWithOrGreater = character; - query.StartIndex = 0; - - reloadItems(context); - - }).on('alphaclear', function (e) { - - var query = getQuery(context); - query.NameStartsWithOrGreater = ''; - - reloadItems(context); - }); - - $('.itemsContainer', context).on('needsrefresh', function () { - - reloadItems(context); - }); - } - - window.MoviesPage.initMoviesTab = function (page, tabContent) { - - initPage(tabContent); - }; - - window.MoviesPage.renderMoviesTab = function (page, tabContent) { - - if (LibraryBrowser.needsRefresh(tabContent)) { reloadItems(tabContent); updateFilterControls(tabContent); - } + }; }; }); \ No newline at end of file diff --git a/dashboard-ui/scripts/moviesrecommended.js b/dashboard-ui/scripts/moviesrecommended.js index b401b158a1..974f019b8a 100644 --- a/dashboard-ui/scripts/moviesrecommended.js +++ b/dashboard-ui/scripts/moviesrecommended.js @@ -1,4 +1,4 @@ -define(['jQuery'], function ($) { +define(['jQuery', 'libraryBrowser'], function ($, libraryBrowser) { function getView() { @@ -43,7 +43,7 @@ if (view == 'PosterCard') { - html += LibraryBrowser.getPosterViewHtml({ + html += libraryBrowser.getPosterViewHtml({ items: items, lazy: true, shape: getPortraitShape(), @@ -57,7 +57,7 @@ } else if (view == 'Poster') { - html += LibraryBrowser.getPosterViewHtml({ + html += libraryBrowser.getPosterViewHtml({ items: items, shape: getPortraitShape(), centerText: true, @@ -71,7 +71,6 @@ var recentlyAddedItems = page.querySelector('#recentlyAddedItems'); recentlyAddedItems.innerHTML = html; ImageLoader.lazyChildren(recentlyAddedItems); - LibraryBrowser.setLastRefreshed(page); }); } @@ -107,7 +106,7 @@ if (view == 'ThumbCard') { - html += LibraryBrowser.getPosterViewHtml({ + html += libraryBrowser.getPosterViewHtml({ items: result.Items, preferThumb: true, shape: getThumbShape(), @@ -121,7 +120,7 @@ } else if (view == 'Thumb') { - html += LibraryBrowser.getPosterViewHtml({ + html += libraryBrowser.getPosterViewHtml({ items: result.Items, preferThumb: true, shape: getThumbShape(), @@ -177,7 +176,7 @@ if (view == 'PosterCard') { - html += LibraryBrowser.getPosterViewHtml({ + html += libraryBrowser.getPosterViewHtml({ items: recommendation.Items, lazy: true, shape: getPortraitShape(), @@ -191,7 +190,7 @@ } else if (view == 'Poster') { - html += LibraryBrowser.getPosterViewHtml({ + html += libraryBrowser.getPosterViewHtml({ items: recommendation.Items, shape: getPortraitShape(), centerText: true, @@ -251,135 +250,21 @@ $(containers).createCardMenus(); } - function loadSuggestionsTab(page, tabContent) { + function loadSuggestionsTab(view, params, tabContent) { - var parentId = LibraryMenu.getTopParentId(); + var parentId = params.topParentId; var userId = Dashboard.getCurrentUserId(); - if (LibraryBrowser.needsRefresh(tabContent)) { - console.log('loadSuggestionsTab'); - loadResume(tabContent, userId, parentId); - loadLatest(tabContent, userId, parentId); + console.log('loadSuggestionsTab'); + loadResume(tabContent, userId, parentId); + loadLatest(tabContent, userId, parentId); - if (AppInfo.enableMovieHomeSuggestions) { - loadSuggestions(tabContent, userId, parentId); - } + if (AppInfo.enableMovieHomeSuggestions) { + loadSuggestions(tabContent, userId, parentId); } } - function loadTab(page, index) { - - var tabContent = page.querySelector('.pageTabContent[data-index=\'' + index + '\']'); - var depends = []; - var scope = 'MoviesPage'; - var renderMethod = ''; - var initMethod = ''; - - switch (index) { - - case 0: - initMethod = 'initSuggestedTab'; - renderMethod = 'renderSuggestedTab'; - break; - case 1: - depends.push('scripts/movies'); - renderMethod = 'renderMoviesTab'; - initMethod = 'initMoviesTab'; - break; - case 2: - depends.push('scripts/movietrailers'); - renderMethod = 'renderTrailerTab'; - initMethod = 'initTrailerTab'; - break; - case 3: - depends.push('scripts/moviecollections'); - renderMethod = 'renderCollectionsTab'; - initMethod = 'initCollectionsTab'; - break; - case 4: - depends.push('scripts/moviegenres'); - renderMethod = 'renderGenresTab'; - break; - case 5: - depends.push('scripts/moviestudios'); - renderMethod = 'renderStudiosTab'; - break; - default: - break; - } - - require(depends, function () { - - if (initMethod && !tabContent.initComplete) { - - window[scope][initMethod](page, tabContent); - tabContent.initComplete = true; - } - - window[scope][renderMethod](page, tabContent); - - }); - } - - window.MoviesPage = window.MoviesPage || {}; - window.MoviesPage.renderSuggestedTab = loadSuggestionsTab; - window.MoviesPage.initSuggestedTab = initSuggestedTab; - - pageIdOn('pageinit', "moviesPage", function () { - - var page = this; - - $('.recommendations', page).createCardMenus(); - - var tabs = page.querySelector('paper-tabs'); - var pageTabsContainer = page.querySelector('.pageTabsContainer'); - - var baseUrl = 'movies.html'; - var topParentId = LibraryMenu.getTopParentId(); - if (topParentId) { - baseUrl += '?topParentId=' + topParentId; - } - - LibraryBrowser.configurePaperLibraryTabs(page, tabs, pageTabsContainer, baseUrl); - - pageTabsContainer.addEventListener('tabchange', function (e) { - loadTab(page, parseInt(e.detail.selectedTabIndex)); - }); - }); - - pageIdOn('pagebeforeshow', "moviesPage", function () { - - var page = this; - - if (!page.getAttribute('data-title')) { - - var parentId = LibraryMenu.getTopParentId(); - - if (parentId) { - - ApiClient.getItem(Dashboard.getCurrentUserId(), parentId).then(function (item) { - - page.setAttribute('data-title', item.Name); - LibraryMenu.setTitle(item.Name); - }); - - - } else { - page.setAttribute('data-title', Globalize.translate('TabMovies')); - LibraryMenu.setTitle(Globalize.translate('TabMovies')); - } - } - - Events.on(MediaController, 'playbackstop', onPlaybackStop); - }); - - pageIdOn('pagebeforehide', "moviesPage", function () { - - var page = this; - Events.off(MediaController, 'playbackstop', onPlaybackStop); - }); - function onPlaybackStop(e, state) { if (state.NowPlayingItem && state.NowPlayingItem.MediaType == 'Video') { @@ -394,4 +279,117 @@ } } + return function (view, params) { + + var self = this; + + self.initTab = function() { + var tabContent = view.querySelector('.pageTabContent[data-index=\'' + 0 + '\']'); + initSuggestedTab(view, tabContent); + }; + + self.renderTab = function () { + var tabContent = view.querySelector('.pageTabContent[data-index=\'' + 0 + '\']'); + loadSuggestionsTab(view, params, tabContent); + }; + + $('.recommendations', view).createCardMenus(); + + var pageTabsContainer = view.querySelector('.pageTabsContainer'); + + var baseUrl = 'movies.html'; + var topParentId = params.topParentId; + if (topParentId) { + baseUrl += '?topParentId=' + topParentId; + } + + libraryBrowser.configurePaperLibraryTabs(view, view.querySelector('paper-tabs'), pageTabsContainer, baseUrl); + + var tabControllers = []; + var renderedTabs = []; + + function loadTab(page, index) { + + var tabContent = page.querySelector('.pageTabContent[data-index=\'' + index + '\']'); + var depends = []; + + switch (index) { + + case 0: + break; + case 1: + depends.push('scripts/movies'); + break; + case 2: + depends.push('scripts/movietrailers'); + break; + case 3: + depends.push('scripts/moviecollections'); + break; + case 4: + depends.push('scripts/moviegenres'); + break; + case 5: + depends.push('scripts/moviestudios'); + break; + default: + 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)); + }); + + view.addEventListener('viewbeforeshow', function (e) { + if (!view.getAttribute('data-title')) { + + var parentId = params.topParentId; + + if (parentId) { + + ApiClient.getItem(Dashboard.getCurrentUserId(), parentId).then(function (item) { + + view.setAttribute('data-title', item.Name); + LibraryMenu.setTitle(item.Name); + }); + + + } else { + view.setAttribute('data-title', Globalize.translate('TabMovies')); + LibraryMenu.setTitle(Globalize.translate('TabMovies')); + } + } + }); + + view.addEventListener('viewshow', function (e) { + Events.on(MediaController, 'playbackstop', onPlaybackStop); + }); + + view.addEventListener('viewbeforehide', function (e) { + Events.off(MediaController, 'playbackstop', onPlaybackStop); + }); + }; + }); \ No newline at end of file diff --git a/dashboard-ui/scripts/moviestudios.js b/dashboard-ui/scripts/moviestudios.js index 375dfedbdb..ea1a7a8096 100644 --- a/dashboard-ui/scripts/moviestudios.js +++ b/dashboard-ui/scripts/moviestudios.js @@ -1,95 +1,93 @@ -define(['jQuery'], function ($) { - - // The base query options - var data = {}; - - function getQuery() { - - var key = getSavedQueryKey(); - var pageData = data[key]; - - if (!pageData) { - pageData = data[key] = { - query: { - SortBy: "SortName", - SortOrder: "Ascending", - IncludeItemTypes: "Movie", - Recursive: true, - Fields: "DateCreated,ItemCounts", - StartIndex: 0, - Limit: LibraryBrowser.getDefaultPageSize() - } - }; - - pageData.query.ParentId = LibraryMenu.getTopParentId(); - LibraryBrowser.loadSavedQueryValues(key, pageData.query); - } - return pageData.query; +define(['jQuery'], function ($) { + + // The base query options + var data = {}; + + function getQuery(params) { + + var key = getSavedQueryKey(); + var pageData = data[key]; + + if (!pageData) { + pageData = data[key] = { + query: { + SortBy: "SortName", + SortOrder: "Ascending", + IncludeItemTypes: "Movie", + Recursive: true, + Fields: "DateCreated,ItemCounts", + StartIndex: 0, + Limit: LibraryBrowser.getDefaultPageSize() + } + }; + + pageData.query.ParentId = params.topParentId; + LibraryBrowser.loadSavedQueryValues(key, pageData.query); + } + return pageData.query; + } + + function getSavedQueryKey() { + + return LibraryBrowser.getSavedQueryKey('studios'); + } + + function reloadItems(context, params) { + + var query = getQuery(params); + + Dashboard.showLoadingMsg(); + + ApiClient.getStudios(Dashboard.getCurrentUserId(), query).then(function (result) { + + // Scroll back up so they can see the results from the beginning + window.scrollTo(0, 0); + + var html = ''; + + $('.listTopPaging', context).html(LibraryBrowser.getQueryPagingHtml({ + startIndex: query.StartIndex, + limit: query.Limit, + totalRecordCount: result.TotalRecordCount, + showLimit: false + })); + + html += LibraryBrowser.getPosterViewHtml({ + items: result.Items, + shape: "backdrop", + showTitle: false, + preferThumb: true, + showItemCounts: true, + centerText: true, + lazy: true + + }); + + var elem = context.querySelector('.itemsContainer'); + elem.innerHTML = html; + ImageLoader.lazyChildren(elem); + + $('.btnNextPage', context).on('click', function () { + query.StartIndex += query.Limit; + reloadItems(context, params); + }); + + $('.btnPreviousPage', context).on('click', function () { + query.StartIndex -= query.Limit; + reloadItems(context, params); + }); + + LibraryBrowser.saveQueryValues(getSavedQueryKey(), query); + Dashboard.hideLoadingMsg(); + }); } - - function getSavedQueryKey() { - - return LibraryBrowser.getSavedQueryKey('studios'); - } - - function reloadItems(page) { - - Dashboard.showLoadingMsg(); - - var query = getQuery(); - - ApiClient.getStudios(Dashboard.getCurrentUserId(), query).then(function (result) { - - // Scroll back up so they can see the results from the beginning - window.scrollTo(0, 0); - - var html = ''; - var pagingHtml = LibraryBrowser.getQueryPagingHtml({ - startIndex: query.StartIndex, - limit: query.Limit, - totalRecordCount: result.TotalRecordCount, - viewButton: false, - updatePageSizeSetting: false, - showLimit: false - }); - - page.querySelector('.listTopPaging').innerHTML = pagingHtml; - - html = LibraryBrowser.getPosterViewHtml({ - items: result.Items, - shape: "backdrop", - preferThumb: true, - context: 'movies', - showItemCounts: true, - centerText: true, - lazy: true - }); - - var elem = page.querySelector('.itemsContainer'); - elem.innerHTML = html + pagingHtml; - ImageLoader.lazyChildren(elem); - - $('.btnNextPage', page).on('click', function () { - query.StartIndex += query.Limit; - reloadItems(page); - }); - - $('.btnPreviousPage', page).on('click', function () { - query.StartIndex -= query.Limit; - reloadItems(page); - }); - - LibraryBrowser.saveQueryValues(getSavedQueryKey(), query); - - Dashboard.hideLoadingMsg(); - }); - } - - window.MoviesPage.renderStudiosTab = function (page, tabContent) { - - if (LibraryBrowser.needsRefresh(tabContent)) { - reloadItems(tabContent); - } - }; - + return function (view, params, tabContent) { + + var self = this; + + self.renderTab = function () { + + reloadItems(tabContent, params); + }; + }; }); \ No newline at end of file diff --git a/dashboard-ui/scripts/movietrailers.js b/dashboard-ui/scripts/movietrailers.js index 0597b0340c..5289168d4a 100644 --- a/dashboard-ui/scripts/movietrailers.js +++ b/dashboard-ui/scripts/movietrailers.js @@ -187,17 +187,20 @@ }); } - window.MoviesPage.initTrailerTab = function (page, tabContent) { + return function (view, params, tabContent) { - initPage(page, tabContent); - }; + var self = this; - window.MoviesPage.renderTrailerTab = function (page, tabContent) { + self.initTab = function () { + + initPage(view, tabContent); + }; + + self.renderTab = function () { - if (LibraryBrowser.needsRefresh(tabContent)) { reloadItems(tabContent); updateFilterControls(tabContent); - } + }; }; }); \ No newline at end of file diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index a3aea261b5..45fdc940dc 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -2698,8 +2698,9 @@ var AppInfo = {}; defineRoute({ path: '/movies.html', - dependencies: [], - autoFocus: false + dependencies: ['paper-tabs', 'paper-checkbox', 'paper-fab', 'scripts/alphapicker'], + autoFocus: false, + controller: 'scripts/moviesrecommended' }); defineRoute({