diff --git a/dashboard-ui/scripts/episodes.js b/dashboard-ui/scripts/episodes.js
index be1395c055..f3b6979da9 100644
--- a/dashboard-ui/scripts/episodes.js
+++ b/dashboard-ui/scripts/episodes.js
@@ -1,244 +1,247 @@
-(function ($, document) {
-
- var data = {};
-
- function getPageData(context) {
- var key = getSavedQueryKey(context);
- var pageData = data[key];
-
- if (!pageData) {
- pageData = data[key] = {
- query: {
- SortBy: "SeriesSortName,SortName",
- SortOrder: "Ascending",
- IncludeItemTypes: "Episode",
- Recursive: true,
- Fields: "PrimaryImageAspectRatio,MediaSourceCount,UserData,SyncInfo",
- IsMissing: false,
- IsVirtualUnaired: false,
- ImageTypeLimit: 1,
- EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
- StartIndex: 0,
- Limit: LibraryBrowser.getDefaultPageSize()
- },
- view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Poster', 'Poster')
- };
-
- pageData.query.ParentId = LibraryMenu.getTopParentId();
- LibraryBrowser.loadSavedQueryValues(key, pageData.query);
- }
- return pageData;
- }
-
- function getQuery(context) {
-
- return getPageData(context).query;
- }
-
- function getSavedQueryKey(context) {
-
- if (!context.savedQueryKey) {
- context.savedQueryKey = LibraryBrowser.getSavedQueryKey('episodes');
- }
- return context.savedQueryKey;
- }
-
- function reloadItems(page) {
-
- Dashboard.showLoadingMsg();
-
- var query = getQuery(page);
- ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
-
- // Scroll back up so they can see the results from the beginning
- window.scrollTo(0, 0);
-
- var view = getPageData(page).view;
-
- 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: 'Poster,PosterCard',
- filterButton: true
- });
-
- page.querySelector('.listTopPaging').innerHTML = pagingHtml;
-
- updateFilterControls(page);
-
- if (view == "List") {
-
- html = LibraryBrowser.getListViewHtml({
- items: result.Items,
- sortBy: query.SortBy
- });
- }
- else if (view == "Poster") {
- html += LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "backdrop",
- showTitle: true,
- showParentTitle: true,
- overlayText: true,
- lazy: true,
- showDetailsMenu: true,
- overlayPlayButton: true
- });
- }
- else if (view == "PosterCard") {
- html += LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "backdrop",
- showTitle: true,
- showParentTitle: true,
- lazy: true,
- cardLayout: true,
- showDetailsMenu: 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);
- });
-
- $('.btnChangeLayout', page).on('layoutchange', function (e, layout) {
- getPageData(page).view = layout;
- LibraryBrowser.saveViewSetting(getSavedQueryKey(page), layout);
- reloadItems(page);
- });
-
- $('.btnFilter', page).on('click', function () {
- showFilterMenu(page);
- });
-
- // On callback make sure to set StartIndex = 0
- $('.btnSort', page).on('click', function () {
- LibraryBrowser.showSortMenu({
- items: [{
- name: Globalize.translate('OptionNameSort'),
- id: 'SeriesSortName,SortName'
- },
- {
- name: Globalize.translate('OptionTvdbRating'),
- id: 'CommunityRating,SeriesSortName,SortName'
- },
- {
- name: Globalize.translate('OptionDateAdded'),
- id: 'DateCreated,SeriesSortName,SortName'
- },
- {
- name: Globalize.translate('OptionPremiereDate'),
- id: 'PremiereDate,SeriesSortName,SortName'
- },
- {
- name: Globalize.translate('OptionDatePlayed'),
- id: 'DatePlayed,SeriesSortName,SortName'
- },
- {
- name: Globalize.translate('OptionParentalRating'),
- id: 'OfficialRating,SeriesSortName,SortName'
- },
- {
- name: Globalize.translate('OptionPlayCount'),
- id: 'PlayCount,SeriesSortName,SortName'
- },
- {
- name: Globalize.translate('OptionRuntime'),
- id: 'Runtime,SeriesSortName,SortName'
- },
- {
- name: Globalize.translate('OptionVideoBitrate'),
- id: 'VideoBitRate,SeriesSortName,SortName'
- }],
- callback: function () {
- reloadItems(page);
- },
- query: query
- });
- });
-
- LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
-
- Dashboard.hideLoadingMsg();
- });
- }
-
- function showFilterMenu(page) {
-
- require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
-
- var filterDialog = new filterDialogFactory({
- query: getQuery(page),
- mode: 'episodes'
- });
-
- Events.on(filterDialog, 'filterchange', function () {
- reloadItems(page);
- });
-
- filterDialog.show();
- });
- }
-
- function updateFilterControls(tabContent) {
-
- var query = getQuery(tabContent);
-
- $('.alphabetPicker', tabContent).alphaValue(query.NameStartsWithOrGreater);
- }
-
- function initPage(tabContent) {
-
- $('.alphabetPicker', tabContent).on('alphaselect', function (e, character) {
-
- var query = getQuery(tabContent);
- query.NameStartsWithOrGreater = character;
- query.StartIndex = 0;
-
- reloadItems(tabContent);
-
- }).on('alphaclear', function (e) {
-
- var query = getQuery(tabContent);
- query.NameStartsWithOrGreater = '';
-
- reloadItems(tabContent);
- });
-
- $('.itemsContainer', tabContent).on('needsrefresh', function () {
-
- reloadItems(tabContent);
- });
- }
-
- window.TvPage.initEpisodesTab = function (page, tabContent) {
-
- initPage(tabContent);
- };
-
- window.TvPage.renderEpisodesTab = function (page, tabContent) {
-
- if (LibraryBrowser.needsRefresh(tabContent)) {
- reloadItems(tabContent);
- updateFilterControls(tabContent);
- }
- };
-
-})(jQuery, document);
\ No newline at end of file
+define([], function () {
+
+ return function (view, params, tabContent) {
+
+ var self = this;
+
+ var data = {};
+
+ function getPageData(context) {
+ var key = getSavedQueryKey(context);
+ var pageData = data[key];
+
+ if (!pageData) {
+ pageData = data[key] = {
+ query: {
+ SortBy: "SeriesSortName,SortName",
+ SortOrder: "Ascending",
+ IncludeItemTypes: "Episode",
+ Recursive: true,
+ Fields: "PrimaryImageAspectRatio,MediaSourceCount,UserData,SyncInfo",
+ IsMissing: false,
+ IsVirtualUnaired: false,
+ 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;
+ }
+
+ function getQuery(context) {
+
+ return getPageData(context).query;
+ }
+
+ function getSavedQueryKey(context) {
+
+ if (!context.savedQueryKey) {
+ context.savedQueryKey = LibraryBrowser.getSavedQueryKey('episodes');
+ }
+ return context.savedQueryKey;
+ }
+
+ function reloadItems(page) {
+
+ Dashboard.showLoadingMsg();
+
+ var query = getQuery(page);
+ ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
+
+ // Scroll back up so they can see the results from the beginning
+ window.scrollTo(0, 0);
+
+ var view = getPageData(page).view;
+
+ 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: 'Poster,PosterCard',
+ filterButton: true
+ });
+
+ page.querySelector('.listTopPaging').innerHTML = pagingHtml;
+
+ updateFilterControls(page);
+
+ if (view == "List") {
+
+ html = LibraryBrowser.getListViewHtml({
+ items: result.Items,
+ sortBy: query.SortBy
+ });
+ }
+ else if (view == "Poster") {
+ html += LibraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "backdrop",
+ showTitle: true,
+ showParentTitle: true,
+ overlayText: true,
+ lazy: true,
+ showDetailsMenu: true,
+ overlayPlayButton: true
+ });
+ }
+ else if (view == "PosterCard") {
+ html += LibraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "backdrop",
+ showTitle: true,
+ showParentTitle: true,
+ lazy: true,
+ cardLayout: true,
+ showDetailsMenu: 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);
+ });
+
+ $('.btnChangeLayout', page).on('layoutchange', function (e, layout) {
+ getPageData(page).view = layout;
+ LibraryBrowser.saveViewSetting(getSavedQueryKey(page), layout);
+ reloadItems(page);
+ });
+
+ $('.btnFilter', page).on('click', function () {
+ showFilterMenu(page);
+ });
+
+ // On callback make sure to set StartIndex = 0
+ $('.btnSort', page).on('click', function () {
+ LibraryBrowser.showSortMenu({
+ items: [{
+ name: Globalize.translate('OptionNameSort'),
+ id: 'SeriesSortName,SortName'
+ },
+ {
+ name: Globalize.translate('OptionTvdbRating'),
+ id: 'CommunityRating,SeriesSortName,SortName'
+ },
+ {
+ name: Globalize.translate('OptionDateAdded'),
+ id: 'DateCreated,SeriesSortName,SortName'
+ },
+ {
+ name: Globalize.translate('OptionPremiereDate'),
+ id: 'PremiereDate,SeriesSortName,SortName'
+ },
+ {
+ name: Globalize.translate('OptionDatePlayed'),
+ id: 'DatePlayed,SeriesSortName,SortName'
+ },
+ {
+ name: Globalize.translate('OptionParentalRating'),
+ id: 'OfficialRating,SeriesSortName,SortName'
+ },
+ {
+ name: Globalize.translate('OptionPlayCount'),
+ id: 'PlayCount,SeriesSortName,SortName'
+ },
+ {
+ name: Globalize.translate('OptionRuntime'),
+ id: 'Runtime,SeriesSortName,SortName'
+ },
+ {
+ name: Globalize.translate('OptionVideoBitrate'),
+ id: 'VideoBitRate,SeriesSortName,SortName'
+ }],
+ callback: function () {
+ reloadItems(page);
+ },
+ query: query
+ });
+ });
+
+ LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
+
+ Dashboard.hideLoadingMsg();
+ });
+ }
+
+ function showFilterMenu(page) {
+
+ require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
+
+ var filterDialog = new filterDialogFactory({
+ query: getQuery(page),
+ mode: 'episodes'
+ });
+
+ Events.on(filterDialog, 'filterchange', function () {
+ reloadItems(page);
+ });
+
+ filterDialog.show();
+ });
+ }
+
+ function updateFilterControls(tabContent) {
+
+ var query = getQuery(tabContent);
+
+ $('.alphabetPicker', tabContent).alphaValue(query.NameStartsWithOrGreater);
+ }
+
+ function initPage(tabContent) {
+
+ $('.alphabetPicker', tabContent).on('alphaselect', function (e, character) {
+
+ var query = getQuery(tabContent);
+ query.NameStartsWithOrGreater = character;
+ query.StartIndex = 0;
+
+ reloadItems(tabContent);
+
+ }).on('alphaclear', function (e) {
+
+ var query = getQuery(tabContent);
+ query.NameStartsWithOrGreater = '';
+
+ reloadItems(tabContent);
+ });
+
+ $('.itemsContainer', tabContent).on('needsrefresh', function () {
+
+ reloadItems(tabContent);
+ });
+ }
+
+ self.initTab = function () {
+
+ initPage(tabContent);
+ };
+
self.renderTab = function () {
+
+ if (LibraryBrowser.needsRefresh(tabContent)) {
+ reloadItems(tabContent);
+ updateFilterControls(tabContent);
+ }
+ };
+ };
+});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/itembynamedetailpage.js b/dashboard-ui/scripts/itembynamedetailpage.js
index 0f1ec28439..bf3bde549f 100644
--- a/dashboard-ui/scripts/itembynamedetailpage.js
+++ b/dashboard-ui/scripts/itembynamedetailpage.js
@@ -264,7 +264,7 @@
function getMoreItemsHref(item, type) {
- return 'secondaryitems.html?type=' + type + '&parentid=' + item.Id;
+ return 'secondaryitems.html?type=' + type + '&parentId=' + item.Id;
}
function addCurrentItemToQuery(query, item) {
diff --git a/dashboard-ui/scripts/itemlistpage.js b/dashboard-ui/scripts/itemlistpage.js
index b7ad70e654..65e349d300 100644
--- a/dashboard-ui/scripts/itemlistpage.js
+++ b/dashboard-ui/scripts/itemlistpage.js
@@ -1,313 +1,285 @@
-(function ($, document) {
+define(['libraryBrowser', 'jQuery'], function (libraryBrowser, $) {
- var currentItem;
+ return function (view, params) {
- var data = {};
+ var currentItem;
- function getPageData(context) {
- var key = getSavedQueryKey(context);
- var pageData = data[key];
+ var data;
- if (!pageData) {
- pageData = data[key] = {
- query: {
- SortBy: "SortName",
- SortOrder: "Ascending",
- Fields: "DateCreated,PrimaryImageAspectRatio,MediaSourceCount,SyncInfo",
- ImageTypeLimit: 1,
- EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
- StartIndex: 0,
- Limit: LibraryBrowser.getDefaultPageSize()
- }
- };
+ function getPageData() {
+ var pageData = data;
- pageData.query.Filters = "";
- pageData.query.NameStartsWithOrGreater = '';
- pageData.view = LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Poster', 'Poster');
+ if (!pageData) {
+ pageData = data = {
+ query: {
+ SortBy: "SortName",
+ SortOrder: "Ascending",
+ Fields: "DateCreated,PrimaryImageAspectRatio,MediaSourceCount,SyncInfo",
+ ImageTypeLimit: 1,
+ EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
+ StartIndex: 0,
+ Limit: libraryBrowser.getDefaultPageSize()
+ }
+ };
- pageData.query.ParentId = getParam(context, 'parentId');
- LibraryBrowser.loadSavedQueryValues(key, pageData.query);
- }
- return pageData;
- }
+ pageData.query.Filters = "";
+ pageData.query.NameStartsWithOrGreater = '';
+ var key = getSavedQueryKey();
+ pageData.view = libraryBrowser.getSavedView(key) || libraryBrowser.getDefaultItemsView('Poster', 'Poster');
- function getParam(context, name) {
-
- if (!context.pageParams) {
- context.pageParams = {};
+ pageData.query.ParentId = params.parentId || null;
+ libraryBrowser.loadSavedQueryValues(key, pageData.query);
+ }
+ return pageData;
}
- if (!context.pageParams[name]) {
- context.pageParams[name] = getParameterByName(name);
+ function getQuery() {
+
+ return getPageData().query;
+ }
+ function getSavedQueryKey() {
+
+ if (!view.savedQueryKey) {
+ view.savedQueryKey = libraryBrowser.getSavedQueryKey('items');
+ }
+ return view.savedQueryKey;
}
- return context.pageParams[name];
- }
+ function reloadItems() {
- function getQuery(context) {
+ Dashboard.showLoadingMsg();
- return getPageData(context).query;
- }
- function getSavedQueryKey(context) {
+ var query = getQuery();
+ var userId = Dashboard.getCurrentUserId();
- if (!context.savedQueryKey) {
- context.savedQueryKey = LibraryBrowser.getSavedQueryKey('items');
- }
- return context.savedQueryKey;
- }
+ var parentItemPromise = query.ParentId ?
+ ApiClient.getItem(userId, query.ParentId) :
+ ApiClient.getRootFolder(userId);
- function reloadItems(page) {
+ var itemsPromise = ApiClient.getItems(userId, query);
- Dashboard.showLoadingMsg();
+ Promise.all([parentItemPromise, itemsPromise]).then(function (responses) {
- var query = getQuery(page);
- var userId = Dashboard.getCurrentUserId();
+ var item = responses[0];
+ currentItem = item;
+ var result = responses[1];
- var parentItemPromise = query.ParentId ?
- ApiClient.getItem(userId, query.ParentId) :
- ApiClient.getRootFolder(userId);
+ // Scroll back up so they can see the results from the beginning
+ window.scrollTo(0, 0);
- var itemsPromise = ApiClient.getItems(userId, query);
+ var viewStyle = getPageData(view).view;
- Promise.all([parentItemPromise, itemsPromise]).then(function (responses) {
-
- var item = responses[0];
- currentItem = item;
- var result = responses[1];
-
- // Scroll back up so they can see the results from the beginning
- window.scrollTo(0, 0);
-
- var view = getPageData(page).view;
-
- var html = '';
- var pagingHtml = LibraryBrowser.getQueryPagingHtml({
- startIndex: query.StartIndex,
- limit: query.Limit,
- totalRecordCount: result.TotalRecordCount,
- showLimit: false,
- addLayoutButton: true,
- currentLayout: view,
- sortButton: true,
- layouts: 'Poster,PosterCard,Thumb',
- filterButton: true
- });
-
- page.querySelector('.listTopPaging').innerHTML = pagingHtml;
-
- updateFilterControls(page);
-
- var context = getParam(page, 'context');
-
- var posterOptions = {
- items: result.Items,
- shape: "auto",
- centerText: true,
- lazy: true,
- coverImage: item.Type == 'PhotoAlbum'
- };
-
- if (view == "Backdrop") {
-
- posterOptions.shape = 'backdrop';
- posterOptions.showTitle = true;
- posterOptions.preferBackdrop = true;
-
- html = LibraryBrowser.getPosterViewHtml(posterOptions);
- }
- else if (view == "Poster") {
-
- posterOptions.showTitle = context == 'photos' ? 'auto' : true;
- posterOptions.overlayText = context == 'photos';
-
- html = LibraryBrowser.getPosterViewHtml(posterOptions);
- }
- else if (view == "PosterCard") {
-
- posterOptions.showTitle = true;
- posterOptions.showYear = true;
- posterOptions.cardLayout = true;
- posterOptions.centerText = false;
-
- html = LibraryBrowser.getPosterViewHtml(posterOptions);
- }
- else if (view == "Thumb") {
-
- posterOptions.preferThumb = true;
- posterOptions.shape = "backdrop";
- html = LibraryBrowser.getPosterViewHtml(posterOptions);
- }
-
- var elem = page.querySelector('#items');
- elem.innerHTML = html + pagingHtml;
- ImageLoader.lazyChildren(elem);
-
- $('.btnFilter', page).on('click', function () {
- showFilterMenu(page);
- });
-
- $('.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(page).view = layout;
- LibraryBrowser.saveViewSetting(getSavedQueryKey(page), layout);
- reloadItems(page);
- });
-
- // On callback make sure to set StartIndex = 0
- $('.btnSort', page).on('click', function () {
- LibraryBrowser.showSortMenu({
- items: [{
- name: Globalize.translate('OptionNameSort'),
- id: 'SortName'
- },
- {
- name: Globalize.translate('OptionCommunityRating'),
- 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('OptionParentalRating'),
- id: 'OfficialRating,SortName'
- },
- {
- name: Globalize.translate('OptionPlayCount'),
- id: 'PlayCount,SortName'
- },
- {
- name: Globalize.translate('OptionReleaseDate'),
- id: 'PremiereDate,SortName'
- },
- {
- name: Globalize.translate('OptionRuntime'),
- id: 'Runtime,SortName'
- }],
- callback: function () {
- reloadItems(page);
- },
- query: query
+ var html = '';
+ var pagingHtml = libraryBrowser.getQueryPagingHtml({
+ startIndex: query.StartIndex,
+ limit: query.Limit,
+ totalRecordCount: result.TotalRecordCount,
+ showLimit: false,
+ addLayoutButton: true,
+ currentLayout: viewStyle,
+ sortButton: true,
+ layouts: 'Poster,PosterCard,Thumb',
+ filterButton: true
});
+
+ view.querySelector('.listTopPaging').innerHTML = pagingHtml;
+
+ updateFilterControls();
+
+ var context = params.context;
+
+ var posterOptions = {
+ items: result.Items,
+ shape: "auto",
+ centerText: true,
+ lazy: true,
+ coverImage: item.Type == 'PhotoAlbum'
+ };
+
+ if (viewStyle == "Backdrop") {
+
+ posterOptions.shape = 'backdrop';
+ posterOptions.showTitle = true;
+ posterOptions.preferBackdrop = true;
+
+ html = libraryBrowser.getPosterViewHtml(posterOptions);
+ }
+ else if (viewStyle == "Poster") {
+
+ posterOptions.showTitle = context == 'photos' ? 'auto' : true;
+ posterOptions.overlayText = context == 'photos';
+
+ html = libraryBrowser.getPosterViewHtml(posterOptions);
+ }
+ else if (viewStyle == "PosterCard") {
+
+ posterOptions.showTitle = true;
+ posterOptions.showYear = true;
+ posterOptions.cardLayout = true;
+ posterOptions.centerText = false;
+
+ html = libraryBrowser.getPosterViewHtml(posterOptions);
+ }
+ else if (viewStyle == "Thumb") {
+
+ posterOptions.preferThumb = true;
+ posterOptions.shape = "backdrop";
+ html = libraryBrowser.getPosterViewHtml(posterOptions);
+ }
+
+ var elem = view.querySelector('#items');
+ elem.innerHTML = html + pagingHtml;
+ ImageLoader.lazyChildren(elem);
+
+ $('.btnFilter', view).on('click', function () {
+ showFilterMenu();
+ });
+
+ $('.btnNextPage', view).on('click', function () {
+ query.StartIndex += query.Limit;
+ reloadItems(view);
+ });
+
+ $('.btnPreviousPage', view).on('click', function () {
+ query.StartIndex -= query.Limit;
+ reloadItems(view);
+ });
+
+ $('.btnChangeLayout', view).on('layoutchange', function (e, layout) {
+ getPageData(view).view = layout;
+ libraryBrowser.saveViewSetting(getSavedQueryKey(), layout);
+ reloadItems(view);
+ });
+
+ // On callback make sure to set StartIndex = 0
+ $('.btnSort', view).on('click', function () {
+ libraryBrowser.showSortMenu({
+ items: [{
+ name: Globalize.translate('OptionNameSort'),
+ id: 'SortName'
+ },
+ {
+ name: Globalize.translate('OptionCommunityRating'),
+ 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('OptionParentalRating'),
+ id: 'OfficialRating,SortName'
+ },
+ {
+ name: Globalize.translate('OptionPlayCount'),
+ id: 'PlayCount,SortName'
+ },
+ {
+ name: Globalize.translate('OptionReleaseDate'),
+ id: 'PremiereDate,SortName'
+ },
+ {
+ name: Globalize.translate('OptionRuntime'),
+ id: 'Runtime,SortName'
+ }],
+ callback: function () {
+ reloadItems(view);
+ },
+ query: query
+ });
+ });
+
+ libraryBrowser.saveQueryValues(params.parentId, query);
+
+ var name = item.Name;
+
+ if (item.IndexNumber != null) {
+ name = item.IndexNumber + " - " + name;
+ }
+ if (item.ParentIndexNumber != null) {
+ name = item.ParentIndexNumber + "." + name;
+ }
+
+ LibraryMenu.setTitle(name);
+
+ view.dispatchEvent(new CustomEvent("displayingitem", {
+ detail: {
+ item: item
+ },
+ bubbles: true
+ }));
+
+ libraryBrowser.setLastRefreshed(view);
+ Dashboard.hideLoadingMsg();
});
-
- LibraryBrowser.saveQueryValues(getParam(page, 'parentId'), query);
-
- var name = item.Name;
-
- if (item.IndexNumber != null) {
- name = item.IndexNumber + " - " + name;
- }
- if (item.ParentIndexNumber != null) {
- name = item.ParentIndexNumber + "." + name;
- }
-
- LibraryMenu.setTitle(name);
-
- page.dispatchEvent(new CustomEvent("displayingitem", {
- detail: {
- item: item
- },
- bubbles: true
- }));
-
- LibraryBrowser.setLastRefreshed(page);
- Dashboard.hideLoadingMsg();
- });
- }
-
- function showFilterMenu(page) {
-
- require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
-
- var filterDialog = new filterDialogFactory({
- query: getQuery(page)
- });
-
- Events.on(filterDialog, 'filterchange', function () {
- reloadItems(page);
- });
-
- filterDialog.show();
- });
- }
-
- function updateFilterControls(page) {
-
- var query = getQuery(page);
-
- $('.alphabetPicker', page).alphaValue(query.NameStartsWithOrGreater);
- }
-
- function onListItemClick(e) {
-
- var page = $(this).parents('.page')[0];
- var query = getQuery(page);
- var info = LibraryBrowser.getListItemInfo(this);
-
- if (info.mediaType == 'Photo') {
- require(['scripts/photos'], function () {
- Photos.startSlideshow(page, query, info.id);
- });
- return false;
}
- }
- pageIdOn('pageinit', "itemListPage", function () {
+ function showFilterMenu() {
- var page = this;
+ require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
+
+ var filterDialog = new filterDialogFactory({
+ query: getQuery()
+ });
+
+ Events.on(filterDialog, 'filterchange', function () {
+ reloadItems();
+ });
+
+ filterDialog.show();
+ });
+ }
+
+ function updateFilterControls() {
+
+ var query = getQuery();
+
+ $('.alphabetPicker', view).alphaValue(query.NameStartsWithOrGreater);
+ }
+
+ function onListItemClick(e) {
+
+ var query = getQuery();
+ var info = libraryBrowser.getListItemInfo(this);
+
+ if (info.mediaType == 'Photo') {
+ require(['scripts/photos'], function () {
+ Photos.startSlideshow(view, query, info.id);
+ });
+ return false;
+ }
+ }
$('.alphabetPicker', this).on('alphaselect', function (e, character) {
- var query = getQuery(page);
+ var query = getQuery();
query.NameStartsWithOrGreater = character;
query.StartIndex = 0;
- reloadItems(page);
+ reloadItems(view);
}).on('alphaclear', function (e) {
- var query = getQuery(page);
+ var query = getQuery();
query.NameStartsWithOrGreater = '';
- reloadItems(page);
+ reloadItems(view);
});
- $(page).on('click', '.mediaItem', onListItemClick);
+ $(view).on('click', '.mediaItem', onListItemClick);
- });
-
- pageIdOn('pagebeforeshow', "itemListPage", function () {
-
- var page = this;
-
- reloadItems(page);
- updateFilterControls(page);
- LibraryMenu.setBackButtonVisible(getParam(page, 'context'));
-
- });
-
- pageIdOn('pagebeforehide', "itemListPage", function () {
-
- currentItem = null;
-
- });
-
-})(jQuery, document);
\ No newline at end of file
+ view.addEventListener('viewbeforeshow', function (e) {
+ reloadItems(view);
+ updateFilterControls();
+ LibraryMenu.setBackButtonVisible(params.context);
+ });
+ };
+});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js
index 6f393e98ed..d47db160b5 100644
--- a/dashboard-ui/scripts/librarybrowser.js
+++ b/dashboard-ui/scripts/librarybrowser.js
@@ -1157,7 +1157,7 @@
}
}
if (item.Type == 'CollectionFolder') {
- return 'itemlist.html?topParentId=' + item.Id + '&parentid=' + item.Id;
+ return 'itemlist.html?topParentId=' + item.Id + '&parentId=' + item.Id;
}
if (item.Type == "PhotoAlbum") {
diff --git a/dashboard-ui/scripts/livetvtunerprovider-satip.js b/dashboard-ui/scripts/livetvtunerprovider-satip.js
index cbeb6a39a8..8ae290105a 100644
--- a/dashboard-ui/scripts/livetvtunerprovider-satip.js
+++ b/dashboard-ui/scripts/livetvtunerprovider-satip.js
@@ -18,34 +18,6 @@
}
}
- function submitForm(page) {
-
- Dashboard.showLoadingMsg();
-
- var id = getParameterByName('id');
-
- if (id) {
-
- ApiClient.getNamedConfiguration("livetv").then(function (config) {
-
- var info = config.TunerHosts.filter(function (i) {
- return i.Id == id;
- })[0];
-
- fillInfoFromPage(page, info);
- submitTunerInfo(page, info);
- });
-
- } else {
- var info = {
- Type: 'satip'
- };
-
- fillInfoFromPage(page, info);
- submitTunerInfo(page, info);
- }
- }
-
function fillInfoFromPage(page, info) {
info.Url = page.querySelector('.txtDevicePath').value;
info.M3UUrl = page.querySelector('.txtM3uUrl').value;
@@ -91,6 +63,34 @@
return function (view, params) {
+ function submitForm() {
+
+ Dashboard.showLoadingMsg();
+
+ var id = params.id;
+
+ if (id) {
+
+ ApiClient.getNamedConfiguration("livetv").then(function (config) {
+
+ var info = config.TunerHosts.filter(function (i) {
+ return i.Id == id;
+ })[0];
+
+ fillInfoFromPage(view, info);
+ submitTunerInfo(view, info);
+ });
+
+ } else {
+ var info = {
+ Type: 'satip'
+ };
+
+ fillInfoFromPage(view, info);
+ submitTunerInfo(view, info);
+ }
+ }
+
function onSelectDiseqCChange(e) {
var select = e.target;
@@ -113,7 +113,7 @@
}
view.querySelector('form').addEventListener('submit', function (e) {
- submitForm(view);
+ submitForm();
e.preventDefault();
return false;
});
diff --git a/dashboard-ui/scripts/secondaryitems.js b/dashboard-ui/scripts/secondaryitems.js
index 381416c95d..0d00ea128e 100644
--- a/dashboard-ui/scripts/secondaryitems.js
+++ b/dashboard-ui/scripts/secondaryitems.js
@@ -1,195 +1,189 @@
-(function ($, document) {
+define(['libraryBrowser', 'jQuery'], function (libraryBrowser, $) {
- var data = {};
+ return function (view, params) {
- function addCurrentItemToQuery(query, item) {
+ var data = {};
- if (item.Type == "Person") {
- query.PersonIds = item.Id;
- }
- else if (item.Type == "Genre") {
- query.Genres = item.Name;
- }
- else if (item.Type == "MusicGenre") {
- query.Genres = item.Name;
- }
- else if (item.Type == "GameGenre") {
- query.Genres = item.Name;
- }
- else if (item.Type == "Studio") {
- query.StudioIds = item.Id;
- }
- else if (item.Type == "MusicArtist") {
- query.ArtistIds = item.Id;
- } else {
- query.ParentId = item.Id;
- }
- }
+ function addCurrentItemToQuery(query, item) {
- function getQuery(parentItem) {
-
- var key = getSavedQueryKey();
- var pageData = data[key];
-
- if (!pageData) {
- pageData = data[key] = {
- query: {
- SortBy: "SortName",
- SortOrder: "Ascending",
- Recursive: getParameterByName('recursive') !== 'false',
- Fields: "PrimaryImageAspectRatio,SortName,SyncInfo",
- ImageTypeLimit: 1,
- EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
- StartIndex: 0,
- Limit: LibraryBrowser.getDefaultPageSize()
- }
- };
-
- var type = getParameterByName('type');
- if (type) {
- pageData.query.IncludeItemTypes = type;
-
- if (type == 'Audio') {
- pageData.query.SortBy = 'Album,SortName';
- }
+ if (item.Type == "Person") {
+ query.PersonIds = item.Id;
}
-
- var filters = getParameterByName('filters');
- if (type) {
- pageData.query.Filters = filters;
+ else if (item.Type == "Genre") {
+ query.Genres = item.Name;
}
-
- if (parentItem) {
- addCurrentItemToQuery(pageData.query, parentItem);
+ else if (item.Type == "MusicGenre") {
+ query.Genres = item.Name;
}
-
- LibraryBrowser.loadSavedQueryValues(key, pageData.query);
- }
- return pageData.query;
- }
-
- function getSavedQueryKey() {
-
- return LibraryBrowser.getSavedQueryKey();
- }
-
- function onListItemClick(e) {
-
- var page = $(this).parents('.page')[0];
- var info = LibraryBrowser.getListItemInfo(this);
-
- if (info.mediaType == 'Photo') {
- var query = getQuery();
-
- require(['scripts/photos'], function () {
- Photos.startSlideshow(page, query, info.id);
- });
- return false;
- }
- }
-
- function reloadItems(page, parentItem) {
-
- Dashboard.showLoadingMsg();
-
- var query = getQuery(parentItem);
-
- ApiClient.getItems(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,
- showLimit: false
- });
-
- page.querySelector('.listTopPaging').innerHTML = pagingHtml;
-
- if (query.IncludeItemTypes == "Audio") {
-
- html = '
' + LibraryBrowser.getListViewHtml({
- items: result.Items,
- playFromHere: true,
- defaultAction: 'playallfromhere',
- smallIcon: true
- }) + '
';
-
+ else if (item.Type == "GameGenre") {
+ query.Genres = item.Name;
+ }
+ else if (item.Type == "Studio") {
+ query.StudioIds = item.Id;
+ }
+ else if (item.Type == "MusicArtist") {
+ query.ArtistIds = item.Id;
} else {
- var posterOptions = {
- items: result.Items,
- shape: "auto",
- centerText: true,
- lazy: true
+ query.ParentId = item.Id;
+ }
+ }
+
+ function getQuery(parentItem) {
+
+ var key = getSavedQueryKey();
+ var pageData = data[key];
+
+ if (!pageData) {
+ pageData = data[key] = {
+ query: {
+ SortBy: "SortName",
+ SortOrder: "Ascending",
+ Recursive: params.recursive !== 'false',
+ Fields: "PrimaryImageAspectRatio,SortName,SyncInfo",
+ ImageTypeLimit: 1,
+ EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
+ StartIndex: 0,
+ Limit: libraryBrowser.getDefaultPageSize()
+ }
};
- if (query.IncludeItemTypes == "MusicAlbum") {
- posterOptions.overlayText = false;
- posterOptions.showParentTitle = true;
- posterOptions.overlayPlayButton = true;
- }
- else if (query.IncludeItemTypes == "MusicArtist") {
- posterOptions.overlayText = false;
- posterOptions.overlayPlayButton = true;
- }
- else if (query.IncludeItemTypes == "Episode") {
- posterOptions.overlayText = false;
- posterOptions.showParentTitle = true;
- posterOptions.showTitle = true;
- posterOptions.overlayPlayButton = true;
+ var type = params.type;
+ if (type) {
+ pageData.query.IncludeItemTypes = type;
+
+ if (type == 'Audio') {
+ pageData.query.SortBy = 'Album,SortName';
+ }
}
- // Poster
- html = LibraryBrowser.getPosterViewHtml(posterOptions);
+ var filters = params.filters;
+ if (type) {
+ pageData.query.Filters = filters;
+ }
+
+ if (parentItem) {
+ addCurrentItemToQuery(pageData.query, parentItem);
+ }
+
+ libraryBrowser.loadSavedQueryValues(key, pageData.query);
+ }
+ return pageData.query;
+ }
+
+ function getSavedQueryKey() {
+
+ return libraryBrowser.getSavedQueryKey();
+ }
+
+ function onListItemClick(e) {
+
+ var info = libraryBrowser.getListItemInfo(this);
+
+ if (info.mediaType == 'Photo') {
+ var query = getQuery();
+
+ require(['scripts/photos'], function () {
+ Photos.startSlideshow(view, query, info.id);
+ });
+ return false;
+ }
+ }
+
+ function reloadItems(parentItem) {
+
+ Dashboard.showLoadingMsg();
+
+ var query = getQuery(parentItem);
+
+ ApiClient.getItems(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,
+ showLimit: false
+ });
+
+ view.querySelector('.listTopPaging').innerHTML = pagingHtml;
+
+ if (query.IncludeItemTypes == "Audio") {
+
+ html = '
' + libraryBrowser.getListViewHtml({
+ items: result.Items,
+ playFromHere: true,
+ defaultAction: 'playallfromhere',
+ smallIcon: true
+ }) + '
';
+
+ } else {
+ var posterOptions = {
+ items: result.Items,
+ shape: "auto",
+ centerText: true,
+ lazy: true
+ };
+
+ if (query.IncludeItemTypes == "MusicAlbum") {
+ posterOptions.overlayText = false;
+ posterOptions.showParentTitle = true;
+ posterOptions.overlayPlayButton = true;
+ }
+ else if (query.IncludeItemTypes == "MusicArtist") {
+ posterOptions.overlayText = false;
+ posterOptions.overlayPlayButton = true;
+ }
+ else if (query.IncludeItemTypes == "Episode") {
+ posterOptions.overlayText = false;
+ posterOptions.showParentTitle = true;
+ posterOptions.showTitle = true;
+ posterOptions.overlayPlayButton = true;
+ }
+
+ // Poster
+ html = libraryBrowser.getPosterViewHtml(posterOptions);
+ }
+
+ var elem = view.querySelector('#items');
+ elem.innerHTML = html + pagingHtml;
+ ImageLoader.lazyChildren(elem);
+
+ $('.btnNextPage', view).on('click', function () {
+ query.StartIndex += query.Limit;
+ reloadItems(parentItem);
+ });
+
+ $('.btnPreviousPage', view).on('click', function () {
+ query.StartIndex -= query.Limit;
+ reloadItems(parentItem);
+ });
+
+ libraryBrowser.setLastRefreshed(view);
+ Dashboard.hideLoadingMsg();
+ });
+ }
+
+ $(view).on('click', '.mediaItem', onListItemClick);
+
+ view.addEventListener('viewbeforeshow', function (e) {
+ if (params.parentId) {
+ ApiClient.getItem(Dashboard.getCurrentUserId(), params.parentId).then(function (parent) {
+ LibraryMenu.setTitle(parent.Name);
+
+ if (libraryBrowser.needsRefresh(view)) {
+ reloadItems(parent);
+ }
+ });
}
- var elem = page.querySelector('#items');
- elem.innerHTML = html + pagingHtml;
- ImageLoader.lazyChildren(elem);
-
- $('.btnNextPage', page).on('click', function () {
- query.StartIndex += query.Limit;
- reloadItems(page, parentItem);
- });
-
- $('.btnPreviousPage', page).on('click', function () {
- query.StartIndex -= query.Limit;
- reloadItems(page, parentItem);
- });
-
- LibraryBrowser.setLastRefreshed(page);
- Dashboard.hideLoadingMsg();
+ else if (libraryBrowser.needsRefresh(view)) {
+ reloadItems();
+ }
});
- }
+ };
- pageIdOn('pageinit', "secondaryItemsPage", function () {
- var page = this;
-
- $(page).on('click', '.mediaItem', onListItemClick);
-
- });
-
- pageIdOn('pagebeforeshow', "secondaryItemsPage", function () {
-
- var page = this;
-
- if (getParameterByName('parentid')) {
- ApiClient.getItem(Dashboard.getCurrentUserId(), getParameterByName('parentid')).then(function (parent) {
- LibraryMenu.setTitle(parent.Name);
-
- if (LibraryBrowser.needsRefresh(page)) {
- reloadItems(page, parent);
- }
- });
- }
-
- else if (LibraryBrowser.needsRefresh(page)) {
- reloadItems(page);
- }
- });
-
-})(jQuery, document);
\ No newline at end of file
+});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js
index 8194fb9e49..2beab39105 100644
--- a/dashboard-ui/scripts/site.js
+++ b/dashboard-ui/scripts/site.js
@@ -2447,8 +2447,9 @@ var AppInfo = {};
defineRoute({
path: '/itemlist.html',
- dependencies: ['jQuery'],
- autoFocus: false
+ dependencies: ['paper-checkbox', 'scripts/alphapicker'],
+ autoFocus: false,
+ controller: 'scripts/itemlistpage'
});
defineRoute({
@@ -2746,8 +2747,9 @@ var AppInfo = {};
defineRoute({
path: '/secondaryitems.html',
- dependencies: ['jQuery'],
- autoFocus: false
+ dependencies: [],
+ autoFocus: false,
+ controller: 'scripts/secondaryitems'
});
defineRoute({
diff --git a/dashboard-ui/scripts/tvgenres.js b/dashboard-ui/scripts/tvgenres.js
index 2b6f5e9277..c6df98be2b 100644
--- a/dashboard-ui/scripts/tvgenres.js
+++ b/dashboard-ui/scripts/tvgenres.js
@@ -1,144 +1,147 @@
-(function ($, document) {
-
- var data = {};
- function getPageData() {
- var key = getSavedQueryKey();
- var pageData = data[key];
-
- if (!pageData) {
- pageData = data[key] = {
- query: {
- SortBy: "SortName",
- SortOrder: "Ascending",
- IncludeItemTypes: "Series",
- 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([], 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: "Series",
+ 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,
+ context: 'tv',
+ showItemCounts: true,
+ centerText: true,
+ lazy: true,
+ overlayPlayButton: true
+ });
+ }
+ else if (viewStyle == "ThumbCard") {
+
+ html = LibraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "backdrop",
+ preferThumb: true,
+ context: 'tv',
+ showItemCounts: true,
+ cardLayout: true,
+ showTitle: true,
+ lazy: true
+ });
+ }
+ else if (viewStyle == "PosterCard") {
+ html = LibraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "portrait",
+ context: 'tv',
+ showItemCounts: true,
+ lazy: true,
+ cardLayout: true,
+ showTitle: true
+ });
+ }
+ else if (viewStyle == "Poster") {
+ html = LibraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "portrait",
+ context: 'tv',
+ centerText: true,
+ showItemCounts: true,
+ lazy: true,
+ overlayPlayButton: true
+ });
+ }
+
+ var elem = context.querySelector('#items');
+ 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 == "Thumb") {
- html = LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "backdrop",
- preferThumb: true,
- context: 'tv',
- showItemCounts: true,
- centerText: true,
- lazy: true,
- overlayPlayButton: true
- });
- }
- else if (view == "ThumbCard") {
-
- html = LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "backdrop",
- preferThumb: true,
- context: 'tv',
- showItemCounts: true,
- cardLayout: true,
- showTitle: true,
- lazy: true
- });
- }
- else if (view == "PosterCard") {
- html = LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "portrait",
- context: 'tv',
- showItemCounts: true,
- lazy: true,
- cardLayout: true,
- showTitle: true
- });
- }
- else if (view == "Poster") {
- html = LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "portrait",
- context: 'tv',
- centerText: true,
- showItemCounts: true,
- lazy: true,
- overlayPlayButton: true
- });
- }
-
- var elem = page.querySelector('#items');
- 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.TvPage.renderGenresTab = function (page, tabContent) {
-
- if (LibraryBrowser.needsRefresh(tabContent)) {
- reloadItems(tabContent);
- }
- };
-
-})(jQuery, document);
\ No newline at end of file
+
self.renderTab = function () {
+
+ if (LibraryBrowser.needsRefresh(tabContent)) {
+ reloadItems(tabContent);
+ }
+ };
+ };
+});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/tvlatest.js b/dashboard-ui/scripts/tvlatest.js
index 378db861b9..e25d09a420 100644
--- a/dashboard-ui/scripts/tvlatest.js
+++ b/dashboard-ui/scripts/tvlatest.js
@@ -1,87 +1,90 @@
-(function ($, document) {
-
- function getView() {
-
- return 'Thumb';
+define([], function () {
+
+ function getView() {
+
+ return 'Thumb';
+ }
+
+ function loadLatest(context, params) {
+
+ Dashboard.showLoadingMsg();
+
+ var userId = Dashboard.getCurrentUserId();
+
+ var parentId = params.topParentId;
+
+ var limit = 30;
+
+ if (AppInfo.hasLowImageBandwidth) {
+ limit = 16;
+ }
+
+ var options = {
+
+ IncludeItemTypes: "Episode",
+ Limit: limit,
+ Fields: "PrimaryImageAspectRatio,SyncInfo",
+ ParentId: parentId,
+ ImageTypeLimit: 1,
+ EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
+ };
+
+ ApiClient.getJSON(ApiClient.getUrl('Users/' + userId + '/Items/Latest', options)).then(function (items) {
+
+ var view = getView();
+ var html = '';
+
+ if (view == 'ThumbCard') {
+
+ html += LibraryBrowser.getPosterViewHtml({
+ items: items,
+ shape: "backdrop",
+ preferThumb: true,
+ inheritThumb: false,
+ showUnplayedIndicator: false,
+ showChildCountIndicator: true,
+ overlayText: false,
+ showParentTitle: true,
+ lazy: true,
+ showTitle: true,
+ cardLayout: true
+ });
+
+ } else if (view == 'Thumb') {
+
+ html += LibraryBrowser.getPosterViewHtml({
+ items: items,
+ shape: "backdrop",
+ preferThumb: true,
+ inheritThumb: false,
+ showParentTitle: false,
+ showUnplayedIndicator: false,
+ showChildCountIndicator: true,
+ overlayText: false,
+ centerText: true,
+ lazy: true,
+ showTitle: false,
+ overlayPlayButton: AppInfo.enableAppLayouts
+ });
+ }
+
+ var elem = context.querySelector('#latestEpisodes');
+ elem.innerHTML = html;
+ ImageLoader.lazyChildren(elem);
+
+ Dashboard.hideLoadingMsg();
+ LibraryBrowser.setLastRefreshed(context);
+ });
}
-
- function loadLatest(page) {
-
- Dashboard.showLoadingMsg();
-
- var userId = Dashboard.getCurrentUserId();
-
- var parentId = LibraryMenu.getTopParentId();
-
- var limit = 30;
-
- if (AppInfo.hasLowImageBandwidth) {
- limit = 16;
- }
-
- var options = {
-
- IncludeItemTypes: "Episode",
- Limit: limit,
- Fields: "PrimaryImageAspectRatio,SyncInfo",
- ParentId: parentId,
- ImageTypeLimit: 1,
- EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
+
return function (view, params, tabContent) {
+
+ var self = this;
+
+ self.renderTab = function() {
+
+ if (LibraryBrowser.needsRefresh(tabContent)) {
+ loadLatest(tabContent, params);
+ }
};
-
- ApiClient.getJSON(ApiClient.getUrl('Users/' + userId + '/Items/Latest', options)).then(function (items) {
-
- var view = getView();
- var html = '';
-
- if (view == 'ThumbCard') {
-
- html += LibraryBrowser.getPosterViewHtml({
- items: items,
- shape: "backdrop",
- preferThumb: true,
- inheritThumb: false,
- showUnplayedIndicator: false,
- showChildCountIndicator: true,
- overlayText: false,
- showParentTitle: true,
- lazy: true,
- showTitle: true,
- cardLayout: true
- });
-
- } else if (view == 'Thumb') {
-
- html += LibraryBrowser.getPosterViewHtml({
- items: items,
- shape: "backdrop",
- preferThumb: true,
- inheritThumb: false,
- showParentTitle: false,
- showUnplayedIndicator: false,
- showChildCountIndicator: true,
- overlayText: false,
- centerText: true,
- lazy: true,
- showTitle: false,
- overlayPlayButton: AppInfo.enableAppLayouts
- });
- }
-
- var elem = page.querySelector('#latestEpisodes');
- elem.innerHTML = html;
- ImageLoader.lazyChildren(elem);
-
- Dashboard.hideLoadingMsg();
- LibraryBrowser.setLastRefreshed(page);
- });
- }
-
- window.TvPage.renderLatestTab = function (page, tabContent) {
-
- if (LibraryBrowser.needsRefresh(tabContent)) {
- loadLatest(tabContent);
- }
};
-
-})(jQuery, document);
\ No newline at end of file
+});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/tvrecommended.js b/dashboard-ui/scripts/tvrecommended.js
index 75e5c737c6..f12d743738 100644
--- a/dashboard-ui/scripts/tvrecommended.js
+++ b/dashboard-ui/scripts/tvrecommended.js
@@ -1,258 +1,246 @@
define(['libraryBrowser', 'scripts/alphapicker'], function (libraryBrowser) {
- function getView() {
-
- return 'Thumb';
- }
-
- function getResumeView() {
-
- return 'Poster';
- }
-
- function reload(page) {
-
- Dashboard.showLoadingMsg();
-
- loadResume(page);
- loadNextUp(page);
- }
-
- 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"
- };
-
- query.ParentId = LibraryMenu.getTopParentId();
-
- ApiClient.getNextUpEpisodes(query).then(function (result) {
-
- if (result.Items.length) {
- page.querySelector('.noNextUpItems').classList.add('hide');
- } else {
- page.querySelector('.noNextUpItems').classList.remove('hide');
- }
-
- var view = getView();
- var html = '';
-
- if (view == 'ThumbCard') {
-
- html += libraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "backdrop",
- showTitle: true,
- preferThumb: true,
- showParentTitle: true,
- lazy: true,
- cardLayout: true,
- showDetailsMenu: true
- });
-
- } else if (view == 'Thumb') {
-
- 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
- });
- }
-
- var elem = page.querySelector('#nextUpItems');
- elem.innerHTML = html;
- ImageLoader.lazyChildren(elem);
- Dashboard.hideLoadingMsg();
-
- libraryBrowser.setLastRefreshed(page);
- });
- }
-
- function enableScrollX() {
- return browserInfo.mobile && AppInfo.enableAppLayouts;
- }
-
- function getThumbShape() {
- return enableScrollX() ? 'overflowBackdrop' : 'backdrop';
- }
-
- function loadResume(page) {
-
- var parentId = LibraryMenu.getTopParentId();
-
- var limit = 6;
-
- var options = {
-
- SortBy: "DatePlayed",
- SortOrder: "Descending",
- IncludeItemTypes: "Episode",
- Filters: "IsResumable",
- Limit: limit,
- Recursive: true,
- Fields: "PrimaryImageAspectRatio,SeriesInfo,UserData,SyncInfo",
- ExcludeLocationTypes: "Virtual",
- ParentId: parentId,
- ImageTypeLimit: 1,
- EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
- };
-
- ApiClient.getItems(Dashboard.getCurrentUserId(), options).then(function (result) {
-
- if (result.Items.length) {
- page.querySelector('#resumableSection').classList.remove('hide');
- } else {
- page.querySelector('#resumableSection').classList.add('hide');
- }
-
- var view = getResumeView();
- var html = '';
-
- if (view == 'PosterCard') {
-
- html += libraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: getThumbShape(),
- showTitle: true,
- showParentTitle: true,
- lazy: true,
- cardLayout: true,
- showDetailsMenu: true,
- preferThumb: true
- });
-
- } else if (view == 'Poster') {
-
- html += libraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: getThumbShape(),
- showTitle: true,
- showParentTitle: true,
- lazy: true,
- showDetailsMenu: true,
- overlayPlayButton: true,
- preferThumb: true,
- centerText: true
- });
- }
-
- var elem = page.querySelector('#resumableItems');
- elem.innerHTML = html;
- ImageLoader.lazyChildren(elem);
- });
- }
-
- function initSuggestedTab(page, tabContent) {
-
- if (enableScrollX()) {
- tabContent.querySelector('#resumableItems').classList.add('hiddenScrollX');
- } else {
- tabContent.querySelector('#resumableItems').classList.remove('hiddenScrollX');
- }
- libraryBrowser.createCardMenus(tabContent.querySelector('#resumableItems'));
- }
-
- function loadSuggestionsTab(page, tabContent) {
-
- if (libraryBrowser.needsRefresh(tabContent)) {
- reload(tabContent);
- }
- }
-
- function loadTab(page, index) {
-
- var tabContent = page.querySelector('.pageTabContent[data-index=\'' + index + '\']');
- var depends = [];
- var scope = 'TvPage';
- var renderMethod = '';
- var initMethod = '';
-
- switch (index) {
-
- case 0:
- initMethod = 'initSuggestedTab';
- renderMethod = 'renderSuggestedTab';
- break;
- case 1:
- depends.push('scripts/tvlatest');
- renderMethod = 'renderLatestTab';
- break;
- case 2:
- depends.push('scripts/tvupcoming');
- renderMethod = 'renderUpcomingTab';
- break;
- case 3:
- depends.push('scripts/tvshows');
- renderMethod = 'renderSeriesTab';
- initMethod = 'initSeriesTab';
- break;
- case 4:
- depends.push('scripts/episodes');
- renderMethod = 'renderEpisodesTab';
- initMethod = 'initEpisodesTab';
- break;
- case 5:
- depends.push('scripts/tvgenres');
- renderMethod = 'renderGenresTab';
- break;
- case 6:
- depends.push('scripts/tvstudios');
- 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.TvPage = window.TvPage || {};
- window.TvPage.renderSuggestedTab = loadSuggestionsTab;
- window.TvPage.initSuggestedTab = initSuggestedTab;
-
- function onPlaybackStop(e, state) {
-
- if (state.NowPlayingItem && state.NowPlayingItem.MediaType == 'Video') {
- var page = $.mobile.activePage;
- var pages = page.querySelector('neon-animated-pages');
-
- pages.dispatchEvent(new CustomEvent("tabchange", {}));
- }
- }
-
return function (view, params) {
- var tabs = view.querySelector('paper-tabs');
+ var self = this;
+
+ function getView() {
+
+ return 'Thumb';
+ }
+
+ function getResumeView() {
+
+ return 'Poster';
+ }
+
+ function reload() {
+
+ Dashboard.showLoadingMsg();
+
+ loadResume();
+ loadNextUp();
+ }
+
+ function loadNextUp() {
+
+ 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"
+ };
+
+ query.ParentId = LibraryMenu.getTopParentId();
+
+ ApiClient.getNextUpEpisodes(query).then(function (result) {
+
+ if (result.Items.length) {
+ view.querySelector('.noNextUpItems').classList.add('hide');
+ } else {
+ view.querySelector('.noNextUpItems').classList.remove('hide');
+ }
+
+ var viewStyle = getView();
+ var html = '';
+
+ if (viewStyle == 'ThumbCard') {
+
+ html += libraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "backdrop",
+ showTitle: true,
+ preferThumb: true,
+ showParentTitle: true,
+ lazy: true,
+ cardLayout: true,
+ showDetailsMenu: true
+ });
+
+ } else if (viewStyle == 'Thumb') {
+
+ 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
+ });
+ }
+
+ var elem = view.querySelector('#nextUpItems');
+ elem.innerHTML = html;
+ ImageLoader.lazyChildren(elem);
+ Dashboard.hideLoadingMsg();
+
+ libraryBrowser.setLastRefreshed(view);
+ });
+ }
+
+ function enableScrollX() {
+ return browserInfo.mobile && AppInfo.enableAppLayouts;
+ }
+
+ function getThumbShape() {
+ return enableScrollX() ? 'overflowBackdrop' : 'backdrop';
+ }
+
+ function loadResume() {
+
+ var parentId = LibraryMenu.getTopParentId();
+
+ var limit = 6;
+
+ var options = {
+
+ SortBy: "DatePlayed",
+ SortOrder: "Descending",
+ IncludeItemTypes: "Episode",
+ Filters: "IsResumable",
+ Limit: limit,
+ Recursive: true,
+ Fields: "PrimaryImageAspectRatio,SeriesInfo,UserData,SyncInfo",
+ ExcludeLocationTypes: "Virtual",
+ ParentId: parentId,
+ ImageTypeLimit: 1,
+ EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
+ };
+
+ ApiClient.getItems(Dashboard.getCurrentUserId(), options).then(function (result) {
+
+ if (result.Items.length) {
+ view.querySelector('#resumableSection').classList.remove('hide');
+ } else {
+ view.querySelector('#resumableSection').classList.add('hide');
+ }
+
+ var viewStyle = getResumeView();
+ var html = '';
+
+ if (viewStyle == 'PosterCard') {
+
+ html += libraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: getThumbShape(),
+ showTitle: true,
+ showParentTitle: true,
+ lazy: true,
+ cardLayout: true,
+ showDetailsMenu: true,
+ preferThumb: true
+ });
+
+ } else if (viewStyle == 'Poster') {
+
+ html += libraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: getThumbShape(),
+ showTitle: true,
+ showParentTitle: true,
+ lazy: true,
+ showDetailsMenu: true,
+ overlayPlayButton: true,
+ preferThumb: true,
+ centerText: true
+ });
+ }
+
+ var elem = view.querySelector('#resumableItems');
+ elem.innerHTML = html;
+ ImageLoader.lazyChildren(elem);
+ });
+ }
+
+ self.initTab = function () {
+
+ var tabContent = self.tabContent;
+ if (enableScrollX()) {
+ tabContent.querySelector('#resumableItems').classList.add('hiddenScrollX');
+ } else {
+ tabContent.querySelector('#resumableItems').classList.remove('hiddenScrollX');
+ }
+ libraryBrowser.createCardMenus(tabContent.querySelector('#resumableItems'));
+ };
+
+ self.renderTab = function () {
+ var tabContent = self.tabContent;
+ if (libraryBrowser.needsRefresh(tabContent)) {
+ reload();
+ }
+ };
+
+ function loadTab(page, index) {
+
+ var tabContent = page.querySelector('.pageTabContent[data-index=\'' + index + '\']');
+ var depends = [];
+
+ switch (index) {
+
+ case 0:
+ break;
+ case 1:
+ depends.push('scripts/tvlatest');
+ break;
+ case 2:
+ depends.push('scripts/tvupcoming');
+ break;
+ case 3:
+ depends.push('scripts/tvshows');
+ break;
+ case 4:
+ depends.push('scripts/episodes');
+ break;
+ case 5:
+ depends.push('scripts/tvgenres');
+ break;
+ case 6:
+ depends.push('scripts/tvstudios');
+ break;
+ default:
+ break;
+ }
+
+ require(depends, function (controllerFactory) {
+
+ if (index == 0) {
+ self.tabContent = tabContent;
+ }
+ var controller = index ? new controllerFactory(view, params, tabContent) : self;
+
+ if (controller.initTab) {
+ controller.initTab();
+ tabContent.initComplete = true;
+ }
+
+ controller.renderTab();
+
+ });
+ }
+
+ function onPlaybackStop(e, state) {
+
+ if (state.NowPlayingItem && state.NowPlayingItem.MediaType == 'Video') {
+ var pages = view.querySelector('neon-animated-pages');
+
+ pages.dispatchEvent(new CustomEvent("tabchange", {}));
+ }
+ }
+
var pages = view.querySelector('neon-animated-pages');
var baseUrl = 'tv.html';
- var topParentId = LibraryMenu.getTopParentId();
+ var topParentId = params.topParentId;
if (topParentId) {
baseUrl += '?topParentId=' + topParentId;
}
@@ -264,7 +252,7 @@
}
libraryBrowser.createCardMenus(view.querySelector('#resumableItems'));
- libraryBrowser.configurePaperLibraryTabs(view, tabs, pages, baseUrl);
+ libraryBrowser.configurePaperLibraryTabs(view, view.querySelector('paper-tabs'), pages, baseUrl);
pages.addEventListener('tabchange', function (e) {
loadTab(view, parseInt(this.selected));
@@ -272,23 +260,21 @@
view.addEventListener('viewbeforeshow', function (e) {
- var page = this;
+ if (!view.getAttribute('data-title')) {
- if (!page.getAttribute('data-title')) {
-
- var parentId = LibraryMenu.getTopParentId();
+ var parentId = params.topParentId;
if (parentId) {
ApiClient.getItem(Dashboard.getCurrentUserId(), parentId).then(function (item) {
- page.setAttribute('data-title', item.Name);
+ view.setAttribute('data-title', item.Name);
LibraryMenu.setTitle(item.Name);
});
} else {
- page.setAttribute('data-title', Globalize.translate('TabShows'));
+ view.setAttribute('data-title', Globalize.translate('TabShows'));
LibraryMenu.setTitle(Globalize.translate('TabShows'));
}
}
@@ -298,7 +284,6 @@
view.addEventListener('viewbeforehide', function (e) {
- var page = this;
Events.off(MediaController, 'playbackstop', onPlaybackStop);
});
};
diff --git a/dashboard-ui/scripts/tvshows.js b/dashboard-ui/scripts/tvshows.js
index dbfa78739c..419016b1a4 100644
--- a/dashboard-ui/scripts/tvshows.js
+++ b/dashboard-ui/scripts/tvshows.js
@@ -1,270 +1,273 @@
-(function ($, document) {
-
- var data = {};
-
- function getPageData(context) {
- var key = getSavedQueryKey(context);
- var pageData = data[key];
-
- if (!pageData) {
- pageData = data[key] = {
- query: {
- SortBy: "SortName",
- SortOrder: "Ascending",
- IncludeItemTypes: "Series",
- Recursive: true,
- Fields: "PrimaryImageAspectRatio,SortName,SyncInfo",
- ImageTypeLimit: 1,
- EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
- StartIndex: 0,
- Limit: LibraryBrowser.getDefaultPageSize()
- },
- view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Poster', 'Thumb')
- };
-
- pageData.query.ParentId = LibraryMenu.getTopParentId();
- LibraryBrowser.loadSavedQueryValues(key, pageData.query);
- }
- return pageData;
- }
-
- function getQuery(context) {
-
- return getPageData(context).query;
- }
-
- function getSavedQueryKey(context) {
-
- if (!context.savedQueryKey) {
- context.savedQueryKey = LibraryBrowser.getSavedQueryKey('series');
- }
- return context.savedQueryKey;
- }
-
- function reloadItems(page) {
-
- Dashboard.showLoadingMsg();
-
- var query = getQuery(page);
-
- ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
-
- // Scroll back up so they can see the results from the beginning
- window.scrollTo(0, 0);
-
- var view = getPageData(page).view;
-
- 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',
- filterButton: true
- });
-
- page.querySelector('.listTopPaging').innerHTML = pagingHtml;
-
- updateFilterControls(page);
-
- if (view == "Thumb") {
-
- html = LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "backdrop",
- preferThumb: true,
- context: 'tv',
- lazy: true,
- overlayPlayButton: true
- });
-
- }
- else if (view == "ThumbCard") {
-
- html = LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "backdrop",
- preferThumb: true,
- context: 'tv',
- lazy: true,
- cardLayout: true,
- showTitle: true,
- showSeriesYear: true
- });
- }
- else if (view == "Banner") {
-
- html = LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "banner",
- preferBanner: true,
- context: 'tv',
- lazy: true
- });
- }
- else if (view == "List") {
-
- html = LibraryBrowser.getListViewHtml({
- items: result.Items,
- context: 'tv',
- sortBy: query.SortBy
- });
- }
- else if (view == "PosterCard") {
- html = LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "portrait",
- context: 'tv',
- showTitle: true,
- showYear: true,
- lazy: true,
- cardLayout: true
- });
- }
- else {
-
- // Poster
- html = LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "portrait",
- context: 'tv',
- centerText: true,
- lazy: true,
- overlayPlayButton: true
- });
- }
-
- var elem = page.querySelector('#items');
- 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);
- });
-
- $('.btnChangeLayout', page).on('layoutchange', function (e, layout) {
- getPageData(page).view = layout;
- LibraryBrowser.saveViewSetting(getSavedQueryKey(page), layout);
- reloadItems(page);
- });
-
- $('.btnFilter', page).on('click', function () {
- showFilterMenu(page);
- });
-
- // On callback make sure to set StartIndex = 0
- $('.btnSort', page).on('click', function () {
- LibraryBrowser.showSortMenu({
- items: [{
- name: Globalize.translate('OptionNameSort'),
- id: 'SortName'
- },
- {
- name: Globalize.translate('OptionImdbRating'),
- id: 'CommunityRating,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'
- }],
- callback: function () {
- reloadItems(page);
- },
- query: query
- });
- });
-
- LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
-
- LibraryBrowser.setLastRefreshed(page);
- Dashboard.hideLoadingMsg();
- });
- }
-
- function showFilterMenu(page) {
-
- require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
-
- var filterDialog = new filterDialogFactory({
- query: getQuery(page),
- mode: 'series'
- });
-
- Events.on(filterDialog, 'filterchange', function () {
- reloadItems(page);
- });
-
- filterDialog.show();
- });
- }
-
- function updateFilterControls(tabContent) {
-
- var query = getQuery(tabContent);
- $('.alphabetPicker', tabContent).alphaValue(query.NameStartsWith);
- }
-
- function initPage(tabContent) {
-
- $('.alphabetPicker', tabContent).on('alphaselect', function (e, character) {
-
- var query = getQuery(tabContent);
- query.NameStartsWithOrGreater = character;
- query.StartIndex = 0;
-
- reloadItems(tabContent);
-
- }).on('alphaclear', function (e) {
-
- var query = getQuery(tabContent);
- query.NameStartsWithOrGreater = '';
-
- reloadItems(tabContent);
- });
- }
-
- window.TvPage.initSeriesTab = function (page, tabContent) {
-
- initPage(tabContent);
- };
-
- window.TvPage.renderSeriesTab = function (page, tabContent) {
-
- if (LibraryBrowser.needsRefresh(tabContent)) {
- reloadItems(tabContent);
- updateFilterControls(tabContent);
- }
- };
-
-})(jQuery, document);
\ No newline at end of file
+define([], function () {
+
+ return function (view, params, tabContent) {
+
+ var self = this;
+
+ var data = {};
+
+ function getPageData(context) {
+ var key = getSavedQueryKey(context);
+ var pageData = data[key];
+
+ if (!pageData) {
+ pageData = data[key] = {
+ query: {
+ SortBy: "SortName",
+ SortOrder: "Ascending",
+ IncludeItemTypes: "Series",
+ Recursive: true,
+ Fields: "PrimaryImageAspectRatio,SortName,SyncInfo",
+ ImageTypeLimit: 1,
+ EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
+ StartIndex: 0,
+ Limit: LibraryBrowser.getDefaultPageSize()
+ },
+ view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Poster', 'Thumb')
+ };
+
+ pageData.query.ParentId = params.topParentId;
+ LibraryBrowser.loadSavedQueryValues(key, pageData.query);
+ }
+ return pageData;
+ }
+
+ function getQuery(context) {
+
+ return getPageData(context).query;
+ }
+
+ function getSavedQueryKey(context) {
+
+ if (!context.savedQueryKey) {
+ context.savedQueryKey = LibraryBrowser.getSavedQueryKey('series');
+ }
+ return context.savedQueryKey;
+ }
+
+ function reloadItems(page) {
+
+ Dashboard.showLoadingMsg();
+
+ var query = getQuery(page);
+
+ ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
+
+ // Scroll back up so they can see the results from the beginning
+ window.scrollTo(0, 0);
+
+ var view = getPageData(page).view;
+
+ 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',
+ filterButton: true
+ });
+
+ page.querySelector('.listTopPaging').innerHTML = pagingHtml;
+
+ updateFilterControls(page);
+
+ if (view == "Thumb") {
+
+ html = LibraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "backdrop",
+ preferThumb: true,
+ context: 'tv',
+ lazy: true,
+ overlayPlayButton: true
+ });
+
+ }
+ else if (view == "ThumbCard") {
+
+ html = LibraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "backdrop",
+ preferThumb: true,
+ context: 'tv',
+ lazy: true,
+ cardLayout: true,
+ showTitle: true,
+ showSeriesYear: true
+ });
+ }
+ else if (view == "Banner") {
+
+ html = LibraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "banner",
+ preferBanner: true,
+ context: 'tv',
+ lazy: true
+ });
+ }
+ else if (view == "List") {
+
+ html = LibraryBrowser.getListViewHtml({
+ items: result.Items,
+ context: 'tv',
+ sortBy: query.SortBy
+ });
+ }
+ else if (view == "PosterCard") {
+ html = LibraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "portrait",
+ context: 'tv',
+ showTitle: true,
+ showYear: true,
+ lazy: true,
+ cardLayout: true
+ });
+ }
+ else {
+
+ // Poster
+ html = LibraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "portrait",
+ context: 'tv',
+ centerText: true,
+ lazy: true,
+ overlayPlayButton: true
+ });
+ }
+
+ var elem = page.querySelector('#items');
+ 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);
+ });
+
+ $('.btnChangeLayout', page).on('layoutchange', function (e, layout) {
+ getPageData(page).view = layout;
+ LibraryBrowser.saveViewSetting(getSavedQueryKey(page), layout);
+ reloadItems(page);
+ });
+
+ $('.btnFilter', page).on('click', function () {
+ showFilterMenu(page);
+ });
+
+ // On callback make sure to set StartIndex = 0
+ $('.btnSort', page).on('click', function () {
+ LibraryBrowser.showSortMenu({
+ items: [{
+ name: Globalize.translate('OptionNameSort'),
+ id: 'SortName'
+ },
+ {
+ name: Globalize.translate('OptionImdbRating'),
+ id: 'CommunityRating,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'
+ }],
+ callback: function () {
+ reloadItems(page);
+ },
+ query: query
+ });
+ });
+
+ LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
+
+ LibraryBrowser.setLastRefreshed(page);
+ Dashboard.hideLoadingMsg();
+ });
+ }
+
+ function showFilterMenu(page) {
+
+ require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
+
+ var filterDialog = new filterDialogFactory({
+ query: getQuery(page),
+ mode: 'series'
+ });
+
+ Events.on(filterDialog, 'filterchange', function () {
+ reloadItems(page);
+ });
+
+ filterDialog.show();
+ });
+ }
+
+ function updateFilterControls(tabContent) {
+
+ var query = getQuery(tabContent);
+ $('.alphabetPicker', tabContent).alphaValue(query.NameStartsWith);
+ }
+
+ function initPage(tabContent) {
+
+ $('.alphabetPicker', tabContent).on('alphaselect', function (e, character) {
+
+ var query = getQuery(tabContent);
+ query.NameStartsWithOrGreater = character;
+ query.StartIndex = 0;
+
+ reloadItems(tabContent);
+
+ }).on('alphaclear', function (e) {
+
+ var query = getQuery(tabContent);
+ query.NameStartsWithOrGreater = '';
+
+ reloadItems(tabContent);
+ });
+ }
+
+ self.initTab = function () {
+
+ initPage(tabContent);
+ };
+
self.renderTab = function () {
+
+ if (LibraryBrowser.needsRefresh(tabContent)) {
+ reloadItems(tabContent);
+ updateFilterControls(tabContent);
+ }
+ };
+ };
+});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/tvstudios.js b/dashboard-ui/scripts/tvstudios.js
index 0ce5e76ca6..4dedd76e8b 100644
--- a/dashboard-ui/scripts/tvstudios.js
+++ b/dashboard-ui/scripts/tvstudios.js
@@ -1,95 +1,98 @@
-(function ($, document) {
-
- // 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: "Series",
- Recursive: true,
- Fields: "DateCreated,ItemCounts",
- StartIndex: 0,
- Limit: LibraryBrowser.getDefaultPageSize()
- }
- };
-
- pageData.query.ParentId = LibraryMenu.getTopParentId();
- LibraryBrowser.loadSavedQueryValues(key, pageData.query);
- }
- return pageData.query;
+define([], 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: "Series",
+ 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,
+ context: 'tv',
+ preferThumb: true,
+ showItemCounts: true,
+ centerText: true,
+ lazy: true
+
+ });
+
+ var elem = context.querySelector('#items');
+ 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);
+
+ LibraryBrowser.setLastRefreshed(context);
+ Dashboard.hideLoadingMsg();
+ });
}
-
- function getSavedQueryKey() {
-
- return LibraryBrowser.getSavedQueryKey('studios');
- }
-
- function reloadItems(page) {
-
- var query = getQuery();
-
- 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', page).html(LibraryBrowser.getQueryPagingHtml({
- startIndex: query.StartIndex,
- limit: query.Limit,
- totalRecordCount: result.TotalRecordCount,
- showLimit: false
- }));
-
- html += LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "backdrop",
- showTitle: false,
- context: 'tv',
- preferThumb: true,
- showItemCounts: true,
- centerText: true,
- lazy: true
-
- });
-
- var elem = page.querySelector('#items');
- 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);
- });
-
- LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
-
- LibraryBrowser.setLastRefreshed(page);
- Dashboard.hideLoadingMsg();
- });
- }
-
- window.TvPage.renderStudiosTab = function (page, tabContent) {
-
- if (LibraryBrowser.needsRefresh(tabContent)) {
- reloadItems(tabContent);
- }
- };
-
-})(jQuery, document);
\ No newline at end of file
+
return function (view, params, tabContent) {
+
+ var self = this;
+
+ self.renderTab = function () {
+
+ if (LibraryBrowser.needsRefresh(tabContent)) {
+ reloadItems(tabContent, params);
+ }
+ };
+ };
+});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/tvupcoming.js b/dashboard-ui/scripts/tvupcoming.js
index 75ba25c394..a4402edfed 100644
--- a/dashboard-ui/scripts/tvupcoming.js
+++ b/dashboard-ui/scripts/tvupcoming.js
@@ -1,133 +1,136 @@
-(function ($, document) {
-
- 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"
- };
-
- query.ParentId = LibraryMenu.getTopParentId();
-
- 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([], function () {
+
+ function loadUpcoming(context, params) {
+
+ 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"
+ };
+
+ query.ParentId = params.topParentId;
+
+ ApiClient.getJSON(ApiClient.getUrl("Shows/Upcoming", query)).then(function (result) {
+
+ var items = result.Items;
+
+ if (items.length) {
+ context.querySelector('.noItemsMessage').style.display = 'none';
+ } else {
+ context.querySelector('.noItemsMessage').style.display = 'block';
+ }
+
+ var elem = context.querySelector('#upcomingItems');
+ renderUpcoming(elem, items);
+
+ Dashboard.hideLoadingMsg();
+
+ LibraryBrowser.setLastRefreshed(context);
+
+ });
+ }
+
+ 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 += '';
+
+ if (enableScrollX()) {
+ 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 += '';
-
- if (enableScrollX()) {
- html += '
';
- }
-
- elem.innerHTML = html;
- ImageLoader.lazyChildren(elem);
- }
-
- window.TvPage.renderUpcomingTab = function (page, tabContent) {
-
- if (LibraryBrowser.needsRefresh(tabContent)) {
- loadUpcoming(tabContent);
- }
- };
-
-})(jQuery, document);
\ No newline at end of file
+
return function (view, params, tabContent) {
+
+ var self = this;
+
+ self.renderTab = function () {
+
+ if (LibraryBrowser.needsRefresh(tabContent)) {
+ loadUpcoming(tabContent, params);
+ }
+ };
+ };
+});
\ No newline at end of file
diff --git a/dashboard-ui/secondaryitems.html b/dashboard-ui/secondaryitems.html
index 929961f866..a2f595d35b 100644
--- a/dashboard-ui/secondaryitems.html
+++ b/dashboard-ui/secondaryitems.html
@@ -1,4 +1,4 @@
-