diff --git a/package.json b/package.json index da8c87aed..c22b0ef30 100644 --- a/package.json +++ b/package.json @@ -248,6 +248,8 @@ "src/scripts/imagehelper.js", "src/scripts/inputManager.js", "src/scripts/keyboardNavigation.js", + "src/scripts/libraryBrowser.js", + "src/scripts/multiDownload.js", "src/scripts/playlists.js", "src/scripts/settings/appSettings.js", "src/scripts/settings/userSettings.js", diff --git a/src/controllers/livetv/livetvchannels.js b/src/controllers/livetv/livetvchannels.js index 62906d9d2..a36dbbc83 100644 --- a/src/controllers/livetv/livetvchannels.js +++ b/src/controllers/livetv/livetvchannels.js @@ -60,7 +60,7 @@ define(['cardBuilder', 'imageLoader', 'libraryBrowser', 'loading', 'events', 'us } var query = getQuery(); - context.querySelector('.paging').innerHTML = libraryBrowser.getQueryPagingHtml({ + context.querySelector('.paging').innerHTML = libraryBrowser.default.getQueryPagingHtml({ startIndex: query.StartIndex, limit: query.Limit, totalRecordCount: result.TotalRecordCount, diff --git a/src/controllers/movies/moviecollections.js b/src/controllers/movies/moviecollections.js index 65abca46e..21ea3ce15 100644 --- a/src/controllers/movies/moviecollections.js +++ b/src/controllers/movies/moviecollections.js @@ -18,7 +18,7 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', StartIndex: 0 }, - view: libraryBrowser.getSavedView(key) || 'Poster' + view: libraryBrowser.default.getSavedView(key) || 'Poster' }; if (userSettings.libraryPageSize() > 0) { @@ -26,7 +26,7 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB } pageData.query.ParentId = params.topParentId; - libraryBrowser.loadSavedQueryValues(key, pageData.query); + libraryBrowser.default.loadSavedQueryValues(key, pageData.query); } return pageData; @@ -38,7 +38,7 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB function getSavedQueryKey(context) { if (!context.savedQueryKey) { - context.savedQueryKey = libraryBrowser.getSavedQueryKey('moviecollections'); + context.savedQueryKey = libraryBrowser.default.getSavedQueryKey('moviecollections'); } return context.savedQueryKey; @@ -88,7 +88,7 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB window.scrollTo(0, 0); var html; - var pagingHtml = libraryBrowser.getQueryPagingHtml({ + var pagingHtml = libraryBrowser.default.getQueryPagingHtml({ startIndex: query.StartIndex, limit: query.Limit, totalRecordCount: result.TotalRecordCount, @@ -182,7 +182,7 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB var itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); - libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); + libraryBrowser.default.saveQueryValues(getSavedQueryKey(page), query); loading.hide(); isLoading = false; @@ -202,7 +202,7 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB function initPage(tabContent) { tabContent.querySelector('.btnSort').addEventListener('click', function (e) { - libraryBrowser.showSortMenu({ + libraryBrowser.default.showSortMenu({ items: [{ name: globalize.translate('OptionNameSort'), id: 'SortName' @@ -229,12 +229,12 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB }); var btnSelectView = tabContent.querySelector('.btnSelectView'); btnSelectView.addEventListener('click', function (e) { - libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard,Thumb,ThumbCard'.split(',')); + libraryBrowser.default.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard,Thumb,ThumbCard'.split(',')); }); btnSelectView.addEventListener('layoutchange', function (e) { var viewStyle = e.detail.viewStyle; getPageData(tabContent).view = viewStyle; - libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle); + libraryBrowser.default.saveViewSetting(getSavedQueryKey(tabContent), viewStyle); getQuery(tabContent).StartIndex = 0; onViewStyleChange(); reloadItems(tabContent); diff --git a/src/controllers/movies/moviegenres.js b/src/controllers/movies/moviegenres.js index 43f73bfa7..e2281ca65 100644 --- a/src/controllers/movies/moviegenres.js +++ b/src/controllers/movies/moviegenres.js @@ -18,7 +18,7 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader view: 'Poster' }; pageData.query.ParentId = params.topParentId; - libraryBrowser.loadSavedQueryValues(key, pageData.query); + libraryBrowser.default.loadSavedQueryValues(key, pageData.query); } return pageData; @@ -29,7 +29,7 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader } function getSavedQueryKey() { - return libraryBrowser.getSavedQueryKey('moviegenres'); + return libraryBrowser.default.getSavedQueryKey('moviegenres'); } function getPromise() { @@ -174,7 +174,7 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader elem.innerHTML = html; lazyLoader.lazyChildren(elem, fillItemsContainer); - libraryBrowser.saveQueryValues(getSavedQueryKey(), query); + libraryBrowser.default.saveQueryValues(getSavedQueryKey(), query); loading.hide(); }); } @@ -197,7 +197,7 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader self.setCurrentViewStyle = function (viewStyle) { getPageData().view = viewStyle; - libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle); + libraryBrowser.default.saveViewSetting(getSavedQueryKey(), viewStyle); fullyReload(); }; diff --git a/src/controllers/movies/movies.js b/src/controllers/movies/movies.js index 82b162e2a..32775e2c1 100644 --- a/src/controllers/movies/movies.js +++ b/src/controllers/movies/movies.js @@ -51,7 +51,7 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser', window.scrollTo(0, 0); updateFilterControls(); - var pagingHtml = libraryBrowser.getQueryPagingHtml({ + var pagingHtml = libraryBrowser.default.getQueryPagingHtml({ startIndex: query.StartIndex, limit: query.Limit, totalRecordCount: result.TotalRecordCount, @@ -189,7 +189,7 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser', if (btnSort) { btnSort.addEventListener('click', function (e) { - libraryBrowser.showSortMenu({ + libraryBrowser.default.showSortMenu({ items: [{ name: globalize.translate('OptionNameSort'), id: 'SortName,ProductionYear' @@ -230,7 +230,7 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser', } var btnSelectView = tabContent.querySelector('.btnSelectView'); btnSelectView.addEventListener('click', function (e) { - libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'Banner,List,Poster,PosterCard,Thumb,ThumbCard'.split(',')); + libraryBrowser.default.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'Banner,List,Poster,PosterCard,Thumb,ThumbCard'.split(',')); }); btnSelectView.addEventListener('layoutchange', function (e) { var viewStyle = e.detail.viewStyle; diff --git a/src/controllers/movies/movietrailers.js b/src/controllers/movies/movietrailers.js index a9db0abf4..e52f3e950 100644 --- a/src/controllers/movies/movietrailers.js +++ b/src/controllers/movies/movietrailers.js @@ -18,14 +18,14 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', ' EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', StartIndex: 0 }, - view: libraryBrowser.getSavedView(key) || 'Poster' + view: libraryBrowser.default.getSavedView(key) || 'Poster' }; if (userSettings.libraryPageSize() > 0) { pageData.query['Limit'] = userSettings.libraryPageSize(); } - libraryBrowser.loadSavedQueryValues(key, pageData.query); + libraryBrowser.default.loadSavedQueryValues(key, pageData.query); } return pageData; @@ -37,7 +37,7 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', ' function getSavedQueryKey(context) { if (!context.savedQueryKey) { - context.savedQueryKey = libraryBrowser.getSavedQueryKey('trailers'); + context.savedQueryKey = libraryBrowser.default.getSavedQueryKey('trailers'); } return context.savedQueryKey; @@ -72,7 +72,7 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', ' window.scrollTo(0, 0); updateFilterControls(tabContent); - var pagingHtml = libraryBrowser.getQueryPagingHtml({ + var pagingHtml = libraryBrowser.default.getQueryPagingHtml({ startIndex: query.StartIndex, limit: query.Limit, totalRecordCount: result.TotalRecordCount, @@ -169,7 +169,7 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', ' var itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); - libraryBrowser.saveQueryValues(getSavedQueryKey(tabContent), query); + libraryBrowser.default.saveQueryValues(getSavedQueryKey(tabContent), query); loading.hide(); isLoading = false; }); @@ -226,7 +226,7 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', ' self.showFilterMenu(); }); tabContent.querySelector('.btnSort').addEventListener('click', function (e) { - libraryBrowser.showSortMenu({ + libraryBrowser.default.showSortMenu({ items: [{ name: globalize.translate('OptionNameSort'), id: 'SortName' diff --git a/src/controllers/music/musicalbums.js b/src/controllers/music/musicalbums.js index 3630e0b9f..b41af824e 100644 --- a/src/controllers/music/musicalbums.js +++ b/src/controllers/music/musicalbums.js @@ -32,7 +32,7 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', StartIndex: 0 }, - view: libraryBrowser.getSavedView(key) || 'Poster' + view: libraryBrowser.default.getSavedView(key) || 'Poster' }; if (userSettings.libraryPageSize() > 0) { @@ -40,7 +40,7 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser } pageData.query.ParentId = params.topParentId; - libraryBrowser.loadSavedQueryValues(key, pageData.query); + libraryBrowser.default.loadSavedQueryValues(key, pageData.query); } return pageData; @@ -52,7 +52,7 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser function getSavedQueryKey() { if (!savedQueryKey) { - savedQueryKey = libraryBrowser.getSavedQueryKey('musicalbums'); + savedQueryKey = libraryBrowser.default.getSavedQueryKey('musicalbums'); } return savedQueryKey; @@ -103,7 +103,7 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser window.scrollTo(0, 0); updateFilterControls(page); var html; - var pagingHtml = libraryBrowser.getQueryPagingHtml({ + var pagingHtml = libraryBrowser.default.getQueryPagingHtml({ startIndex: query.StartIndex, limit: query.Limit, totalRecordCount: result.TotalRecordCount, @@ -165,7 +165,7 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser var itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); - libraryBrowser.saveQueryValues(getSavedQueryKey(), query); + libraryBrowser.default.saveQueryValues(getSavedQueryKey(), query); loading.hide(); isLoading = false; @@ -228,7 +228,7 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser self.showFilterMenu(); }); tabContent.querySelector('.btnSort').addEventListener('click', function (e) { - libraryBrowser.showSortMenu({ + libraryBrowser.default.showSortMenu({ items: [{ name: globalize.translate('OptionNameSort'), id: 'SortName' @@ -261,12 +261,12 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser }); var btnSelectView = tabContent.querySelector('.btnSelectView'); btnSelectView.addEventListener('click', function (e) { - libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(',')); + libraryBrowser.default.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(',')); }); btnSelectView.addEventListener('layoutchange', function (e) { var viewStyle = e.detail.viewStyle; getPageData().view = viewStyle; - libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle); + libraryBrowser.default.saveViewSetting(getSavedQueryKey(), viewStyle); getQuery().StartIndex = 0; onViewStyleChange(); reloadItems(tabContent); diff --git a/src/controllers/music/musicartists.js b/src/controllers/music/musicartists.js index c9a0b06b7..73677c440 100644 --- a/src/controllers/music/musicartists.js +++ b/src/controllers/music/musicartists.js @@ -23,10 +23,10 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', ' pageData = data[key] = { query: queryValues, - view: libraryBrowser.getSavedView(key) || 'Poster' + view: libraryBrowser.default.getSavedView(key) || 'Poster' }; pageData.query.ParentId = params.topParentId; - libraryBrowser.loadSavedQueryValues(key, pageData.query); + libraryBrowser.default.loadSavedQueryValues(key, pageData.query); } return pageData; @@ -38,7 +38,7 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', ' function getSavedQueryKey(context) { if (!context.savedQueryKey) { - context.savedQueryKey = libraryBrowser.getSavedQueryKey(self.mode); + context.savedQueryKey = libraryBrowser.default.getSavedQueryKey(self.mode); } return context.savedQueryKey; @@ -92,7 +92,7 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', ' window.scrollTo(0, 0); updateFilterControls(page); var html; - var pagingHtml = libraryBrowser.getQueryPagingHtml({ + var pagingHtml = libraryBrowser.default.getQueryPagingHtml({ startIndex: query.StartIndex, limit: query.Limit, totalRecordCount: result.TotalRecordCount, @@ -150,7 +150,7 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', ' var itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); - libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); + libraryBrowser.default.saveQueryValues(getSavedQueryKey(page), query); loading.hide(); isLoading = false; @@ -213,12 +213,12 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', ' }); var btnSelectView = tabContent.querySelector('.btnSelectView'); btnSelectView.addEventListener('click', function (e) { - libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(',')); + libraryBrowser.default.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(',')); }); btnSelectView.addEventListener('layoutchange', function (e) { var viewStyle = e.detail.viewStyle; getPageData(tabContent).view = viewStyle; - libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle); + libraryBrowser.default.saveViewSetting(getSavedQueryKey(tabContent), viewStyle); getQuery(tabContent).StartIndex = 0; onViewStyleChange(); reloadItems(tabContent); diff --git a/src/controllers/music/musicgenres.js b/src/controllers/music/musicgenres.js index 82f2eba57..ac4a7349b 100644 --- a/src/controllers/music/musicgenres.js +++ b/src/controllers/music/musicgenres.js @@ -15,10 +15,10 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], f Fields: 'PrimaryImageAspectRatio,ItemCounts', StartIndex: 0 }, - view: libraryBrowser.getSavedView(key) || 'Poster' + view: libraryBrowser.default.getSavedView(key) || 'Poster' }; pageData.query.ParentId = params.topParentId; - libraryBrowser.loadSavedQueryValues(key, pageData.query); + libraryBrowser.default.loadSavedQueryValues(key, pageData.query); } return pageData; @@ -29,7 +29,7 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], f } function getSavedQueryKey() { - return libraryBrowser.getSavedQueryKey('genres'); + return libraryBrowser.default.getSavedQueryKey('genres'); } function getPromise() { @@ -85,7 +85,7 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], f var elem = context.querySelector('#items'); elem.innerHTML = html; imageLoader.lazyChildren(elem); - libraryBrowser.saveQueryValues(getSavedQueryKey(), query); + libraryBrowser.default.saveQueryValues(getSavedQueryKey(), query); loading.hide(); require(['autoFocuser'], function (autoFocuser) { @@ -112,7 +112,7 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], f self.setCurrentViewStyle = function (viewStyle) { getPageData().view = viewStyle; - libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle); + libraryBrowser.default.saveViewSetting(getSavedQueryKey(), viewStyle); fullyReload(); }; diff --git a/src/controllers/music/musicplaylists.js b/src/controllers/music/musicplaylists.js index f50848921..b34ba294e 100644 --- a/src/controllers/music/musicplaylists.js +++ b/src/controllers/music/musicplaylists.js @@ -16,10 +16,10 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], f Fields: 'PrimaryImageAspectRatio,SortName,CanDelete', StartIndex: 0 }, - view: libraryBrowser.getSavedView(key) || 'Poster' + view: libraryBrowser.default.getSavedView(key) || 'Poster' }; pageData.query.ParentId = params.topParentId; - libraryBrowser.loadSavedQueryValues(key, pageData.query); + libraryBrowser.default.loadSavedQueryValues(key, pageData.query); } return pageData; @@ -30,7 +30,7 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], f } function getSavedQueryKey() { - return libraryBrowser.getSavedQueryKey('genres'); + return libraryBrowser.default.getSavedQueryKey('genres'); } function getPromise() { @@ -56,7 +56,7 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], f var elem = context.querySelector('#items'); elem.innerHTML = html; imageLoader.lazyChildren(elem); - libraryBrowser.saveQueryValues(getSavedQueryKey(), query); + libraryBrowser.default.saveQueryValues(getSavedQueryKey(), query); loading.hide(); require(['autoFocuser'], function (autoFocuser) { diff --git a/src/controllers/music/songs.js b/src/controllers/music/songs.js index aa63ec51f..f90edb410 100644 --- a/src/controllers/music/songs.js +++ b/src/controllers/music/songs.js @@ -25,7 +25,7 @@ define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'loading', 'userS } pageData.query.ParentId = params.topParentId; - libraryBrowser.loadSavedQueryValues(key, pageData.query); + libraryBrowser.default.loadSavedQueryValues(key, pageData.query); } return pageData; @@ -37,7 +37,7 @@ define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'loading', 'userS function getSavedQueryKey(context) { if (!context.savedQueryKey) { - context.savedQueryKey = libraryBrowser.getSavedQueryKey('songs'); + context.savedQueryKey = libraryBrowser.default.getSavedQueryKey('songs'); } return context.savedQueryKey; @@ -73,7 +73,7 @@ define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'loading', 'userS window.scrollTo(0, 0); var i; var length; - var pagingHtml = libraryBrowser.getQueryPagingHtml({ + var pagingHtml = libraryBrowser.default.getQueryPagingHtml({ startIndex: query.StartIndex, limit: query.Limit, totalRecordCount: result.TotalRecordCount, @@ -109,7 +109,7 @@ define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'loading', 'userS var itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); - libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); + libraryBrowser.default.saveQueryValues(getSavedQueryKey(page), query); loading.hide(); isLoading = false; @@ -147,7 +147,7 @@ define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'loading', 'userS self.showFilterMenu(); }); tabContent.querySelector('.btnSort').addEventListener('click', function (e) { - libraryBrowser.showSortMenu({ + libraryBrowser.default.showSortMenu({ items: [{ name: globalize.translate('OptionTrackName'), id: 'Name' diff --git a/src/scripts/libraryBrowser.js b/src/scripts/libraryBrowser.js index f9e5e2359..2c6528c5a 100644 --- a/src/scripts/libraryBrowser.js +++ b/src/scripts/libraryBrowser.js @@ -1,199 +1,210 @@ -define(['userSettings', 'globalize'], function (userSettings, globalize) { - 'use strict'; +import * as userSettings from 'userSettings'; +import globalize from 'globalize'; - var libraryBrowser = { - getSavedQueryKey: function (modifier) { - return window.location.href.split('#')[0] + (modifier || ''); - }, - loadSavedQueryValues: function (key, query) { - var values = userSettings.get(key); +export function getSavedQueryKey(modifier) { + return window.location.href.split('#')[0] + (modifier || ''); +} - if (values) { - values = JSON.parse(values); - return Object.assign(query, values); - } +export function loadSavedQueryValues(key, query) { + var values = userSettings.get(key); - return query; - }, - saveQueryValues: function (key, query) { - var values = {}; + if (values) { + values = JSON.parse(values); + return Object.assign(query, values); + } - if (query.SortBy) { - values.SortBy = query.SortBy; - } + return query; +} - if (query.SortOrder) { - values.SortOrder = query.SortOrder; - } +export function saveQueryValues(key, query) { + var values = {}; - userSettings.set(key, JSON.stringify(values)); - }, - saveViewSetting: function (key, value) { - userSettings.set(key + '-_view', value); - }, - getSavedView: function (key) { - return userSettings.get(key + '-_view'); - }, - showLayoutMenu: function (button, currentLayout, views) { - var dispatchEvent = true; + if (query.SortBy) { + values.SortBy = query.SortBy; + } - if (!views) { - dispatchEvent = false; - views = button.getAttribute('data-layouts'); - views = views ? views.split(',') : ['List', 'Poster', 'PosterCard', 'Thumb', 'ThumbCard']; - } + if (query.SortOrder) { + values.SortOrder = query.SortOrder; + } - var menuItems = views.map(function (v) { - return { - name: globalize.translate('Option' + v), - id: v, - selected: currentLayout == v - }; - }); + userSettings.set(key, JSON.stringify(values)); +} - require(['actionsheet'], function (actionsheet) { - actionsheet.show({ - items: menuItems, - positionTo: button, - callback: function (id) { - button.dispatchEvent(new CustomEvent('layoutchange', { - detail: { - viewStyle: id - }, - bubbles: true, - cancelable: false - })); +export function saveViewSetting (key, value) { + userSettings.set(key + '-_view', value); +} - if (!dispatchEvent) { - if (window.$) { - $(button).trigger('layoutchange', [id]); - } - } - } - }); - }); - }, - getQueryPagingHtml: function (options) { - var startIndex = options.startIndex; - var limit = options.limit; - var totalRecordCount = options.totalRecordCount; - var html = ''; - var recordsEnd = Math.min(startIndex + limit, totalRecordCount); - var showControls = limit < totalRecordCount; +export function getSavedView (key) { + return userSettings.get(key + '-_view'); +} - if (html += '