From 4c28399c6bd545cbb6aea06a24aa3ea80645f7f3 Mon Sep 17 00:00:00 2001 From: Cameron Date: Mon, 27 Jul 2020 20:06:11 +0100 Subject: [PATCH 1/5] Migration of library browser to ES6 moduels --- package.json | 2 + src/controllers/livetv/livetvchannels.js | 2 +- src/controllers/movies/moviecollections.js | 16 +- src/controllers/movies/moviegenres.js | 8 +- src/controllers/movies/movies.js | 6 +- src/controllers/movies/movietrailers.js | 12 +- src/controllers/music/musicalbums.js | 16 +- src/controllers/music/musicartists.js | 14 +- src/controllers/music/musicgenres.js | 10 +- src/controllers/music/musicplaylists.js | 8 +- src/controllers/music/songs.js | 10 +- src/scripts/libraryBrowser.js | 367 +++++++++++---------- src/scripts/multiDownload.js | 115 ++++--- 13 files changed, 299 insertions(+), 287 deletions(-) diff --git a/package.json b/package.json index da8c87aedd..c22b0ef301 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 62906d9d21..a36dbbc836 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 65abca46e0..21ea3ce159 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 43f73bfa76..e2281ca657 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 82b162e2ad..32775e2c13 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 a9db0abf49..e52f3e950c 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 3630e0b9f9..b41af824ee 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 c9a0b06b77..73677c4407 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 82f2eba574..ac4a7349b3 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 f508489216..b34ba294e9 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 aa63ec51fe..f90edb410b 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 f9e5e23596..2c6528c5ab 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 += '
', showControls) { - html += ''; - html += globalize.translate('ListPaging', (totalRecordCount ? startIndex + 1 : 0), recordsEnd, totalRecordCount); - html += ''; - } +export function showLayoutMenu (button, currentLayout, views) { + var dispatchEvent = true; - if (showControls || options.viewButton || options.filterButton || options.sortButton || options.addLayoutButton) { - html += '
'; + if (!views) { + dispatchEvent = false; + views = button.getAttribute('data-layouts'); + views = views ? views.split(',') : ['List', 'Poster', 'PosterCard', 'Thumb', 'ThumbCard']; + } - if (showControls) { - html += ''; - html += ''; - } + var menuItems = views.map(function (v) { + return { + name: globalize.translate('Option' + v), + id: v, + selected: currentLayout == v + }; + }); - if (options.addLayoutButton) { - html += ''; - } + import('actionsheet').then(({default: actionsheet}) => { + actionsheet.show({ + items: menuItems, + positionTo: button, + callback: function (id) { + button.dispatchEvent(new CustomEvent('layoutchange', { + detail: { + viewStyle: id + }, + bubbles: true, + cancelable: false + })); - if (options.sortButton) { - html += ''; - } - - if (options.filterButton) { - html += ''; - } - - html += '
'; - } - - return html += '
'; - }, - showSortMenu: function (options) { - require(['dialogHelper', 'emby-radio'], function (dialogHelper) { - function onSortByChange() { - var newValue = this.value; - - if (this.checked) { - var changed = options.query.SortBy != newValue; - options.query.SortBy = newValue.replace('_', ','); - options.query.StartIndex = 0; - - if (options.callback && changed) { - options.callback(); - } + if (!dispatchEvent) { + if (window.$) { + $(button).trigger('layoutchange', [id]); } } + } + }); + }); +} +export function getQueryPagingHtml (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; - function onSortOrderChange() { - var newValue = this.value; + if (html += '
', showControls) { + html += ''; + html += globalize.translate('ListPaging', (totalRecordCount ? startIndex + 1 : 0), recordsEnd, totalRecordCount); + html += ''; + } - if (this.checked) { - var changed = options.query.SortOrder != newValue; - options.query.SortOrder = newValue; - options.query.StartIndex = 0; + if (showControls || options.viewButton || options.filterButton || options.sortButton || options.addLayoutButton) { + html += '
'; - if (options.callback && changed) { - options.callback(); - } - } - } - - var dlg = dialogHelper.createDialog({ - removeOnClose: true, - modal: false, - entryAnimationDuration: 160, - exitAnimationDuration: 200 - }); - dlg.classList.add('ui-body-a'); - dlg.classList.add('background-theme-a'); - dlg.classList.add('formDialog'); - var html = ''; - html += '
'; - html += '

