';
+ item.elemClass = cssClass;
+ item.defaultAction = defaultAction;
+
+ var style = "";
+
+ if (imgUrl && !options.lazy) {
+ style += 'background-image:url(\'' + imgUrl + '\');';
+ }
+
+ var imageCssClass = 'cardImage';
+
+ if (icon) {
+ imageCssClass += " iconCardImage";
+ }
+
+ if (coverImage) {
+ imageCssClass += " coveredCardImage";
+ if (item.MediaType == 'Photo' || item.Type == 'PhotoAlbum' || item.Type == 'Folder' || item.Type == 'Program' || item.Type == 'Recording') {
+ imageCssClass += " noScale";
+ }
+ }
+ if (options.centerImage) {
+ imageCssClass += " centeredCardImage";
+ }
+
+ var dataSrc = "";
+
+ if (options.lazy && imgUrl) {
+ imageCssClass += " lazy";
+ dataSrc = ' data-src="' + imgUrl + '"';
+ }
+
+ var cardboxCssClass = 'cardBox';
+
+ if (options.cardLayout) {
+ cardboxCssClass += ' visualCardBox';
+ }
+
+ item.cardBoxClass = cardboxCssClass;
+
+ var anchorCssClass = "cardContent";
+
+ anchorCssClass += ' mediaItem';
+
+ if (defaultAction) {
+ anchorCssClass += ' itemWithAction';
+ }
+
+ item.anchorClass = anchorCssClass;
+ item.href = href;
+ item.imgUrl = imgUrl;
+ item.imageClass = imageCssClass;
+
+ if (imgUrl) {
+ item.imageStyle = 'background-image:url("' + imgUrl + '");';
+ } else {
+ item.imageStyle = null;
+ }
+
+ var overlayHtml = '';
+
+ if (item.LocationType == "Virtual" || item.LocationType == "Offline") {
+ if (options.showLocationTypeIndicator !== false) {
+ overlayHtml += LibraryBrowser.getOfflineIndicatorHtml(item);
+ }
+ } else if (options.showUnplayedIndicator !== false) {
+ overlayHtml += LibraryBrowser.getPlayedIndicatorHtml(item);
+ } else if (options.showChildCountIndicator) {
+ overlayHtml += LibraryBrowser.getGroupCountIndicator(item);
+ }
+
+ overlayHtml += LibraryBrowser.getSyncIndicator(item);
+
+ if (mediaSourceCount > 1) {
+ overlayHtml += '
' + mediaSourceCount + '
';
+ }
+
+ var progressHtml = options.showProgress === false || item.IsFolder ? '' : LibraryBrowser.getItemProgressBarHtml((item.Type == 'Recording' ? item : item.UserData));
+
+ var footerOverlayed = false;
+
+ if (options.overlayText || (forceName && !showTitle)) {
+
+ var footerCssClass = progressHtml ? 'cardFooter fullCardFooter' : 'cardFooter';
+
+ overlayHtml += LibraryBrowser.getCardFooterText(item, options, showTitle, imgUrl, forceName, footerCssClass, progressHtml);
+ footerOverlayed = true;
+ }
+ else if (progressHtml) {
+ overlayHtml += '";
+
+ progressHtml = '';
+ }
+
+ if (options.overlayPlayButton && !item.IsPlaceHolder && (item.LocationType != 'Virtual' || !item.MediaType || item.Type == 'Program') && item.Type != 'Person') {
+ overlayHtml += '
';
+ }
+ if (options.overlayMoreButton) {
+ overlayHtml += '
';
+ }
+
+ //// cardScalable
+
+ if (!options.overlayText && !footerOverlayed) {
+ item.footerHtml = LibraryBrowser.getCardFooterText(item, options, showTitle, imgUrl, forceName, 'cardFooter outerCardFooter', progressHtml);
+ } else {
+ item.footerHtml = '';
+ }
+
+ item.overlayHtml = overlayHtml;
+ },
+
+ getPosterViewHtml: function (options) {
+
+ LibraryBrowser.setPosterViewData(options);
+
+ var items = options.items;
+ var currentIndexValue;
+
+ options.shape = options.shape || "portrait";
+
+ var html = "";
+
+ var primaryImageAspectRatio;
+ var thumbWidth = options.thumbWidth;
+ var posterWidth = options.posterWidth;
+ var squareSize = options.squareSize;
+ var bannerWidth = options.bannerWidth;
+
var dateText;
- var uiAspect = getDesiredAspect(options.shape);
+ var uiAspect = options.uiAspect;
for (var i = 0, length = items.length; i < length; i++) {
@@ -2765,23 +3246,24 @@
}
},
- getDefaultPageSizeSelections: function () {
+ showLayoutMenu: function (button, currentLayout, views) {
- return [20, 50, 100, 200, 300, 400, 500];
- },
+ var dispatchEvent = true;
- showLayoutMenu: function (button, currentLayout) {
+ if (!views) {
- // Add banner and list once all screens support them
- var views = button.getAttribute('data-layouts');
+ dispatchEvent = false;
+ // Add banner and list once all screens support them
+ views = button.getAttribute('data-layouts');
- views = views ? views.split(',') : ['List', 'Poster', 'PosterCard', 'Thumb', 'ThumbCard'];
+ views = views ? views.split(',') : ['List', 'Poster', 'PosterCard', 'Thumb', 'ThumbCard'];
+ }
var menuItems = views.map(function (v) {
return {
name: Globalize.translate('Option' + v),
id: v,
- ironIcon: currentLayout == v ? 'check' : null
+ selected: currentLayout == v
};
});
@@ -2792,10 +3274,20 @@
positionTo: button,
callback: function (id) {
- // TODO: remove jQuery
- require(['jQuery'], function ($) {
- $(button).trigger('layoutchange', [id]);
- });
+ if (dispatchEvent) {
+ button.dispatchEvent(new CustomEvent('layoutchange', {
+ detail: {
+ viewStyle: id
+ },
+ bubbles: true,
+ cancelable: false
+ }));
+ } else {
+ // TODO: remove jQuery
+ require(['jQuery'], function ($) {
+ $(button).trigger('layoutchange', [id]);
+ });
+ }
}
});
@@ -2866,7 +3358,7 @@
var id = "selectPageSize";
- var pageSizes = options.pageSizes || LibraryBrowser.getDefaultPageSizeSelections();
+ var pageSizes = options.pageSizes || [20, 50, 100, 200, 300, 400, 500];
var optionsHtml = pageSizes.map(function (val) {
diff --git a/dashboard-ui/scripts/librarymenu.js b/dashboard-ui/scripts/librarymenu.js
index 7863f6cc9..59b0a5d1e 100644
--- a/dashboard-ui/scripts/librarymenu.js
+++ b/dashboard-ui/scripts/librarymenu.js
@@ -1,4 +1,4 @@
-define(['imageLoader', 'layoutManager', 'jQuery', 'paper-icon-button', 'emby-icons'], function (imageLoader, layoutManager, $) {
+define(['imageLoader', 'layoutManager', 'jQuery'], function (imageLoader, layoutManager, $) {
var mainDrawerPanel = document.querySelector('.mainDrawerPanel');
@@ -87,7 +87,7 @@
var url = user.imageUrl;
if (user.supportsImageParams) {
- url += "&height=" + (userButtonHeight * Math.max(window.devicePixelRatio || 1, 2));
+ url += "&height=" + Math.round((userButtonHeight * Math.max(window.devicePixelRatio || 1, 2)));
}
if (headerUserButton) {
@@ -993,7 +993,7 @@
if (!e.detail.isRestored) {
// Scroll back up so in case vertical scroll was messed with
- window.scrollTo(0, 0);
+ //window.scrollTo(0, 0);
}
updateTitle(page);
@@ -1126,8 +1126,19 @@
}
mainDrawerPanel.addEventListener('iron-select', onMainDrawerSelect);
+ var headerCreated;
+ var userRequiresUpdateAfterHeader;
- renderHeader();
+ require(['paper-icon-button', 'emby-icons'], function () {
+ renderHeader();
+ headerCreated = true;
+
+ var user = userRequiresUpdateAfterHeader;
+ if (user) {
+ updateUserInHeader(user);
+ }
+ userRequiresUpdateAfterHeader = null;
+ });
Events.on(ConnectionManager, 'apiclientcreated', function (e, apiClient) {
initializeApiClient(apiClient);
@@ -1138,7 +1149,12 @@
var apiClient = ConnectionManager.getApiClient(user.ServerId);
ConnectionManager.user(ConnectionManager.getApiClient(user.ServerId)).then(function (user) {
refreshLibraryDrawer(user);
- updateUserInHeader(user);
+
+ if (headerCreated) {
+ updateUserInHeader(user);
+ } else {
+ userRequiresUpdateAfterHeader = user;
+ }
});
if (!AppInfo.isNativeApp) {
diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js
index 32dd58cd1..dd1ff4ad2 100644
--- a/dashboard-ui/scripts/site.js
+++ b/dashboard-ui/scripts/site.js
@@ -1606,6 +1606,8 @@ var AppInfo = {};
var paths = {
velocity: bowerPath + "/velocity/velocity.min",
tvguide: 'components/tvguide/tvguide',
+ ironCardList: 'components/ironcardlist/ironcardlist',
+ scrollThreshold: 'components/scrollthreshold',
directorybrowser: 'components/directorybrowser/directorybrowser',
collectioneditor: 'components/collectioneditor/collectioneditor',
playlisteditor: 'components/playlisteditor/playlisteditor',
@@ -1714,6 +1716,7 @@ var AppInfo = {};
// Done
define("emby-icons", ["html!" + bowerPath + "/emby-icons/emby-icons.html"]);
+ define("lazyload-image", ["html!" + bowerPath + "/emby-lazyload-image/lazyload-image.html"]);
define("paper-spinner", ["html!" + bowerPath + "/paper-spinner/paper-spinner.html"]);
define("paper-toast", ["html!" + bowerPath + "/paper-toast/paper-toast.html"]);
define("paper-slider", ["html!" + bowerPath + "/paper-slider/paper-slider.html"]);
@@ -2732,7 +2735,7 @@ var AppInfo = {};
defineRoute({
path: '/tv.html',
- dependencies: ['paper-tabs', 'paper-checkbox'],
+ dependencies: ['paper-tabs', 'paper-checkbox', 'paper-button'],
autoFocus: false,
controller: 'scripts/tvrecommended'
});
diff --git a/dashboard-ui/scripts/tvgenres.js b/dashboard-ui/scripts/tvgenres.js
index 43d844da6..49b11cae8 100644
--- a/dashboard-ui/scripts/tvgenres.js
+++ b/dashboard-ui/scripts/tvgenres.js
@@ -17,8 +17,7 @@
IncludeItemTypes: "Series",
Recursive: true,
Fields: "DateCreated,SyncInfo,ItemCounts",
- StartIndex: 0,
- Limit: LibraryBrowser.getDefaultPageSize()
+ StartIndex: 0
},
view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Thumb', 'Thumb')
};
@@ -46,23 +45,9 @@
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
- }));
+ var viewStyle = self.getCurrentViewStyle();
if (viewStyle == "Thumb") {
html = LibraryBrowser.getPosterViewHtml({
@@ -116,30 +101,40 @@
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();
});
}
-
self.renderTab = function () {
+
self.getViewStyles = function () {
+ return 'Poster,PosterCard,Thumb,ThumbCard'.split(',');
+ };
+
+ self.getCurrentViewStyle = function () {
+ return getPageData(tabContent).view;
+ };
+
+ self.setCurrentViewStyle = function(viewStyle) {
+ getPageData(tabContent).view = viewStyle;
+ LibraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle);
+ reloadItems(tabContent);
+ };
+
+ self.enableViewSelection = true;
+
+ self.renderTab = function () {
reloadItems(tabContent);
};
+
+ tabContent.querySelector('.btnSelectView').addEventListener('click', function (e) {
+
+ LibraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), self.getViewStyles());
+ });
+
+ tabContent.querySelector('.btnSelectView').addEventListener('layoutchange', function (e) {
+
+ self.setCurrentViewStyle(e.detail.viewStyle);
+ });
};
});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/tvrecommended.js b/dashboard-ui/scripts/tvrecommended.js
index bdf848f38..fca3580f2 100644
--- a/dashboard-ui/scripts/tvrecommended.js
+++ b/dashboard-ui/scripts/tvrecommended.js
@@ -294,5 +294,14 @@
Events.off(MediaController, 'playbackstop', onPlaybackStop);
});
+
+ view.addEventListener('viewdestroy', function (e) {
+
+ tabControllers.forEach(function (t) {
+ if (t.destroy) {
+ t.destroy();
+ }
+ });
+ });
};
});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/tvshows.js b/dashboard-ui/scripts/tvshows.js
index 6841b1da8..405af3b5f 100644
--- a/dashboard-ui/scripts/tvshows.js
+++ b/dashboard-ui/scripts/tvshows.js
@@ -1,8 +1,9 @@
-define(['jQuery'], function ($) {
+define(['ironCardList', 'scrollThreshold', 'events', 'libraryBrowser', 'jQuery'], function (ironCardList, scrollThreshold, events, libraryBrowser, $) {
return function (view, params, tabContent) {
- var self = this;
+ var self = this;
+ var pageSize = libraryBrowser.getDefaultPageSize();
var data = {};
@@ -21,13 +22,13 @@
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
StartIndex: 0,
- Limit: LibraryBrowser.getDefaultPageSize()
+ Limit: pageSize
},
- view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Poster', 'Thumb')
+ view: libraryBrowser.getSavedView(key) || libraryBrowser.getDefaultItemsView('Poster', 'Poster')
};
pageData.query.ParentId = params.topParentId;
- LibraryBrowser.loadSavedQueryValues(key, pageData.query);
+ libraryBrowser.loadSavedQueryValues(key, pageData.query);
}
return pageData;
}
@@ -40,192 +41,143 @@
function getSavedQueryKey(context) {
if (!context.savedQueryKey) {
- context.savedQueryKey = LibraryBrowser.getSavedQueryKey('series');
+ context.savedQueryKey = libraryBrowser.getSavedQueryKey('series');
}
return context.savedQueryKey;
}
+ function setCardOptions(result) {
+
+ var cardOptions;
+
+ var view = self.getCurrentViewStyle();
+
+ if (view == "Thumb") {
+
+ cardOptions = {
+ items: result.Items,
+ shape: "backdrop",
+ preferThumb: true,
+ context: 'tv',
+ lazy: true,
+ overlayPlayButton: true
+ };
+ }
+ else if (view == "ThumbCard") {
+
+ cardOptions = {
+ items: result.Items,
+ shape: "backdrop",
+ preferThumb: true,
+ context: 'tv',
+ lazy: true,
+ cardLayout: true,
+ showTitle: true,
+ showSeriesYear: true
+ };
+ }
+ else if (view == "Banner") {
+
+ cardOptions = {
+ 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") {
+ cardOptions = {
+ items: result.Items,
+ shape: "portrait",
+ context: 'tv',
+ showTitle: true,
+ showYear: true,
+ lazy: true,
+ cardLayout: true
+ };
+ }
+ else {
+
+ // Poster
+ cardOptions = {
+ items: result.Items,
+ shape: "portrait",
+ context: 'tv',
+ centerText: true,
+ lazy: true,
+ overlayPlayButton: true
+ };
+ }
+
+ self.cardOptions = cardOptions;
+ }
+
function reloadItems(page) {
+ self.isLoading = true;
Dashboard.showLoadingMsg();
var query = getQuery(page);
+ var startIndex = query.StartIndex;
+ var reloadList = !self.cardOptions || startIndex == 0;
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
- });
-
+ var pushItems = true;
+ if (reloadList) {
+ setCardOptions(result);
+ pushItems = false;
}
- else if (view == "ThumbCard") {
+ libraryBrowser.setPosterViewData(self.cardOptions);
+ libraryBrowser.setPosterViewDataOnItems(self.cardOptions, result.Items);
- 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 ironList = page.querySelector('#ironList');
+ if (pushItems) {
+ for (var i = 0, length = result.Items.length; i < length; i++) {
+ ironList.push('items', result.Items[i]);
+ }
+ } else {
+ ironList.items = result.Items;
}
- var elem = page.querySelector('#items');
- elem.innerHTML = html + pagingHtml;
- ImageLoader.lazyChildren(elem);
+ // Hack: notifyResize needs to be done after the items have been rendered
+ setTimeout(function () {
- $('.btnNextPage', page).on('click', function () {
- query.StartIndex += query.Limit;
- reloadItems(page);
- });
+ ironList.notifyResize();
+ self.scrollThreshold.resetSize();
+ }, 300);
- $('.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.saveQueryValues(getSavedQueryKey(page), query);
Dashboard.hideLoadingMsg();
+ self.hasMoreItems = result.TotalRecordCount > (startIndex + result.Items.length);
+ self.isLoading = false;
});
}
- function showFilterMenu(page) {
+ self.showFilterMenu = function () {
require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
var filterDialog = new filterDialogFactory({
- query: getQuery(page),
+ query: getQuery(tabContent),
mode: 'series'
});
Events.on(filterDialog, 'filterchange', function () {
- reloadItems(page);
+ getQuery(tabContent).StartIndex = 0;
+ reloadItems(tabContent);
});
filterDialog.show();
@@ -252,16 +204,117 @@
var query = getQuery(tabContent);
query.NameStartsWithOrGreater = '';
+ getQuery(tabContent).StartIndex = 0;
reloadItems(tabContent);
});
+
+ tabContent.querySelector('.btnFilter').addEventListener('click', function () {
+ self.showFilterMenu();
+ });
+
+ tabContent.querySelector('.btnSort').addEventListener('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 () {
+ getQuery(tabContent).StartIndex = 0;
+ reloadItems(tabContent);
+ },
+ query: getQuery(tabContent)
+ });
+ });
+
+ tabContent.querySelector('.btnSelectView').addEventListener('click', function (e) {
+
+ libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'Banner,List,Poster,PosterCard,Thumb,ThumbCard'.split(','));
+ });
+
+ tabContent.querySelector('.btnSelectView').addEventListener('layoutchange', function (e) {
+
+ var viewStyle = e.detail.viewStyle;
+
+ getPageData(tabContent).view = viewStyle;
+ libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle);
+ getQuery(tabContent).StartIndex = 0;
+ reloadItems(tabContent);
+ });
}
- initPage(tabContent);
-
self.renderTab = function () {
+ self.getCurrentViewStyle = function () {
+ return getPageData(tabContent).view;
+ };
- reloadItems(tabContent);
- updateFilterControls(tabContent);
+ initPage(tabContent);
+
+ function createList() {
+
+ if (self.listCreated) {
+ return Promise.resolve();
+ }
+
+ return ironCardList.getTemplate('seriesTab').then(function (html) {
+
+ tabContent.querySelector('.itemsContainer').innerHTML = html;
+ self.listCreated = true;
+ });
+ }
+
+ function loadMoreItems() {
+
+ if (!self.isLoading && self.hasMoreItems) {
+
+ getQuery(tabContent).StartIndex += pageSize;
+ reloadItems(tabContent);
+ }
+ }
+
+ self.scrollThreshold = new scrollThreshold(tabContent, false);
+ events.on(self.scrollThreshold, 'lower-threshold', loadMoreItems);
+
+ self.renderTab = function () {
+
+ createList().then(function () {
+ reloadItems(tabContent);
+ updateFilterControls(tabContent);
+ });
+ };
+
+ self.destroy = function () {
+ events.off(self.scrollThreshold, 'lower-threshold', loadMoreItems);
+ if (self.scrollThreshold) {
+ self.scrollThreshold.destroy();
+ }
};
};
});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/tvstudios.js b/dashboard-ui/scripts/tvstudios.js
index 812198cd8..4cf1e60b9 100644
--- a/dashboard-ui/scripts/tvstudios.js
+++ b/dashboard-ui/scripts/tvstudios.js
@@ -16,8 +16,7 @@
IncludeItemTypes: "Series",
Recursive: true,
Fields: "DateCreated,ItemCounts",
- StartIndex: 0,
- Limit: LibraryBrowser.getDefaultPageSize()
+ StartIndex: 0
}
};
@@ -40,18 +39,8 @@
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",
@@ -68,16 +57,6 @@
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();
});
diff --git a/dashboard-ui/tv.html b/dashboard-ui/tv.html
index 18f0ea453..6137fc651 100644
--- a/dashboard-ui/tv.html
+++ b/dashboard-ui/tv.html
@@ -22,6 +22,7 @@