diff --git a/dashboard-ui/scripts/channels.js b/dashboard-ui/scripts/channels.js
index 908fe66101..124616ee80 100644
--- a/dashboard-ui/scripts/channels.js
+++ b/dashboard-ui/scripts/channels.js
@@ -76,7 +76,7 @@
var mdlTabs = page.querySelector('.libraryViewNav');
- libraryBrowser.configurePaperLibraryTabs(page, mdlTabs, page.querySelectorAll('.pageTabContent'));
+ libraryBrowser.configurePaperLibraryTabs(page, mdlTabs, page.querySelectorAll('.pageTabContent'), true);
mdlTabs.addEventListener('tabchange', function (e) {
loadTab(page, parseInt(e.detail.selectedTabIndex));
diff --git a/dashboard-ui/scripts/indexpage.js b/dashboard-ui/scripts/indexpage.js
index d9761e7f23..1342d0c41b 100644
--- a/dashboard-ui/scripts/indexpage.js
+++ b/dashboard-ui/scripts/indexpage.js
@@ -249,7 +249,7 @@
var mdlTabs = view.querySelector('.libraryViewNav');
- libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'));
+ libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), true);
var tabControllers = [];
var renderedTabs = [];
diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js
index fecf0ed023..3e63539d9e 100644
--- a/dashboard-ui/scripts/librarybrowser.js
+++ b/dashboard-ui/scripts/librarybrowser.js
@@ -225,7 +225,7 @@
});
},
- configurePaperLibraryTabs: function (ownerpage, tabs, panels) {
+ configurePaperLibraryTabs: function (ownerpage, tabs, panels, animate) {
if (!browserInfo.safari) {
LibraryBrowser.configureSwipeTabs(ownerpage, tabs);
@@ -235,6 +235,8 @@
for (var i = 0, length = buttons.length; i < length; i++) {
buttons[i].classList.add('mdl-button');
buttons[i].classList.add('mdl-js-button');
+ buttons[i].classList.add('mdl-js-ripple-effect');
+ componentHandler.upgradeElement(buttons[i], 'MaterialButton');
}
tabs.classList.add('hiddenScrollX');
@@ -275,9 +277,9 @@
panels[index].classList.add('is-active');
- //if (browserInfo.animate) {
- // fadeInRight(panels[index]);
- //}
+ if (browserInfo.animate && animate) {
+ fadeInRight(panels[index]);
+ }
// If toCenter is called syncronously within the click event, it sometimes ends up canceling it
//setTimeout(function() {
@@ -1905,7 +1907,8 @@
var showTitle = options.showTitle == 'auto' ? true : options.showTitle;
- if (item.Type == 'PhotoAlbum') {
+ // Force the title for these
+ if (item.Type == 'PhotoAlbum' || item.Type == 'Folder') {
showTitle = true;
}
var coverImage = options.coverImage;
diff --git a/dashboard-ui/scripts/livetvsuggested.js b/dashboard-ui/scripts/livetvsuggested.js
index b0fd39a7b6..029afaf1bf 100644
--- a/dashboard-ui/scripts/livetvsuggested.js
+++ b/dashboard-ui/scripts/livetvsuggested.js
@@ -204,7 +204,7 @@
baseUrl += '?topParentId=' + topParentId;
}
- libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'));
+ libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), true);
mdlTabs.addEventListener('tabchange', function (e) {
loadTab(view, parseInt(e.detail.selectedTabIndex));
diff --git a/dashboard-ui/scripts/musicalbumartists.js b/dashboard-ui/scripts/musicalbumartists.js
index 8409ef2ea0..f05469d4a8 100644
--- a/dashboard-ui/scripts/musicalbumartists.js
+++ b/dashboard-ui/scripts/musicalbumartists.js
@@ -1,161 +1,163 @@
define(['jQuery'], function ($) {
- var data = {};
- function getPageData(context) {
- var key = getSavedQueryKey(context);
- var pageData = data[key];
+ return function (view, params, tabContent) {
- if (!pageData) {
- pageData = data[key] = {
- query: {
- SortBy: "SortName",
- SortOrder: "Ascending",
- Recursive: true,
- Fields: "PrimaryImageAspectRatio,SortName,DateCreated,SyncInfo,ItemCounts",
- StartIndex: 0,
- ImageTypeLimit: 1,
- EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
- Limit: LibraryBrowser.getDefaultPageSize()
- },
- view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Poster', 'Poster')
- };
+ var self = this;
- pageData.query.ParentId = LibraryMenu.getTopParentId();
- LibraryBrowser.loadSavedQueryValues(key, pageData.query);
+ var data = {};
+ function getPageData(context) {
+ var key = getSavedQueryKey(context);
+ var pageData = data[key];
+
+ if (!pageData) {
+ pageData = data[key] = {
+ query: {
+ SortBy: "SortName",
+ SortOrder: "Ascending",
+ Recursive: true,
+ Fields: "PrimaryImageAspectRatio,SortName,DateCreated,SyncInfo,ItemCounts",
+ StartIndex: 0,
+ ImageTypeLimit: 1,
+ EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
+ Limit: LibraryBrowser.getDefaultPageSize()
+ },
+ view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Poster', 'Poster')
+ };
+
+ pageData.query.ParentId = LibraryMenu.getTopParentId();
+ LibraryBrowser.loadSavedQueryValues(key, pageData.query);
+ }
+ return pageData;
}
- return pageData;
- }
- function getQuery(context) {
+ function getQuery(context) {
- return getPageData(context).query;
- }
-
- function getSavedQueryKey(context) {
-
- if (!context.savedQueryKey) {
- context.savedQueryKey = LibraryBrowser.getSavedQueryKey('albumartists');
+ return getPageData(context).query;
}
- return context.savedQueryKey;
- }
- function reloadItems(page) {
+ function getSavedQueryKey(context) {
- Dashboard.showLoadingMsg();
-
- var query = getQuery(page);
-
- ApiClient.getAlbumArtists(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,
- currentLayout: view,
- filterButton: true
- });
-
- page.querySelector('.listTopPaging').innerHTML = pagingHtml;
-
- updateFilterControls(page);
-
- if (view == "List") {
-
- html = LibraryBrowser.getListViewHtml({
- items: result.Items,
- context: 'music',
- sortBy: query.SortBy
- });
+ if (!context.savedQueryKey) {
+ context.savedQueryKey = LibraryBrowser.getSavedQueryKey('albumartists');
}
- else if (view == "Poster") {
- html = LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "square",
- context: 'music',
- showTitle: true,
- coverImage: true,
- lazy: true,
- centerText: true,
- overlayPlayButton: true
+ return context.savedQueryKey;
+ }
+
+ function reloadItems(page) {
+
+ Dashboard.showLoadingMsg();
+
+ var query = getQuery(page);
+
+ ApiClient.getAlbumArtists(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,
+ currentLayout: view,
+ filterButton: true
});
- }
- else if (view == "PosterCard") {
- html = LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "square",
- context: 'music',
- showTitle: true,
- coverImage: true,
- lazy: true,
- cardLayout: true,
- showSongCount: true
+ page.querySelector('.listTopPaging').innerHTML = pagingHtml;
+
+ updateFilterControls(page);
+
+ if (view == "List") {
+
+ html = LibraryBrowser.getListViewHtml({
+ items: result.Items,
+ context: 'music',
+ sortBy: query.SortBy
+ });
+ }
+ else if (view == "Poster") {
+ html = LibraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "square",
+ context: 'music',
+ showTitle: true,
+ coverImage: true,
+ lazy: true,
+ centerText: true,
+ overlayPlayButton: true
+ });
+ }
+ else if (view == "PosterCard") {
+
+ html = LibraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "square",
+ context: 'music',
+ showTitle: true,
+ coverImage: true,
+ lazy: true,
+ cardLayout: true,
+ showSongCount: true
+ });
+ }
+
+ var elem = page.querySelector('#items');
+ elem.innerHTML = html + pagingHtml;
+ ImageLoader.lazyChildren(elem);
+
+ $('.btnNextPage', page).on('click', function () {
+ query.StartIndex += query.Limit;
+ reloadItems(page);
});
- }
- var elem = page.querySelector('#items');
- elem.innerHTML = html + pagingHtml;
- ImageLoader.lazyChildren(elem);
+ $('.btnPreviousPage', page).on('click', function () {
+ query.StartIndex -= query.Limit;
+ reloadItems(page);
+ });
- $('.btnNextPage', 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);
+ });
+
+ LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
+ Dashboard.hideLoadingMsg();
});
+ }
- $('.btnPreviousPage', page).on('click', function () {
- query.StartIndex -= query.Limit;
- reloadItems(page);
+ function showFilterMenu(page) {
+
+ require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
+
+ var filterDialog = new filterDialogFactory({
+ query: getQuery(page),
+ mode: 'albumartists'
+ });
+
+ Events.on(filterDialog, 'filterchange', function () {
+ reloadItems(page);
+ });
+
+ filterDialog.show();
});
+ }
- $('.btnChangeLayout', page).on('layoutchange', function (e, layout) {
- getPageData(page).view = layout;
- LibraryBrowser.saveViewSetting(getSavedQueryKey(page), layout);
- reloadItems(page);
- });
+ function updateFilterControls(tabContent) {
- $('.btnFilter', page).on('click', function () {
- showFilterMenu(page);
- });
+ var query = getQuery(tabContent);
- LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
- Dashboard.hideLoadingMsg();
- });
- }
-
- function showFilterMenu(page) {
-
- require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
-
- var filterDialog = new filterDialogFactory({
- query: getQuery(page),
- mode: 'albumartists'
- });
-
- 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).alphaValue(query.NameStartsWithOrGreater);
+ }
$('.alphabetPicker', tabContent).on('alphaselect', function (e, character) {
@@ -174,16 +176,11 @@
reloadItems(tabContent);
});
- }
- window.MusicPage.initAlbumArtistsTab = function (page, tabContent) {
+ self.renderTab = function () {
- initPage(tabContent);
- };
-
- window.MusicPage.renderAlbumArtistsTab = function (page, tabContent) {
-
- reloadItems(tabContent);
+ reloadItems(tabContent);
+ };
};
});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/musicalbums.js b/dashboard-ui/scripts/musicalbums.js
index d04ec5aeb9..55de337146 100644
--- a/dashboard-ui/scripts/musicalbums.js
+++ b/dashboard-ui/scripts/musicalbums.js
@@ -1,214 +1,216 @@
define(['jQuery'], function ($) {
- var data = {};
- function getPageData(context) {
- var key = getSavedQueryKey(context);
- var pageData = data[key];
+ return function (view, params, tabContent) {
- if (!pageData) {
- pageData = data[key] = {
- query: {
- SortBy: "SortName",
- SortOrder: "Ascending",
- IncludeItemTypes: "MusicAlbum",
- Recursive: true,
- Fields: "PrimaryImageAspectRatio,SortName,SyncInfo",
- StartIndex: 0,
- ImageTypeLimit: 1,
- EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
- Limit: LibraryBrowser.getDefaultPageSize()
- },
- view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Poster', 'Poster')
- };
+ var self = this;
- pageData.query.ParentId = LibraryMenu.getTopParentId();
- LibraryBrowser.loadSavedQueryValues(key, pageData.query);
+ var data = {};
+ function getPageData(context) {
+ var key = getSavedQueryKey(context);
+ var pageData = data[key];
+
+ if (!pageData) {
+ pageData = data[key] = {
+ query: {
+ SortBy: "SortName",
+ SortOrder: "Ascending",
+ IncludeItemTypes: "MusicAlbum",
+ Recursive: true,
+ Fields: "PrimaryImageAspectRatio,SortName,SyncInfo",
+ StartIndex: 0,
+ ImageTypeLimit: 1,
+ EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
+ Limit: LibraryBrowser.getDefaultPageSize()
+ },
+ view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Poster', 'Poster')
+ };
+
+ pageData.query.ParentId = LibraryMenu.getTopParentId();
+ LibraryBrowser.loadSavedQueryValues(key, pageData.query);
+ }
+ return pageData;
}
- return pageData;
- }
- function getQuery(context) {
+ function getQuery(context) {
- return getPageData(context).query;
- }
-
- function getSavedQueryKey(context) {
-
- if (!context.savedQueryKey) {
- context.savedQueryKey = LibraryBrowser.getSavedQueryKey('albums');
+ return getPageData(context).query;
}
- return context.savedQueryKey;
- }
- function reloadItems(page) {
+ function getSavedQueryKey(context) {
- 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 html = '';
- var view = getPageData(page).view;
- var pagingHtml = LibraryBrowser.getQueryPagingHtml({
- startIndex: query.StartIndex,
- limit: query.Limit,
- totalRecordCount: result.TotalRecordCount,
- showLimit: false,
- sortButton: true,
- addLayoutButton: true,
- currentLayout: view,
- updatePageSizeSetting: false,
- layouts: 'List,Poster,PosterCard,Timeline',
- filterButton: true
- });
-
- page.querySelector('.listTopPaging').innerHTML = pagingHtml;
-
- updateFilterControls(page);
-
- if (view == "Poster") {
- html = LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "square",
- context: 'music',
- showTitle: true,
- showParentTitle: true,
- lazy: true,
- centerText: true,
- overlayPlayButton: true
- });
+ if (!context.savedQueryKey) {
+ context.savedQueryKey = LibraryBrowser.getSavedQueryKey('albums');
}
- else if (view == "PosterCard") {
+ return context.savedQueryKey;
+ }
- html = LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "square",
- context: 'music',
- showTitle: true,
- coverImage: true,
- showParentTitle: true,
- lazy: true,
- cardLayout: true
+ 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 html = '';
+ var view = getPageData(page).view;
+ var pagingHtml = LibraryBrowser.getQueryPagingHtml({
+ startIndex: query.StartIndex,
+ limit: query.Limit,
+ totalRecordCount: result.TotalRecordCount,
+ showLimit: false,
+ sortButton: true,
+ addLayoutButton: true,
+ currentLayout: view,
+ updatePageSizeSetting: false,
+ layouts: 'List,Poster,PosterCard,Timeline',
+ filterButton: true
});
- }
- else if (view == "List") {
- html = LibraryBrowser.getListViewHtml({
- items: result.Items,
- context: 'music',
- sortBy: query.SortBy
- });
- }
- else if (view == "Timeline") {
- html = LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "square",
- context: 'music',
- showTitle: true,
- showParentTitle: true,
- timeline: true,
- lazy: true
- });
- }
+ page.querySelector('.listTopPaging').innerHTML = pagingHtml;
- var elem = page.querySelector('#items');
- elem.innerHTML = html + pagingHtml;
- ImageLoader.lazyChildren(elem);
+ updateFilterControls(page);
- $('.btnNextPage', page).on('click', function () {
- query.StartIndex += query.Limit;
- reloadItems(page);
- });
+ if (view == "Poster") {
+ html = LibraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "square",
+ context: 'music',
+ showTitle: true,
+ showParentTitle: true,
+ lazy: true,
+ centerText: true,
+ overlayPlayButton: true
+ });
+ }
+ else if (view == "PosterCard") {
- $('.btnPreviousPage', page).on('click', function () {
- query.StartIndex -= query.Limit;
- reloadItems(page);
- });
+ html = LibraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "square",
+ context: 'music',
+ showTitle: true,
+ coverImage: true,
+ showParentTitle: true,
+ lazy: true,
+ cardLayout: true
+ });
+ }
+ else if (view == "List") {
- $('.btnFilter', page).on('click', function () {
- showFilterMenu(page);
- });
-
- $('.btnChangeLayout', page).on('layoutchange', function (e, layout) {
-
- if (layout == 'Timeline') {
- getQuery(page).SortBy = 'ProductionYear,PremiereDate,SortName';
- getQuery(page).SortOrder = 'Descending';
+ html = LibraryBrowser.getListViewHtml({
+ items: result.Items,
+ context: 'music',
+ sortBy: query.SortBy
+ });
+ }
+ else if (view == "Timeline") {
+ html = LibraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "square",
+ context: 'music',
+ showTitle: true,
+ showParentTitle: true,
+ timeline: true,
+ lazy: true
+ });
}
- getPageData(page).view = layout;
- LibraryBrowser.saveViewSetting(getSavedQueryKey(page), layout);
- reloadItems(page);
- });
+ var elem = page.querySelector('#items');
+ elem.innerHTML = html + pagingHtml;
+ ImageLoader.lazyChildren(elem);
- // 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('OptionAlbumArtist'),
- id: 'AlbumArtist,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('OptionReleaseDate'),
- id: 'ProductionYear,PremiereDate,SortName'
- }],
- callback: function () {
- reloadItems(page);
- },
- query: query
+ $('.btnNextPage', page).on('click', function () {
+ query.StartIndex += query.Limit;
+ reloadItems(page);
});
+
+ $('.btnPreviousPage', page).on('click', function () {
+ query.StartIndex -= query.Limit;
+ reloadItems(page);
+ });
+
+ $('.btnFilter', page).on('click', function () {
+ showFilterMenu(page);
+ });
+
+ $('.btnChangeLayout', page).on('layoutchange', function (e, layout) {
+
+ if (layout == 'Timeline') {
+ getQuery(page).SortBy = 'ProductionYear,PremiereDate,SortName';
+ getQuery(page).SortOrder = 'Descending';
+ }
+
+ 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('OptionAlbumArtist'),
+ id: 'AlbumArtist,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('OptionReleaseDate'),
+ id: 'ProductionYear,PremiereDate,SortName'
+ }],
+ callback: function () {
+ reloadItems(page);
+ },
+ query: query
+ });
+ });
+
+ LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
+ Dashboard.hideLoadingMsg();
});
+ }
- LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
- Dashboard.hideLoadingMsg();
- });
- }
+ function showFilterMenu(page) {
- function showFilterMenu(page) {
+ require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
- require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
+ var filterDialog = new filterDialogFactory({
+ query: getQuery(page),
+ mode: 'albums'
+ });
- var filterDialog = new filterDialogFactory({
- query: getQuery(page),
- mode: 'albums'
+ Events.on(filterDialog, 'filterchange', function () {
+ reloadItems(page);
+ });
+
+ filterDialog.show();
});
+ }
- Events.on(filterDialog, 'filterchange', function () {
- reloadItems(page);
- });
+ function updateFilterControls(page) {
- filterDialog.show();
- });
- }
+ var query = getQuery(page);
- function updateFilterControls(page) {
-
- var query = getQuery(page);
-
- $('.alphabetPicker', page).alphaValue(query.NameStartsWithOrGreater);
- }
-
- function initPage(tabContent) {
+ $('.alphabetPicker', page).alphaValue(query.NameStartsWithOrGreater);
+ }
$('.alphabetPicker', tabContent).on('alphaselect', function (e, character) {
@@ -235,16 +237,10 @@
reloadItems(tabContent);
});
- }
- window.MusicPage.initAlbumsTab = function (page, tabContent) {
+ self.renderTab = function () {
- initPage(tabContent);
+ reloadItems(tabContent);
+ };
};
-
- window.MusicPage.renderAlbumsTab = function (page, tabContent) {
-
- reloadItems(tabContent);
- };
-
});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/musicartists.js b/dashboard-ui/scripts/musicartists.js
index 7801715516..3fa00ba7a3 100644
--- a/dashboard-ui/scripts/musicartists.js
+++ b/dashboard-ui/scripts/musicartists.js
@@ -1,189 +1,184 @@
-define(['jQuery'], function ($) {
-
- var data = {};
- function getPageData(context) {
- var key = getSavedQueryKey(context);
- var pageData = data[key];
-
- if (!pageData) {
- pageData = data[key] = {
- query: {
- SortBy: "SortName",
- SortOrder: "Ascending",
- Recursive: true,
- Fields: "PrimaryImageAspectRatio,SortName,DateCreated,SyncInfo,ItemCounts",
- StartIndex: 0,
- ImageTypeLimit: 1,
- EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
- 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('artists');
- }
- return context.savedQueryKey;
- }
-
- function reloadItems(page) {
-
- Dashboard.showLoadingMsg();
-
- var query = getQuery(page);
-
- ApiClient.getArtists(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,
- currentLayout: view,
- filterButton: true
- });
-
- page.querySelector('.listTopPaging').innerHTML = pagingHtml;
-
- updateFilterControls(page);
-
- if (view == "List") {
-
- html = LibraryBrowser.getListViewHtml({
- items: result.Items,
- context: 'music',
- sortBy: query.SortBy
- });
- }
- else if (view == "Poster") {
- html = LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "square",
- context: 'music',
- showTitle: true,
- coverImage: true,
- lazy: true,
- centerText: true,
- overlayPlayButton: true
- });
- }
- else if (view == "PosterCard") {
-
- html = LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "square",
- context: 'music',
- showTitle: true,
- coverImage: true,
- lazy: true,
- cardLayout: true,
- showSongCount: 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);
- });
-
- LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
- Dashboard.hideLoadingMsg();
- });
- }
-
- function showFilterMenu(page) {
-
- require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
-
- var filterDialog = new filterDialogFactory({
- query: getQuery(page),
- mode: 'artists'
- });
-
- 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);
- });
- }
-
- window.MusicPage.initArtistsTab = function (page, tabContent) {
-
- initPage(tabContent);
- };
-
- window.MusicPage.renderArtistsTab = function (page, tabContent) {
-
- reloadItems(tabContent);
- };
-
+define(['jQuery'], 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",
+ Recursive: true,
+ Fields: "PrimaryImageAspectRatio,SortName,DateCreated,SyncInfo,ItemCounts",
+ StartIndex: 0,
+ ImageTypeLimit: 1,
+ EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
+ 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('artists');
+ }
+ return context.savedQueryKey;
+ }
+
+ function reloadItems(page) {
+
+ Dashboard.showLoadingMsg();
+
+ var query = getQuery(page);
+
+ ApiClient.getArtists(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,
+ currentLayout: view,
+ filterButton: true
+ });
+
+ page.querySelector('.listTopPaging').innerHTML = pagingHtml;
+
+ updateFilterControls(page);
+
+ if (view == "List") {
+
+ html = LibraryBrowser.getListViewHtml({
+ items: result.Items,
+ context: 'music',
+ sortBy: query.SortBy
+ });
+ }
+ else if (view == "Poster") {
+ html = LibraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "square",
+ context: 'music',
+ showTitle: true,
+ coverImage: true,
+ lazy: true,
+ centerText: true,
+ overlayPlayButton: true
+ });
+ }
+ else if (view == "PosterCard") {
+
+ html = LibraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "square",
+ context: 'music',
+ showTitle: true,
+ coverImage: true,
+ lazy: true,
+ cardLayout: true,
+ showSongCount: 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);
+ });
+
+ LibraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
+ Dashboard.hideLoadingMsg();
+ });
+ }
+
+ function showFilterMenu(page) {
+
+ require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
+
+ var filterDialog = new filterDialogFactory({
+ query: getQuery(page),
+ mode: 'artists'
+ });
+
+ Events.on(filterDialog, 'filterchange', function () {
+ reloadItems(page);
+ });
+
+ filterDialog.show();
+ });
+ }
+
+ function updateFilterControls(tabContent) {
+
+ var query = getQuery(tabContent);
+
+ $('.alphabetPicker', tabContent).alphaValue(query.NameStartsWithOrGreater);
+ }
+
+ $('.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.renderTab = function () {
+
+ reloadItems(tabContent);
+ };
+ };
});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/musicfolders.js b/dashboard-ui/scripts/musicfolders.js
index 6247ec1a16..c1d4ef3ea5 100644
--- a/dashboard-ui/scripts/musicfolders.js
+++ b/dashboard-ui/scripts/musicfolders.js
@@ -1,107 +1,107 @@
-define(['jQuery'], function ($) {
-
- var data = {};
- function getPageData() {
- var key = getSavedQueryKey();
- var pageData = data[key];
-
- if (!pageData) {
- pageData = data[key] = {
- query: {
- SortBy: "SortName",
- SortOrder: "Ascending",
- Fields: "PrimaryImageAspectRatio,SortName,SyncInfo",
- StartIndex: 0,
- ImageTypeLimit: 1,
- EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
- 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() {
-
- return getPageData().query;
- }
-
- function getSavedQueryKey() {
-
- return LibraryBrowser.getSavedQueryKey('folders');
- }
-
- function reloadItems(page, viewPanel) {
-
- Dashboard.showLoadingMsg();
-
- var query = getQuery();
- 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 view = getPageData().view;
- var pagingHtml = LibraryBrowser.getQueryPagingHtml({
- startIndex: query.StartIndex,
- limit: query.Limit,
- totalRecordCount: result.TotalRecordCount,
- viewButton: false,
- showLimit: false,
- sortButton: false,
- addLayoutButton: false,
- currentLayout: view,
- updatePageSizeSetting: false,
- viewIcon: 'filter-list',
- layouts: 'List,Poster,PosterCard,Timeline'
- });
-
- page.querySelector('.listTopPaging').innerHTML = pagingHtml;
-
- if (view == "Poster") {
- html = LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "square",
- context: 'folders',
- showTitle: true,
- showParentTitle: true,
- lazy: true,
- centerText: 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, viewPanel);
- });
-
- $('.btnPreviousPage', page).on('click', function () {
- query.StartIndex -= query.Limit;
- reloadItems(page, viewPanel);
- });
-
- LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
- Dashboard.hideLoadingMsg();
- });
- }
-
- window.MusicPage.initFoldersTab = function (page, tabContent) {
-
- };
-
- window.MusicPage.renderFoldersTab = function (page, tabContent) {
-
- reloadItems(tabContent);
- };
-
+define(['jQuery'], function ($) {
+
+ return function (view, params, tabContent) {
+
+ var self = this;
+
+ var data = {};
+ function getPageData() {
+ var key = getSavedQueryKey();
+ var pageData = data[key];
+
+ if (!pageData) {
+ pageData = data[key] = {
+ query: {
+ SortBy: "SortName",
+ SortOrder: "Ascending",
+ Fields: "PrimaryImageAspectRatio,SortName,SyncInfo",
+ StartIndex: 0,
+ ImageTypeLimit: 1,
+ EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
+ 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() {
+
+ return getPageData().query;
+ }
+
+ function getSavedQueryKey() {
+
+ return LibraryBrowser.getSavedQueryKey('folders');
+ }
+
+ function reloadItems(context) {
+
+ Dashboard.showLoadingMsg();
+
+ var query = getQuery();
+ 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 view = getPageData().view;
+ var pagingHtml = LibraryBrowser.getQueryPagingHtml({
+ startIndex: query.StartIndex,
+ limit: query.Limit,
+ totalRecordCount: result.TotalRecordCount,
+ viewButton: false,
+ showLimit: false,
+ sortButton: false,
+ addLayoutButton: false,
+ currentLayout: view,
+ updatePageSizeSetting: false,
+ viewIcon: 'filter-list',
+ layouts: 'List,Poster,PosterCard,Timeline'
+ });
+
+ context.querySelector('.listTopPaging').innerHTML = pagingHtml;
+
+ if (view == "Poster") {
+ html = LibraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "square",
+ context: 'folders',
+ showTitle: true,
+ showParentTitle: true,
+ lazy: true,
+ centerText: true,
+ overlayPlayButton: true
+ });
+ }
+
+ var elem = context.querySelector('#items');
+ elem.innerHTML = html + pagingHtml;
+ 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);
+ });
+
+ LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
+ Dashboard.hideLoadingMsg();
+ });
+ }
+
self.renderTab = function () {
+
+ reloadItems(tabContent);
+ };
+ };
+
});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/musicgenres.js b/dashboard-ui/scripts/musicgenres.js
index f628135f3c..741c0e7182 100644
--- a/dashboard-ui/scripts/musicgenres.js
+++ b/dashboard-ui/scripts/musicgenres.js
@@ -1,131 +1,136 @@
define(['jQuery'], function ($) {
- var data = {};
- function getPageData() {
- var key = getSavedQueryKey();
- var pageData = data[key];
+ return function (view, params, tabContent) {
- if (!pageData) {
- pageData = data[key] = {
- query: {
- SortBy: "SortName",
- SortOrder: "Ascending",
- IncludeItemTypes: "Audio,MusicVideo",
- Recursive: true,
- Fields: "DateCreated,SyncInfo,ItemCounts",
- StartIndex: 0,
- Limit: LibraryBrowser.getDefaultPageSize()
- },
- view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Thumb', 'Thumb')
- };
+ var self = this;
- pageData.query.ParentId = LibraryMenu.getTopParentId();
- LibraryBrowser.loadSavedQueryValues(key, pageData.query);
+ var data = {};
+ function getPageData() {
+ var key = getSavedQueryKey();
+ var pageData = data[key];
+
+ if (!pageData) {
+ pageData = data[key] = {
+ query: {
+ SortBy: "SortName",
+ SortOrder: "Ascending",
+ IncludeItemTypes: "Audio,MusicVideo",
+ 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);
+ }
+ return pageData;
}
- return pageData;
- }
- function getQuery() {
+ function getQuery() {
- return getPageData().query;
- }
+ return getPageData().query;
+ }
- function getSavedQueryKey() {
+ function getSavedQueryKey() {
- return LibraryBrowser.getSavedQueryKey('genres');
- }
+ return LibraryBrowser.getSavedQueryKey('genres');
+ }
- function reloadItems(page) {
+ function reloadItems(context) {
- Dashboard.showLoadingMsg();
+ Dashboard.showLoadingMsg();
- var query = getQuery();
+ var query = getQuery();
- ApiClient.getMusicGenres(Dashboard.getCurrentUserId(), query).then(function (result) {
+ ApiClient.getMusicGenres(Dashboard.getCurrentUserId(), query).then(function (result) {
- // Scroll back up so they can see the results from the beginning
- window.scrollTo(0, 0);
+ // Scroll back up so they can see the results from the beginning
+ window.scrollTo(0, 0);
- var html = '';
+ var html = '';
- var view = getPageData().view;
+ var view = getPageData().view;
- $('.listTopPaging', page).html(LibraryBrowser.getQueryPagingHtml({
- startIndex: query.StartIndex,
- limit: query.Limit,
- totalRecordCount: result.TotalRecordCount,
- showLimit: false,
- updatePageSizeSetting: false,
- addLayoutButton: true,
- currentLayout: view
+ $('.listTopPaging', context).html(LibraryBrowser.getQueryPagingHtml({
+ startIndex: query.StartIndex,
+ limit: query.Limit,
+ totalRecordCount: result.TotalRecordCount,
+ showLimit: false,
+ updatePageSizeSetting: false,
+ addLayoutButton: true,
+ currentLayout: view
- }));
+ }));
- if (view == "Thumb") {
- html = LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "backdrop",
- preferThumb: true,
- showItemCounts: true,
- context: 'music',
- lazy: true,
- centerText: true,
- overlayPlayButton: true
+ if (view == "Thumb") {
+ html = LibraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "backdrop",
+ preferThumb: true,
+ showItemCounts: true,
+ context: 'music',
+ lazy: true,
+ centerText: true,
+ overlayPlayButton: true
+ });
+ }
+ else if (view == "ThumbCard") {
+
+ html = LibraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "backdrop",
+ preferThumb: true,
+ context: 'music',
+ showItemCounts: true,
+ cardLayout: true,
+ lazy: true,
+ showTitle: true
+ });
+ }
+ else if (view == "Poster") {
+ html = LibraryBrowser.getPosterViewHtml({
+ items: result.Items,
+ shape: "portrait",
+ context: 'music',
+ centerText: true,
+ showItemCounts: 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);
});
- }
- else if (view == "ThumbCard") {
- html = LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "backdrop",
- preferThumb: true,
- context: 'music',
- showItemCounts: true,
- cardLayout: true,
- lazy: true,
- showTitle: true
+ $('.btnPreviousPage', context).on('click', function () {
+ query.StartIndex -= query.Limit;
+ reloadItems(context);
});
- }
- else if (view == "Poster") {
- html = LibraryBrowser.getPosterViewHtml({
- items: result.Items,
- shape: "portrait",
- context: 'music',
- centerText: true,
- showItemCounts: true,
- lazy: true
+
+ $('.btnChangeLayout', context).on('layoutchange', function (e, layout) {
+ getPageData().view = layout;
+ LibraryBrowser.saveViewSetting(getSavedQueryKey(), layout);
+ reloadItems(context);
});
- }
- var elem = page.querySelector('#items');
- elem.innerHTML = html;
- ImageLoader.lazyChildren(elem);
+ LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
- $('.btnNextPage', page).on('click', function () {
- query.StartIndex += query.Limit;
- reloadItems(page);
+ Dashboard.hideLoadingMsg();
});
+ }
- $('.btnPreviousPage', page).on('click', function () {
- query.StartIndex -= query.Limit;
- reloadItems(page);
- });
+ self.renderTab = function () {
- $('.btnChangeLayout', page).on('layoutchange', function (e, layout) {
- getPageData().view = layout;
- LibraryBrowser.saveViewSetting(getSavedQueryKey(), layout);
- reloadItems(page);
- });
-
- LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
-
- Dashboard.hideLoadingMsg();
- });
- }
-
- window.MusicPage.renderGenresTab = function (page, tabContent) {
-
- reloadItems(tabContent);
+ reloadItems(tabContent);
+ };
};
});
\ No newline at end of file
diff --git a/dashboard-ui/scripts/musicrecommended.js b/dashboard-ui/scripts/musicrecommended.js
index ae98d3aa93..5d5731bfb9 100644
--- a/dashboard-ui/scripts/musicrecommended.js
+++ b/dashboard-ui/scripts/musicrecommended.js
@@ -185,18 +185,6 @@
});
}
- function initSuggestedTab(page, tabContent) {
-
- var containers = tabContent.querySelectorAll('.itemsContainer');
- if (enableScrollX()) {
- $(containers).addClass('hiddenScrollX');
- } else {
- $(containers).removeClass('hiddenScrollX');
- }
-
- $(containers).createCardMenus();
- }
-
function loadSuggestionsTab(page, tabContent) {
var parentId = LibraryMenu.getTopParentId();
@@ -214,93 +202,6 @@
});
}
- function loadTab(page, index) {
-
- var tabContent = page.querySelector('.pageTabContent[data-index=\'' + index + '\']');
- var depends = [];
- var scope = 'MusicPage';
- var renderMethod = '';
- var initMethod = '';
-
- switch (index) {
-
- case 0:
- initMethod = 'initSuggestedTab';
- renderMethod = 'renderSuggestedTab';
- break;
- case 1:
- depends.push('scripts/musicalbums');
- renderMethod = 'renderAlbumsTab';
- initMethod = 'initAlbumsTab';
- break;
- case 2:
- depends.push('scripts/musicalbumartists');
- renderMethod = 'renderAlbumArtistsTab';
- initMethod = 'initAlbumArtistsTab';
- break;
- case 3:
- depends.push('scripts/musicartists');
- renderMethod = 'renderArtistsTab';
- initMethod = 'initArtistsTab';
- break;
- case 4:
- depends.push('scripts/songs');
- renderMethod = 'renderSongsTab';
- depends.push('paper-icon-item');
- depends.push('paper-item-body');
- break;
- case 5:
- depends.push('scripts/musicgenres');
- renderMethod = 'renderGenresTab';
- break;
- case 6:
- depends.push('scripts/musicfolders');
- renderMethod = 'renderFoldersTab';
- initMethod = 'initFoldersTab';
- break;
- default:
- break;
- }
-
- require(depends, function () {
-
- if (initMethod && !tabContent.initComplete) {
-
- window[scope][initMethod](page, tabContent);
- tabContent.initComplete = true;
- }
-
- window[scope][renderMethod](page, tabContent);
-
- });
- }
-
- window.MusicPage = window.MusicPage || {};
- window.MusicPage.renderSuggestedTab = loadSuggestionsTab;
- window.MusicPage.initSuggestedTab = initSuggestedTab;
-
- pageIdOn('pageinit', "musicRecommendedPage", function () {
-
- var page = this;
-
- $('.recommendations', page).createCardMenus();
-
- var mdlTabs = page.querySelector('.libraryViewNav');
-
- var baseUrl = 'music.html';
- var topParentId = LibraryMenu.getTopParentId();
- if (topParentId) {
- baseUrl += '?topParentId=' + topParentId;
- }
-
- libraryBrowser.configurePaperLibraryTabs(page, mdlTabs, page.querySelectorAll('.pageTabContent'));
-
- mdlTabs.addEventListener('tabchange', function (e) {
- loadTab(page, parseInt(e.detail.selectedTabIndex));
- });
-
- });
-
pageIdOn('pagebeforeshow', "musicRecommendedPage", function () {
var page = this;
@@ -326,5 +227,124 @@
});
+ return function (view, params) {
+
+ var self = this;
+
+ function reload() {
+
+ Dashboard.showLoadingMsg();
+
+ var tabContent = view.querySelector('.pageTabContent[data-index=\'' + 0 + '\']');
+ loadSuggestionsTab(view, tabContent);
+ }
+
+ function enableScrollX() {
+ return browserInfo.mobile && AppInfo.enableAppLayouts;
+ }
+
+ function getThumbShape() {
+ return enableScrollX() ? 'overflowBackdrop' : 'backdrop';
+ }
+
+ self.initTab = function () {
+
+ var tabContent = view.querySelector('.pageTabContent[data-index=\'' + 0 + '\']');
+
+ var containers = tabContent.querySelectorAll('.itemsContainer');
+ if (enableScrollX()) {
+ $(containers).addClass('hiddenScrollX');
+ } else {
+ $(containers).removeClass('hiddenScrollX');
+ }
+
+ $(containers).createCardMenus();
+ };
+
+ self.renderTab = function () {
+ reload();
+ };
+
+ var tabControllers = [];
+ var renderedTabs = [];
+
+ function loadTab(page, index) {
+
+ var tabContent = page.querySelector('.pageTabContent[data-index=\'' + index + '\']');
+ var depends = [];
+
+ switch (index) {
+
+ case 0:
+ break;
+ case 1:
+ depends.push('scripts/musicalbums');
+ break;
+ case 2:
+ depends.push('scripts/musicalbumartists');
+ break;
+ case 3:
+ depends.push('scripts/musicartists');
+ break;
+ case 4:
+ depends.push('scripts/songs');
+ depends.push('paper-icon-item');
+ depends.push('paper-item-body');
+ break;
+ case 5:
+ depends.push('scripts/musicgenres');
+ break;
+ case 6:
+ depends.push('scripts/musicfolders');
+ break;
+ default:
+ break;
+ }
+
+ require(depends, function (controllerFactory) {
+
+ if (index == 0) {
+ self.tabContent = tabContent;
+ }
+ var controller = tabControllers[index];
+ if (!controller) {
+ controller = index ? new controllerFactory(view, params, tabContent) : self;
+ tabControllers[index] = controller;
+
+ if (controller.initTab) {
+ controller.initTab();
+ }
+ }
+
+ if (renderedTabs.indexOf(index) == -1) {
+ renderedTabs.push(index);
+ controller.renderTab();
+ }
+ });
+ }
+
+ var mdlTabs = view.querySelector('.libraryViewNav');
+
+ var baseUrl = 'music.html';
+ var topParentId = params.topParentId;
+ if (topParentId) {
+ baseUrl += '?topParentId=' + topParentId;
+ }
+
+ libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'));
+
+ mdlTabs.addEventListener('tabchange', function (e) {
+ loadTab(view, parseInt(e.detail.selectedTabIndex));
+ });
+
+ 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/site.js b/dashboard-ui/scripts/site.js
index 3adb61c62d..fb4b3d0795 100644
--- a/dashboard-ui/scripts/site.js
+++ b/dashboard-ui/scripts/site.js
@@ -2281,7 +2281,7 @@ var AppInfo = {};
var baseUrl = 'bower_components/emby-webcomponents/strings/';
- var languages = ['en-US'];
+ var languages = ['en-US', 'kk', 'ru'];
var translations = languages.map(function (i) {
return {
@@ -2613,7 +2613,7 @@ var AppInfo = {};
defineRoute({
path: '/livetv.html',
- dependencies: ['paper-button', 'livetvcss', 'paper-checkbox'],
+ dependencies: ['paper-button', 'livetvcss'],
controller: 'scripts/livetvsuggested',
autoFocus: false
});
@@ -2736,7 +2736,8 @@ var AppInfo = {};
defineRoute({
path: '/music.html',
- dependencies: [],
+ dependencies: ['scripts/alphapicker'],
+ controller: 'scripts/musicrecommended',
autoFocus: false
});
diff --git a/dashboard-ui/scripts/songs.js b/dashboard-ui/scripts/songs.js
index 716f407bc1..d838064b35 100644
--- a/dashboard-ui/scripts/songs.js
+++ b/dashboard-ui/scripts/songs.js
@@ -1,166 +1,171 @@
-define(['jQuery'], function ($) {
-
- var defaultSortBy = "Album,SortName";
-
- var data = {};
- function getPageData(context) {
- var key = getSavedQueryKey(context);
- var pageData = data[key];
-
- if (!pageData) {
- pageData = data[key] = {
- query: {
- SortBy: defaultSortBy,
- SortOrder: "Ascending",
- IncludeItemTypes: "Audio",
- Recursive: true,
- Fields: "AudioInfo,ParentId,SyncInfo",
- Limit: 100,
- StartIndex: 0,
- ImageTypeLimit: 1,
- EnableImageTypes: "Primary,Backdrop,Banner,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('songs');
- }
- 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 html = '';
- var pagingHtml = LibraryBrowser.getQueryPagingHtml({
- startIndex: query.StartIndex,
- limit: query.Limit,
- totalRecordCount: result.TotalRecordCount,
- showLimit: false,
- sortButton: true,
- updatePageSizeSetting: false,
- filterButton: true
- });
-
- page.querySelector('.listTopPaging').innerHTML = pagingHtml;
-
- html += LibraryBrowser.getListViewHtml({
- items: result.Items,
- showIndex: true,
- defaultAction: 'play',
- smallIcon: 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);
- });
-
- $('.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('OptionTrackName'),
- id: 'Name'
- },
- {
- name: Globalize.translate('OptionAlbum'),
- id: 'Album,SortName'
- },
- {
- name: Globalize.translate('OptionAlbumArtist'),
- id: 'AlbumArtist,Album,SortName'
- },
- {
- name: Globalize.translate('OptionArtist'),
- id: 'Artist,Album,SortName'
- },
- {
- name: Globalize.translate('OptionDateAdded'),
- id: 'DateCreated,SortName'
- },
- {
- name: Globalize.translate('OptionDatePlayed'),
- id: 'DatePlayed,SortName'
- },
- {
- name: Globalize.translate('OptionPlayCount'),
- id: 'PlayCount,SortName'
- },
- {
- name: Globalize.translate('OptionReleaseDate'),
- id: 'PremiereDate,AlbumArtist,Album,SortName'
- },
- {
- name: Globalize.translate('OptionRuntime'),
- id: 'Runtime,AlbumArtist,Album,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: 'songs'
- });
-
- Events.on(filterDialog, 'filterchange', function () {
- reloadItems(page);
- });
-
- filterDialog.show();
- });
- }
-
- window.MusicPage.renderSongsTab = function (page, tabContent) {
-
- reloadItems(tabContent);
- };
-
+define(['jQuery'], function ($) {
+
+
+ return function (view, params, tabContent) {
+
+ var self = this;
+
+ var defaultSortBy = "Album,SortName";
+
+ var data = {};
+ function getPageData(context) {
+ var key = getSavedQueryKey(context);
+ var pageData = data[key];
+
+ if (!pageData) {
+ pageData = data[key] = {
+ query: {
+ SortBy: defaultSortBy,
+ SortOrder: "Ascending",
+ IncludeItemTypes: "Audio",
+ Recursive: true,
+ Fields: "AudioInfo,ParentId,SyncInfo",
+ Limit: 100,
+ StartIndex: 0,
+ ImageTypeLimit: 1,
+ EnableImageTypes: "Primary,Backdrop,Banner,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('songs');
+ }
+ return context.savedQueryKey;
+ }
+
+ function reloadItems(context) {
+
+ Dashboard.showLoadingMsg();
+
+ var query = getQuery(context);
+ 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,
+ sortButton: true,
+ updatePageSizeSetting: false,
+ filterButton: true
+ });
+
+ context.querySelector('.listTopPaging').innerHTML = pagingHtml;
+
+ html += LibraryBrowser.getListViewHtml({
+ items: result.Items,
+ showIndex: true,
+ defaultAction: 'play',
+ smallIcon: true
+ });
+
+ var elem = context.querySelector('#items');
+ elem.innerHTML = html + pagingHtml;
+ 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);
+ });
+
+ $('.btnFilter', context).on('click', function () {
+ showFilterMenu(context);
+ });
+
+ // On callback make sure to set StartIndex = 0
+ $('.btnSort', context).on('click', function () {
+ LibraryBrowser.showSortMenu({
+ items: [{
+ name: Globalize.translate('OptionTrackName'),
+ id: 'Name'
+ },
+ {
+ name: Globalize.translate('OptionAlbum'),
+ id: 'Album,SortName'
+ },
+ {
+ name: Globalize.translate('OptionAlbumArtist'),
+ id: 'AlbumArtist,Album,SortName'
+ },
+ {
+ name: Globalize.translate('OptionArtist'),
+ id: 'Artist,Album,SortName'
+ },
+ {
+ name: Globalize.translate('OptionDateAdded'),
+ id: 'DateCreated,SortName'
+ },
+ {
+ name: Globalize.translate('OptionDatePlayed'),
+ id: 'DatePlayed,SortName'
+ },
+ {
+ name: Globalize.translate('OptionPlayCount'),
+ id: 'PlayCount,SortName'
+ },
+ {
+ name: Globalize.translate('OptionReleaseDate'),
+ id: 'PremiereDate,AlbumArtist,Album,SortName'
+ },
+ {
+ name: Globalize.translate('OptionRuntime'),
+ id: 'Runtime,AlbumArtist,Album,SortName'
+ }],
+ callback: function () {
+ reloadItems(context);
+ },
+ query: query
+ });
+ });
+
+ LibraryBrowser.saveQueryValues(getSavedQueryKey(context), query);
+
+ Dashboard.hideLoadingMsg();
+ });
+ }
+
+ function showFilterMenu(context) {
+
+ require(['components/filterdialog/filterdialog'], function (filterDialogFactory) {
+
+ var filterDialog = new filterDialogFactory({
+ query: getQuery(context),
+ mode: 'songs'
+ });
+
+ Events.on(filterDialog, 'filterchange', function () {
+ reloadItems(context);
+ });
+
+ filterDialog.show();
+ });
+ }
+
self.renderTab = function () {
+
+ reloadItems(tabContent);
+ };
+ };
+
});
\ No newline at end of file