'; - html += globalize.translate('HeaderSortBy'); - html += '

'; - var i; - var length; - var isChecked; - html += '
'; - for (i = 0, length = options.items.length; i < length; i++) { - var option = options.items[i]; - var radioValue = option.id.replace(',', '_'); - isChecked = (options.query.SortBy || '').replace(',', '_') == radioValue ? ' checked' : ''; - html += ''; - } - - html += '
'; - html += '

'; - html += globalize.translate('HeaderSortOrder'); - html += '

'; - html += '
'; - isChecked = 'Ascending' == options.query.SortOrder ? ' checked' : ''; - html += ''; - isChecked = 'Descending' == options.query.SortOrder ? ' checked' : ''; - html += ''; - html += '
'; - html += '
'; - dlg.innerHTML = html; - dialogHelper.open(dlg); - var sortBys = dlg.querySelectorAll('.menuSortBy'); - - for (i = 0, length = sortBys.length; i < length; i++) { - sortBys[i].addEventListener('change', onSortByChange); - } - - var sortOrders = dlg.querySelectorAll('.menuSortOrder'); - - for (i = 0, length = sortOrders.length; i < length; i++) { - sortOrders[i].addEventListener('change', onSortOrderChange); - } - }); + if (showControls) { + html += ''; + html += ''; } - }; - window.LibraryBrowser = libraryBrowser; - return libraryBrowser; -}); + + if (options.addLayoutButton) { + html += ''; + } + + if (options.sortButton) { + html += ''; + } + + if (options.filterButton) { + html += ''; + } + + html += '
'; + } + + return html += '
'; +} +export function showSortMenu (options) { + require(['dialogHelper', 'emby-radio'], function (dialogHelper) { + function onSortByChange() { + var newValue = this.value; + + if (this.checked) { + var changed = options.query.SortBy != newValue; + options.query.SortBy = newValue.replace('_', ','); + options.query.StartIndex = 0; + + if (options.callback && changed) { + options.callback(); + } + } + } + + function onSortOrderChange() { + var newValue = this.value; + + if (this.checked) { + var changed = options.query.SortOrder != newValue; + options.query.SortOrder = newValue; + options.query.StartIndex = 0; + + if (options.callback && changed) { + options.callback(); + } + } + } + + var dlg = dialogHelper.createDialog({ + removeOnClose: true, + modal: false, + entryAnimationDuration: 160, + exitAnimationDuration: 200 + }); + dlg.classList.add('ui-body-a'); + dlg.classList.add('background-theme-a'); + dlg.classList.add('formDialog'); + var html = ''; + html += '
'; + html += '

'; + html += globalize.translate('HeaderSortBy'); + html += '

'; + var i; + var length; + var isChecked; + html += '
'; + for (i = 0, length = options.items.length; i < length; i++) { + var option = options.items[i]; + var radioValue = option.id.replace(',', '_'); + isChecked = (options.query.SortBy || '').replace(',', '_') == radioValue ? ' checked' : ''; + html += ''; + } + + html += '
'; + html += '

'; + html += globalize.translate('HeaderSortOrder'); + html += '

'; + html += '
'; + isChecked = 'Ascending' == options.query.SortOrder ? ' checked' : ''; + html += ''; + isChecked = 'Descending' == options.query.SortOrder ? ' checked' : ''; + html += ''; + html += '
'; + html += '
'; + dlg.innerHTML = html; + dialogHelper.open(dlg); + var sortBys = dlg.querySelectorAll('.menuSortBy'); + + for (i = 0, length = sortBys.length; i < length; i++) { + sortBys[i].addEventListener('change', onSortByChange); + } + + var sortOrders = dlg.querySelectorAll('.menuSortOrder'); + + for (i = 0, length = sortOrders.length; i < length; i++) { + sortOrders[i].addEventListener('change', onSortOrderChange); + } + }); +} + +export default { + getSavedQueryKey, + loadSavedQueryValues, + saveQueryValues, + saveViewSetting, + getSavedView, + showLayoutMenu, + getQueryPagingHtml, + showSortMenu +} diff --git a/src/scripts/multiDownload.js b/src/scripts/multiDownload.js index d11e52de14..b4ad95a975 100644 --- a/src/scripts/multiDownload.js +++ b/src/scripts/multiDownload.js @@ -1,66 +1,65 @@ -define(['browser'], function (browser) { - 'use strict'; +import browser from 'browser'; - function fallback(urls) { - var i = 0; +function fallback(urls) { + var i = 0; - (function createIframe() { - var frame = document.createElement('iframe'); - frame.style.display = 'none'; - frame.src = urls[i++]; - document.documentElement.appendChild(frame); + (function createIframe() { + var frame = document.createElement('iframe'); + frame.style.display = 'none'; + frame.src = urls[i++]; + document.documentElement.appendChild(frame); - // the download init has to be sequential otherwise IE only use the first - var interval = setInterval(function () { - if (frame.contentWindow.document.readyState === 'complete' || frame.contentWindow.document.readyState === 'interactive') { - clearInterval(interval); + // the download init has to be sequential otherwise IE only use the first + var interval = setInterval(function () { + if (frame.contentWindow.document.readyState === 'complete' || frame.contentWindow.document.readyState === 'interactive') { + clearInterval(interval); - // Safari needs a timeout - setTimeout(function () { - frame.parentNode.removeChild(frame); - }, 1000); + // Safari needs a timeout + setTimeout(function () { + frame.parentNode.removeChild(frame); + }, 1000); - if (i < urls.length) { - createIframe(); - } + if (i < urls.length) { + createIframe(); } - }, 100); - })(); - } - - function sameDomain(url) { - var a = document.createElement('a'); - a.href = url; - - return location.hostname === a.hostname && location.protocol === a.protocol; - } - - function download(url) { - var a = document.createElement('a'); - a.download = ''; - a.href = url; - // firefox doesn't support `a.click()`... - a.dispatchEvent(new MouseEvent('click')); - } - - return function (urls) { - if (!urls) { - throw new Error('`urls` required'); - } - - if (typeof document.createElement('a').download === 'undefined') { - return fallback(urls); - } - - var delay = 0; - - urls.forEach(function (url) { - // the download init has to be sequential for firefox if the urls are not on the same domain - if (browser.firefox && !sameDomain(url)) { - return setTimeout(download.bind(null, url), 100 * ++delay); } + }, 100); + })(); +} + +function sameDomain(url) { + var a = document.createElement('a'); + a.href = url; + + return location.hostname === a.hostname && location.protocol === a.protocol; +} + +function download(url) { + var a = document.createElement('a'); + a.download = ''; + a.href = url; + // firefox doesn't support `a.click()`... + a.dispatchEvent(new MouseEvent('click')); +} + +export default function (urls) { + if (!urls) { + throw new Error('`urls` required'); + } + + if (typeof document.createElement('a').download === 'undefined') { + return fallback(urls); + } + + var delay = 0; + + urls.forEach(function (url) { + // the download init has to be sequential for firefox if the urls are not on the same domain + if (browser.firefox && !sameDomain(url)) { + return setTimeout(download.bind(null, url), 100 * ++delay); + } + + download(url); + }); +} - download(url); - }); - }; -}); From 8691da18ad2ac3ec02868117ad34833e782167dc Mon Sep 17 00:00:00 2001 From: Cameron Date: Tue, 28 Jul 2020 13:09:05 +0100 Subject: [PATCH 2/5] fix lint --- src/scripts/libraryBrowser.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/scripts/libraryBrowser.js b/src/scripts/libraryBrowser.js index 2c6528c5ab..f5bff3da62 100644 --- a/src/scripts/libraryBrowser.js +++ b/src/scripts/libraryBrowser.js @@ -77,6 +77,7 @@ export function showLayoutMenu (button, currentLayout, views) { }); }); } + export function getQueryPagingHtml (options) { var startIndex = options.startIndex; var limit = options.limit; @@ -116,6 +117,7 @@ export function getQueryPagingHtml (options) { return html += ''; } + export function showSortMenu (options) { require(['dialogHelper', 'emby-radio'], function (dialogHelper) { function onSortByChange() { @@ -207,4 +209,4 @@ export default { showLayoutMenu, getQueryPagingHtml, showSortMenu -} +}; From 3757e2c9be3de8a7c430c39dc4df969dde4919bf Mon Sep 17 00:00:00 2001 From: Cameron Date: Tue, 28 Jul 2020 16:45:21 +0100 Subject: [PATCH 3/5] apply suggestions --- src/controllers/livetv/livetvchannels.js | 4 +++- src/controllers/movies/moviecollections.js | 18 ++++++++++-------- src/controllers/movies/moviegenres.js | 10 ++++++---- src/controllers/movies/movies.js | 6 +++--- src/controllers/movies/movietrailers.js | 14 ++++++++------ src/controllers/music/musicalbums.js | 18 ++++++++++-------- src/controllers/music/musicartists.js | 16 +++++++++------- src/controllers/music/musicgenres.js | 12 +++++++----- src/controllers/music/musicplaylists.js | 10 ++++++---- src/controllers/music/songs.js | 12 +++++++----- 10 files changed, 69 insertions(+), 51 deletions(-) diff --git a/src/controllers/livetv/livetvchannels.js b/src/controllers/livetv/livetvchannels.js index a36dbbc836..3ceda7d476 100644 --- a/src/controllers/livetv/livetvchannels.js +++ b/src/controllers/livetv/livetvchannels.js @@ -1,6 +1,8 @@ define(['cardBuilder', 'imageLoader', 'libraryBrowser', 'loading', 'events', 'userSettings', 'emby-itemscontainer'], function (cardBuilder, imageLoader, libraryBrowser, loading, events, userSettings) { 'use strict'; + libraryBrowser = libraryBrowser.default || libraryBrowser; + return function (view, params, tabContent) { function getPageData() { if (!pageData) { @@ -60,7 +62,7 @@ define(['cardBuilder', 'imageLoader', 'libraryBrowser', 'loading', 'events', 'us } var query = getQuery(); - context.querySelector('.paging').innerHTML = libraryBrowser.default.getQueryPagingHtml({ + context.querySelector('.paging').innerHTML = libraryBrowser.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 21ea3ce159..44904633fa 100644 --- a/src/controllers/movies/moviecollections.js +++ b/src/controllers/movies/moviecollections.js @@ -1,6 +1,8 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardBuilder', 'userSettings', 'globalize', 'emby-itemscontainer'], function (loading, events, libraryBrowser, imageLoader, listView, cardBuilder, userSettings, globalize) { 'use strict'; + libraryBrowser = libraryBrowser.default || libraryBrowser; + return function (view, params, tabContent) { function getPageData(context) { var key = getSavedQueryKey(context); @@ -18,7 +20,7 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', StartIndex: 0 }, - view: libraryBrowser.default.getSavedView(key) || 'Poster' + view: libraryBrowser.getSavedView(key) || 'Poster' }; if (userSettings.libraryPageSize() > 0) { @@ -26,7 +28,7 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB } pageData.query.ParentId = params.topParentId; - libraryBrowser.default.loadSavedQueryValues(key, pageData.query); + libraryBrowser.loadSavedQueryValues(key, pageData.query); } return pageData; @@ -38,7 +40,7 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB function getSavedQueryKey(context) { if (!context.savedQueryKey) { - context.savedQueryKey = libraryBrowser.default.getSavedQueryKey('moviecollections'); + context.savedQueryKey = libraryBrowser.getSavedQueryKey('moviecollections'); } return context.savedQueryKey; @@ -88,7 +90,7 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB window.scrollTo(0, 0); var html; - var pagingHtml = libraryBrowser.default.getQueryPagingHtml({ + var pagingHtml = libraryBrowser.getQueryPagingHtml({ startIndex: query.StartIndex, limit: query.Limit, totalRecordCount: result.TotalRecordCount, @@ -182,7 +184,7 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB var itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); - libraryBrowser.default.saveQueryValues(getSavedQueryKey(page), query); + libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); loading.hide(); isLoading = false; @@ -202,7 +204,7 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB function initPage(tabContent) { tabContent.querySelector('.btnSort').addEventListener('click', function (e) { - libraryBrowser.default.showSortMenu({ + libraryBrowser.showSortMenu({ items: [{ name: globalize.translate('OptionNameSort'), id: 'SortName' @@ -229,12 +231,12 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB }); var btnSelectView = tabContent.querySelector('.btnSelectView'); btnSelectView.addEventListener('click', function (e) { - libraryBrowser.default.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard,Thumb,ThumbCard'.split(',')); + libraryBrowser.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.default.saveViewSetting(getSavedQueryKey(tabContent), viewStyle); + libraryBrowser.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 e2281ca657..69450989e8 100644 --- a/src/controllers/movies/moviegenres.js +++ b/src/controllers/movies/moviegenres.js @@ -1,6 +1,8 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader', 'apphost', 'globalize', 'appRouter', 'dom', 'emby-button'], function (layoutManager, loading, libraryBrowser, cardBuilder, lazyLoader, appHost, globalize, appRouter, dom) { 'use strict'; + libraryBrowser = libraryBrowser.default || libraryBrowser; + return function (view, params, tabContent) { function getPageData() { var key = getSavedQueryKey(); @@ -18,7 +20,7 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader view: 'Poster' }; pageData.query.ParentId = params.topParentId; - libraryBrowser.default.loadSavedQueryValues(key, pageData.query); + libraryBrowser.loadSavedQueryValues(key, pageData.query); } return pageData; @@ -29,7 +31,7 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader } function getSavedQueryKey() { - return libraryBrowser.default.getSavedQueryKey('moviegenres'); + return libraryBrowser.getSavedQueryKey('moviegenres'); } function getPromise() { @@ -174,7 +176,7 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader elem.innerHTML = html; lazyLoader.lazyChildren(elem, fillItemsContainer); - libraryBrowser.default.saveQueryValues(getSavedQueryKey(), query); + libraryBrowser.saveQueryValues(getSavedQueryKey(), query); loading.hide(); }); } @@ -197,7 +199,7 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader self.setCurrentViewStyle = function (viewStyle) { getPageData().view = viewStyle; - libraryBrowser.default.saveViewSetting(getSavedQueryKey(), viewStyle); + libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle); fullyReload(); }; diff --git a/src/controllers/movies/movies.js b/src/controllers/movies/movies.js index 32775e2c13..82b162e2ad 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.default.getQueryPagingHtml({ + var pagingHtml = libraryBrowser.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.default.showSortMenu({ + libraryBrowser.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.default.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'Banner,List,Poster,PosterCard,Thumb,ThumbCard'.split(',')); + libraryBrowser.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 e52f3e950c..84d7c538ee 100644 --- a/src/controllers/movies/movietrailers.js +++ b/src/controllers/movies/movietrailers.js @@ -1,6 +1,8 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'cardBuilder', 'userSettings', 'globalize', 'emby-itemscontainer'], function (layoutManager, loading, events, libraryBrowser, imageLoader, AlphaPicker, listView, cardBuilder, userSettings, globalize) { 'use strict'; + libraryBrowser = libraryBrowser.default || libraryBrowser; + return function (view, params, tabContent) { function getPageData(context) { var key = getSavedQueryKey(context); @@ -18,14 +20,14 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', ' EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', StartIndex: 0 }, - view: libraryBrowser.default.getSavedView(key) || 'Poster' + view: libraryBrowser.getSavedView(key) || 'Poster' }; if (userSettings.libraryPageSize() > 0) { pageData.query['Limit'] = userSettings.libraryPageSize(); } - libraryBrowser.default.loadSavedQueryValues(key, pageData.query); + libraryBrowser.loadSavedQueryValues(key, pageData.query); } return pageData; @@ -37,7 +39,7 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', ' function getSavedQueryKey(context) { if (!context.savedQueryKey) { - context.savedQueryKey = libraryBrowser.default.getSavedQueryKey('trailers'); + context.savedQueryKey = libraryBrowser.getSavedQueryKey('trailers'); } return context.savedQueryKey; @@ -72,7 +74,7 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', ' window.scrollTo(0, 0); updateFilterControls(tabContent); - var pagingHtml = libraryBrowser.default.getQueryPagingHtml({ + var pagingHtml = libraryBrowser.getQueryPagingHtml({ startIndex: query.StartIndex, limit: query.Limit, totalRecordCount: result.TotalRecordCount, @@ -169,7 +171,7 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', ' var itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); - libraryBrowser.default.saveQueryValues(getSavedQueryKey(tabContent), query); + libraryBrowser.saveQueryValues(getSavedQueryKey(tabContent), query); loading.hide(); isLoading = false; }); @@ -226,7 +228,7 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', ' self.showFilterMenu(); }); tabContent.querySelector('.btnSort').addEventListener('click', function (e) { - libraryBrowser.default.showSortMenu({ + libraryBrowser.showSortMenu({ items: [{ name: globalize.translate('OptionNameSort'), id: 'SortName' diff --git a/src/controllers/music/musicalbums.js b/src/controllers/music/musicalbums.js index b41af824ee..9b4fcde327 100644 --- a/src/controllers/music/musicalbums.js +++ b/src/controllers/music/musicalbums.js @@ -1,6 +1,8 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'cardBuilder', 'userSettings', 'globalize', 'emby-itemscontainer'], function (layoutManager, playbackManager, loading, events, libraryBrowser, imageLoader, AlphaPicker, listView, cardBuilder, userSettings, globalize) { 'use strict'; + libraryBrowser = libraryBrowser.default || libraryBrowser; + return function (view, params, tabContent) { function playAll() { ApiClient.getItem(ApiClient.getCurrentUserId(), params.topParentId).then(function (item) { @@ -32,7 +34,7 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', StartIndex: 0 }, - view: libraryBrowser.default.getSavedView(key) || 'Poster' + view: libraryBrowser.getSavedView(key) || 'Poster' }; if (userSettings.libraryPageSize() > 0) { @@ -40,7 +42,7 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser } pageData.query.ParentId = params.topParentId; - libraryBrowser.default.loadSavedQueryValues(key, pageData.query); + libraryBrowser.loadSavedQueryValues(key, pageData.query); } return pageData; @@ -52,7 +54,7 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser function getSavedQueryKey() { if (!savedQueryKey) { - savedQueryKey = libraryBrowser.default.getSavedQueryKey('musicalbums'); + savedQueryKey = libraryBrowser.getSavedQueryKey('musicalbums'); } return savedQueryKey; @@ -103,7 +105,7 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser window.scrollTo(0, 0); updateFilterControls(page); var html; - var pagingHtml = libraryBrowser.default.getQueryPagingHtml({ + var pagingHtml = libraryBrowser.getQueryPagingHtml({ startIndex: query.StartIndex, limit: query.Limit, totalRecordCount: result.TotalRecordCount, @@ -165,7 +167,7 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser var itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); - libraryBrowser.default.saveQueryValues(getSavedQueryKey(), query); + libraryBrowser.saveQueryValues(getSavedQueryKey(), query); loading.hide(); isLoading = false; @@ -228,7 +230,7 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser self.showFilterMenu(); }); tabContent.querySelector('.btnSort').addEventListener('click', function (e) { - libraryBrowser.default.showSortMenu({ + libraryBrowser.showSortMenu({ items: [{ name: globalize.translate('OptionNameSort'), id: 'SortName' @@ -261,12 +263,12 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser }); var btnSelectView = tabContent.querySelector('.btnSelectView'); btnSelectView.addEventListener('click', function (e) { - libraryBrowser.default.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(',')); + libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(',')); }); btnSelectView.addEventListener('layoutchange', function (e) { var viewStyle = e.detail.viewStyle; getPageData().view = viewStyle; - libraryBrowser.default.saveViewSetting(getSavedQueryKey(), viewStyle); + libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle); getQuery().StartIndex = 0; onViewStyleChange(); reloadItems(tabContent); diff --git a/src/controllers/music/musicartists.js b/src/controllers/music/musicartists.js index 73677c4407..3e86def538 100644 --- a/src/controllers/music/musicartists.js +++ b/src/controllers/music/musicartists.js @@ -1,6 +1,8 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'cardBuilder', 'apphost', 'userSettings', 'emby-itemscontainer'], function (layoutManager, loading, events, libraryBrowser, imageLoader, AlphaPicker, listView, cardBuilder, appHost, userSettings) { 'use strict'; + libraryBrowser = libraryBrowser.default || libraryBrowser; + return function (view, params, tabContent) { function getPageData(context) { var key = getSavedQueryKey(context); @@ -23,10 +25,10 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', ' pageData = data[key] = { query: queryValues, - view: libraryBrowser.default.getSavedView(key) || 'Poster' + view: libraryBrowser.getSavedView(key) || 'Poster' }; pageData.query.ParentId = params.topParentId; - libraryBrowser.default.loadSavedQueryValues(key, pageData.query); + libraryBrowser.loadSavedQueryValues(key, pageData.query); } return pageData; @@ -38,7 +40,7 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', ' function getSavedQueryKey(context) { if (!context.savedQueryKey) { - context.savedQueryKey = libraryBrowser.default.getSavedQueryKey(self.mode); + context.savedQueryKey = libraryBrowser.getSavedQueryKey(self.mode); } return context.savedQueryKey; @@ -92,7 +94,7 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', ' window.scrollTo(0, 0); updateFilterControls(page); var html; - var pagingHtml = libraryBrowser.default.getQueryPagingHtml({ + var pagingHtml = libraryBrowser.getQueryPagingHtml({ startIndex: query.StartIndex, limit: query.Limit, totalRecordCount: result.TotalRecordCount, @@ -150,7 +152,7 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', ' var itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); - libraryBrowser.default.saveQueryValues(getSavedQueryKey(page), query); + libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); loading.hide(); isLoading = false; @@ -213,12 +215,12 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', ' }); var btnSelectView = tabContent.querySelector('.btnSelectView'); btnSelectView.addEventListener('click', function (e) { - libraryBrowser.default.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(',')); + libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(',')); }); btnSelectView.addEventListener('layoutchange', function (e) { var viewStyle = e.detail.viewStyle; getPageData(tabContent).view = viewStyle; - libraryBrowser.default.saveViewSetting(getSavedQueryKey(tabContent), viewStyle); + libraryBrowser.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 ac4a7349b3..948c4da7dd 100644 --- a/src/controllers/music/musicgenres.js +++ b/src/controllers/music/musicgenres.js @@ -1,6 +1,8 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], function (libraryBrowser, cardBuilder, appHost, imageLoader, loading) { 'use strict'; + libraryBrowser = libraryBrowser.default || libraryBrowser; + return function (view, params, tabContent) { function getPageData() { var key = getSavedQueryKey(); @@ -15,10 +17,10 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], f Fields: 'PrimaryImageAspectRatio,ItemCounts', StartIndex: 0 }, - view: libraryBrowser.default.getSavedView(key) || 'Poster' + view: libraryBrowser.getSavedView(key) || 'Poster' }; pageData.query.ParentId = params.topParentId; - libraryBrowser.default.loadSavedQueryValues(key, pageData.query); + libraryBrowser.loadSavedQueryValues(key, pageData.query); } return pageData; @@ -29,7 +31,7 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], f } function getSavedQueryKey() { - return libraryBrowser.default.getSavedQueryKey('genres'); + return libraryBrowser.getSavedQueryKey('genres'); } function getPromise() { @@ -85,7 +87,7 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], f var elem = context.querySelector('#items'); elem.innerHTML = html; imageLoader.lazyChildren(elem); - libraryBrowser.default.saveQueryValues(getSavedQueryKey(), query); + libraryBrowser.saveQueryValues(getSavedQueryKey(), query); loading.hide(); require(['autoFocuser'], function (autoFocuser) { @@ -112,7 +114,7 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], f self.setCurrentViewStyle = function (viewStyle) { getPageData().view = viewStyle; - libraryBrowser.default.saveViewSetting(getSavedQueryKey(), viewStyle); + libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle); fullyReload(); }; diff --git a/src/controllers/music/musicplaylists.js b/src/controllers/music/musicplaylists.js index b34ba294e9..19c08812f9 100644 --- a/src/controllers/music/musicplaylists.js +++ b/src/controllers/music/musicplaylists.js @@ -1,6 +1,8 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], function (libraryBrowser, cardBuilder, appHost, imageLoader, loading) { 'use strict'; + libraryBrowser = libraryBrowser.default || libraryBrowser; + return function (view, params, tabContent) { function getPageData() { var key = getSavedQueryKey(); @@ -16,10 +18,10 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], f Fields: 'PrimaryImageAspectRatio,SortName,CanDelete', StartIndex: 0 }, - view: libraryBrowser.default.getSavedView(key) || 'Poster' + view: libraryBrowser.getSavedView(key) || 'Poster' }; pageData.query.ParentId = params.topParentId; - libraryBrowser.default.loadSavedQueryValues(key, pageData.query); + libraryBrowser.loadSavedQueryValues(key, pageData.query); } return pageData; @@ -30,7 +32,7 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], f } function getSavedQueryKey() { - return libraryBrowser.default.getSavedQueryKey('genres'); + return libraryBrowser.getSavedQueryKey('genres'); } function getPromise() { @@ -56,7 +58,7 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], f var elem = context.querySelector('#items'); elem.innerHTML = html; imageLoader.lazyChildren(elem); - libraryBrowser.default.saveQueryValues(getSavedQueryKey(), query); + libraryBrowser.saveQueryValues(getSavedQueryKey(), query); loading.hide(); require(['autoFocuser'], function (autoFocuser) { diff --git a/src/controllers/music/songs.js b/src/controllers/music/songs.js index f90edb410b..74c5106860 100644 --- a/src/controllers/music/songs.js +++ b/src/controllers/music/songs.js @@ -1,6 +1,8 @@ define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'loading', 'userSettings', 'globalize', 'emby-itemscontainer'], function (events, libraryBrowser, imageLoader, listView, loading, userSettings, globalize) { 'use strict'; + libraryBrowser = libraryBrowser.default || libraryBrowser; + return function (view, params, tabContent) { function getPageData(context) { var key = getSavedQueryKey(context); @@ -25,7 +27,7 @@ define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'loading', 'userS } pageData.query.ParentId = params.topParentId; - libraryBrowser.default.loadSavedQueryValues(key, pageData.query); + libraryBrowser.loadSavedQueryValues(key, pageData.query); } return pageData; @@ -37,7 +39,7 @@ define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'loading', 'userS function getSavedQueryKey(context) { if (!context.savedQueryKey) { - context.savedQueryKey = libraryBrowser.default.getSavedQueryKey('songs'); + context.savedQueryKey = libraryBrowser.getSavedQueryKey('songs'); } return context.savedQueryKey; @@ -73,7 +75,7 @@ define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'loading', 'userS window.scrollTo(0, 0); var i; var length; - var pagingHtml = libraryBrowser.default.getQueryPagingHtml({ + var pagingHtml = libraryBrowser.getQueryPagingHtml({ startIndex: query.StartIndex, limit: query.Limit, totalRecordCount: result.TotalRecordCount, @@ -109,7 +111,7 @@ define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'loading', 'userS var itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); - libraryBrowser.default.saveQueryValues(getSavedQueryKey(page), query); + libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); loading.hide(); isLoading = false; @@ -147,7 +149,7 @@ define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'loading', 'userS self.showFilterMenu(); }); tabContent.querySelector('.btnSort').addEventListener('click', function (e) { - libraryBrowser.default.showSortMenu({ + libraryBrowser.showSortMenu({ items: [{ name: globalize.translate('OptionTrackName'), id: 'Name' From 562b54192f49e14a0850d5f3fb212fdae04a4316 Mon Sep 17 00:00:00 2001 From: Cameron Date: Tue, 28 Jul 2020 16:49:31 +0100 Subject: [PATCH 4/5] Update src/scripts/libraryBrowser.js Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> --- src/scripts/libraryBrowser.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/scripts/libraryBrowser.js b/src/scripts/libraryBrowser.js index f5bff3da62..568e73916a 100644 --- a/src/scripts/libraryBrowser.js +++ b/src/scripts/libraryBrowser.js @@ -200,7 +200,7 @@ export function showSortMenu (options) { }); } -export default { +const libraryBrowser = { getSavedQueryKey, loadSavedQueryValues, saveQueryValues, @@ -210,3 +210,7 @@ export default { getQueryPagingHtml, showSortMenu }; + +window.LibraryBrowser = libraryBrowser; + +export default libraryBrowser; From 4d5cf02c1facea22e6d6f61369d3825758543a3f Mon Sep 17 00:00:00 2001 From: Cameron Date: Tue, 28 Jul 2020 17:18:37 +0100 Subject: [PATCH 5/5] update missing --- src/controllers/movies/movies.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/controllers/movies/movies.js b/src/controllers/movies/movies.js index 82b162e2ad..f4c126c468 100644 --- a/src/controllers/movies/movies.js +++ b/src/controllers/movies/movies.js @@ -1,6 +1,8 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser', 'alphaPicker', 'listView', 'cardBuilder', 'globalize', 'emby-itemscontainer'], function (loading, layoutManager, userSettings, events, libraryBrowser, AlphaPicker, listView, cardBuilder, globalize) { 'use strict'; + libraryBrowser = libraryBrowser.default || libraryBrowser; + return function (view, params, tabContent, options) { function onViewStyleChange() { if (self.getCurrentViewStyle() == 'List') {