diff --git a/src/components/appRouter.js b/src/components/appRouter.js index b1267c5235..52bfac7617 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -535,13 +535,13 @@ class AppRouter { } if (item === 'list') { - let url = '#/list.html?serverId=' + options.serverId + '&type=' + options.itemTypes; + let urlForList = '#/list.html?serverId=' + options.serverId + '&type=' + options.itemTypes; if (options.isFavorite) { - url += '&IsFavorite=true'; + urlForList += '&IsFavorite=true'; } - return url; + return urlForList; } if (item === 'livetv') { diff --git a/src/components/backdrop/backdrop.js b/src/components/backdrop/backdrop.js index d1af617da1..027f727812 100644 --- a/src/components/backdrop/backdrop.js +++ b/src/components/backdrop/backdrop.js @@ -132,14 +132,14 @@ import './backdrop.scss'; } let hasInternalBackdrop; - function internalBackdrop(enabled) { - hasInternalBackdrop = enabled; + function internalBackdrop(isEnabled) { + hasInternalBackdrop = isEnabled; setBackgroundContainerBackgroundEnabled(); } let hasExternalBackdrop; - export function externalBackdrop(enabled) { - hasExternalBackdrop = enabled; + export function externalBackdrop(isEnabled) { + hasExternalBackdrop = isEnabled; setBackgroundContainerBackgroundEnabled(); } diff --git a/src/components/channelMapper/channelMapper.js b/src/components/channelMapper/channelMapper.js index 840f8bfd59..819fbfc3e6 100644 --- a/src/components/channelMapper/channelMapper.js +++ b/src/components/channelMapper/channelMapper.js @@ -105,8 +105,8 @@ export default class channelMapper { return html; } - function initEditor(dlg, options) { - getChannelMappingOptions(options.serverId, options.providerId).then(result => { + function initEditor(dlg, initOptions) { + getChannelMappingOptions(initOptions.serverId, initOptions.providerId).then(result => { currentMappingOptions = result; const channelsElement = dlg.querySelector('.channels'); channelsElement.innerHTML = result.TunerChannels.map(channel => { diff --git a/src/components/directorybrowser/directorybrowser.js b/src/components/directorybrowser/directorybrowser.js index 625523483d..2accc1520f 100644 --- a/src/components/directorybrowser/directorybrowser.js +++ b/src/components/directorybrowser/directorybrowser.js @@ -251,8 +251,8 @@ class DirectoryBrowser { } Promise.all([getSystemInfo(), getDefaultPath(options)]).then( responses => { - const systemInfo = responses[0]; - const initialPath = responses[1]; + const fetchedSystemInfo = responses[0]; + const fetchedInitialPath = responses[1]; const dlg = dialogHelper.createDialog({ size: 'small', removeOnClose: true, @@ -270,7 +270,7 @@ class DirectoryBrowser { html += escapeHtml(options.header || '') || globalize.translate('HeaderSelectPath'); html += ''; html += ''; - html += getEditorHtml(options, systemInfo); + html += getEditorHtml(options, fetchedSystemInfo); dlg.innerHTML = html; initEditor(dlg, options, fileOptions); dlg.addEventListener('close', onDialogClosed); @@ -279,13 +279,13 @@ class DirectoryBrowser { dialogHelper.close(dlg); }); this.currentDialog = dlg; - dlg.querySelector('#txtDirectoryPickerPath').value = initialPath; + dlg.querySelector('#txtDirectoryPickerPath').value = fetchedInitialPath; const txtNetworkPath = dlg.querySelector('#txtNetworkPath'); if (txtNetworkPath) { txtNetworkPath.value = options.networkSharePath || ''; } if (!options.pathReadOnly) { - refreshDirectoryBrowser(dlg, initialPath, fileOptions, true); + refreshDirectoryBrowser(dlg, fetchedInitialPath, fileOptions, true); } } ); diff --git a/src/components/guide/guide.js b/src/components/guide/guide.js index ca0bd4208f..14c973d511 100644 --- a/src/components/guide/guide.js +++ b/src/components/guide/guide.js @@ -429,7 +429,7 @@ function Guide(options) { return ''; } - function getChannelProgramsHtml(context, date, channel, programs, options, listInfo) { + function getChannelProgramsHtml(context, date, channel, programs, programOptions, listInfo) { let html = ''; const startMs = date.getTime(); @@ -542,21 +542,21 @@ function Guide(options) { html += '
' + escapeHtml(program.Name); let indicatorHtml = null; - if (program.IsLive && options.showLiveIndicator) { + if (program.IsLive && programOptions.showLiveIndicator) { indicatorHtml = '' + globalize.translate('Live') + ''; - } else if (program.IsPremiere && options.showPremiereIndicator) { + } else if (program.IsPremiere && programOptions.showPremiereIndicator) { indicatorHtml = '' + globalize.translate('Premiere') + ''; - } else if (program.IsSeries && !program.IsRepeat && options.showNewIndicator) { + } else if (program.IsSeries && !program.IsRepeat && programOptions.showNewIndicator) { indicatorHtml = '' + globalize.translate('New') + ''; - } else if (program.IsSeries && program.IsRepeat && options.showRepeatIndicator) { + } else if (program.IsSeries && program.IsRepeat && programOptions.showRepeatIndicator) { indicatorHtml = '' + globalize.translate('Repeat') + ''; } html += indicatorHtml || ''; - if ((program.EpisodeTitle && options.showEpisodeTitle)) { + if ((program.EpisodeTitle && programOptions.showEpisodeTitle)) { html += '
'; - if (program.EpisodeTitle && options.showEpisodeTitle) { + if (program.EpisodeTitle && programOptions.showEpisodeTitle) { html += '' + escapeHtml(program.EpisodeTitle) + ''; } html += '
'; @@ -564,7 +564,7 @@ function Guide(options) { html += '
'; - if (program.IsHD && options.showHdIcon) { + if (program.IsHD && programOptions.showHdIcon) { if (layoutManager.tv) { html += '
HD
'; } else { @@ -633,7 +633,7 @@ function Guide(options) { imageLoader.lazyChildren(channelList); } - function renderPrograms(context, date, channels, programs, options) { + function renderPrograms(context, date, channels, programs, programOptions) { const listInfo = { startIndex: 0 }; @@ -641,7 +641,7 @@ function Guide(options) { const html = []; for (const channel of channels) { - html.push(getChannelProgramsHtml(context, date, channel, programs, options, listInfo)); + html.push(getChannelProgramsHtml(context, date, channel, programs, programOptions, listInfo)); } programGrid.innerHTML = html.join(''); diff --git a/src/components/imageeditor/imageeditor.js b/src/components/imageeditor/imageeditor.js index 5b37a786ce..039770a217 100644 --- a/src/components/imageeditor/imageeditor.js +++ b/src/components/imageeditor/imageeditor.js @@ -39,8 +39,8 @@ import template from './imageeditor.template.html'; reloadItem(page, item, apiClient, focusContext); } else { apiClient = ServerConnections.getApiClient(currentItem.ServerId); - apiClient.getItem(apiClient.getCurrentUserId(), currentItem.Id).then(function (item) { - reloadItem(page, item, apiClient, focusContext); + apiClient.getItem(apiClient.getCurrentUserId(), currentItem.Id).then(function (itemToReload) { + reloadItem(page, itemToReload, apiClient, focusContext); }); } } diff --git a/src/components/maintabsmanager.js b/src/components/maintabsmanager.js index 807c604c27..141c44fa5a 100644 --- a/src/components/maintabsmanager.js +++ b/src/components/maintabsmanager.js @@ -47,7 +47,7 @@ import '../elements/emby-button/emby-button'; return true; } - function configureSwipeTabs(view, tabsElem) { + function configureSwipeTabs(view, currentElement) { if (!browser.touch) { return; } @@ -55,13 +55,13 @@ import '../elements/emby-button/emby-button'; // implement without hammer const onSwipeLeft = function (e, target) { if (allowSwipe(target) && view.contains(target)) { - tabsElem.selectNext(); + currentElement.selectNext(); } }; const onSwipeRight = function (e, target) { if (allowSwipe(target) && view.contains(target)) { - tabsElem.selectPrevious(); + currentElement.selectPrevious(); } }; diff --git a/src/components/playback/brightnessosd.js b/src/components/playback/brightnessosd.js index 6b37d31f26..37822a0fec 100644 --- a/src/components/playback/brightnessosd.js +++ b/src/components/playback/brightnessosd.js @@ -98,9 +98,9 @@ function hideOsd() { } } -function setIcon(iconElement, icon) { - iconElement.classList.remove('brightness_high', 'brightness_medium', 'brightness_low'); - iconElement.classList.add(icon); +function setIcon(iconHtmlElement, icon) { + iconHtmlElement.classList.remove('brightness_high', 'brightness_medium', 'brightness_low'); + iconHtmlElement.classList.add(icon); } function updateElementsFromPlayer(brightness) { diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index e2780acb95..87b194b28a 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -1764,9 +1764,9 @@ class PlaybackManager { MediaTypes: 'Photo,Video', Limit: UNLIMITED_ITEMS }).then(function (result) { - const items = result.Items; + const playbackItems = result.Items; - let index = items.map(function (i) { + let index = playbackItems.map(function (i) { return i.Id; }).indexOf(firstItem.Id); diff --git a/src/components/shortcuts.js b/src/components/shortcuts.js index cd1f957d29..997750f7a1 100644 --- a/src/components/shortcuts.js +++ b/src/components/shortcuts.js @@ -251,8 +251,8 @@ import toast from './toast/toast'; } else if (action === 'playmenu') { showPlayMenu(card, target); } else if (action === 'edit') { - getItem(target).then(item => { - editItem(item, serverId); + getItem(target).then(itemToEdit => { + editItem(itemToEdit, serverId); }); } else if (action === 'playtrailer') { getItem(target).then(playTrailer); @@ -293,21 +293,21 @@ import toast from './toast/toast'; const apiClient = ServerConnections.getApiClient(serverId); return new Promise((resolve, reject) => { - const serverId = apiClient.serverInfo().Id; + const myServerId = apiClient.serverInfo().Id; if (item.Type === 'Timer') { if (item.ProgramId) { import('./recordingcreator/recordingcreator').then(({default: recordingCreator}) => { - recordingCreator.show(item.ProgramId, serverId).then(resolve, reject); + recordingCreator.show(item.ProgramId, myServerId).then(resolve, reject); }); } else { import('./recordingcreator/recordingeditor').then(({default: recordingEditor}) => { - recordingEditor.show(item.Id, serverId).then(resolve, reject); + recordingEditor.show(item.Id, myServerId).then(resolve, reject); }); } } else { import('./metadataEditor/metadataEditor').then(({default: metadataEditor}) => { - metadataEditor.show(item.Id, serverId).then(resolve, reject); + metadataEditor.show(item.Id, myServerId).then(resolve, reject); }); } }); diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index 1112a57c32..5ec641b683 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -141,11 +141,11 @@ export default function (options) { * Creates the HTML markup for the dialog and the OSD. * @param {Object} options - Options used to create the dialog and slideshow. */ - function createElements(options) { - currentOptions = options; + function createElements(slideshowOptions) { + currentOptions = slideshowOptions; dialog = dialogHelper.createDialog({ - exitAnimationDuration: options.interactive ? 400 : 800, + exitAnimationDuration: slideshowOptions.interactive ? 400 : 800, size: 'fullscreen', autoFocus: false, scrollY: false, @@ -159,7 +159,7 @@ export default function (options) { html += '
'; - if (options.interactive && !layoutManager.tv) { + if (slideshowOptions.interactive && !layoutManager.tv) { const actionButtonsOnTop = layoutManager.mobile; html += getIcon('keyboard_arrow_left', 'btnSlideshowPrevious slideshowButton hide-mouse-idle-tv', false); @@ -169,7 +169,7 @@ export default function (options) { if (actionButtonsOnTop) { html += getIcon('play_arrow', 'btnSlideshowPause slideshowButton', true); - if (appHost.supports('filedownload') && options.user && options.user.Policy.EnableContentDownloading) { + if (appHost.supports('filedownload') && slideshowOptions.user && slideshowOptions.user.Policy.EnableContentDownloading) { html += getIcon('file_download', 'btnDownload slideshowButton', true); } if (appHost.supports('sharing')) { @@ -187,7 +187,7 @@ export default function (options) { html += '
'; html += getIcon('play_arrow', 'btnSlideshowPause slideshowButton', true, true); - if (appHost.supports('filedownload') && options.user && options.user.Policy.EnableContentDownloading) { + if (appHost.supports('filedownload') && slideshowOptions.user && slideshowOptions.user.Policy.EnableContentDownloading) { html += getIcon('file_download', 'btnDownload slideshowButton', true); } if (appHost.supports('sharing')) { @@ -206,7 +206,7 @@ export default function (options) { dialog.innerHTML = html; - if (options.interactive && !layoutManager.tv) { + if (slideshowOptions.interactive && !layoutManager.tv) { dialog.querySelector('.btnSlideshowExit').addEventListener('click', function () { dialogHelper.close(dialog); }); @@ -331,7 +331,7 @@ export default function (options) { * @param {HTMLElement} dialog - Element containing the dialog. * @param {Object} options - Options used to initialize the Swiper instance. */ - function loadSwiper(dialog, options) { + function loadSwiper(dialogElement, swiperOptions) { let slides; if (currentOptions.slides) { slides = currentOptions.slides; @@ -344,7 +344,7 @@ export default function (options) { // eslint-disable-next-line import/no-unresolved import('swiper/bundle').then(({ Swiper }) => { - swiperInstance = new Swiper(dialog.querySelector('.slideshowSwiperContainer'), { + swiperInstance = new Swiper(dialogElement.querySelector('.slideshowSwiperContainer'), { direction: 'horizontal', // Loop is disabled due to the virtual slides option not supporting it. loop: false, @@ -352,14 +352,14 @@ export default function (options) { minRatio: 1, toggle: true }, - autoplay: !options.interactive || !!options.autoplay, + autoplay: !swiperOptions.interactive || !!swiperOptions.autoplay, keyboard: { enabled: true }, preloadImages: true, slidesPerView: 1, slidesPerColumn: 1, - initialSlide: options.startIndex || 0, + initialSlide: swiperOptions.startIndex || 0, speed: 240, navigation: { nextEl: '.btnSlideshowNext', diff --git a/src/components/tvproviders/schedulesdirect.js b/src/components/tvproviders/schedulesdirect.js index 285f083ef2..d34fa40932 100644 --- a/src/components/tvproviders/schedulesdirect.js +++ b/src/components/tvproviders/schedulesdirect.js @@ -12,6 +12,43 @@ import './style.scss'; import Dashboard from '../../utils/dashboard'; import Events from '../../utils/events.ts'; +function getTunerName(providerId) { + switch (providerId.toLowerCase()) { + case 'm3u': + return 'M3U Playlist'; + case 'hdhomerun': + return 'HDHomerun'; + case 'satip': + return 'DVB'; + default: + return 'Unknown'; + } +} + +function refreshTunerDevices(page, providerInfo, devices) { + let html = ''; + + for (let i = 0, length = devices.length; i < length; i++) { + const device = devices[i]; + html += '
'; + const enabledTuners = providerInfo.EnabledTuners || []; + const isChecked = providerInfo.EnableAllTuners || enabledTuners.indexOf(device.Id) !== -1; + const checkedAttribute = isChecked ? ' checked' : ''; + html += ''; + html += '
'; + html += '
'; + html += device.FriendlyName || getTunerName(device.Type); + html += '
'; + html += '
'; + html += device.Url; + html += '
'; + html += '
'; + html += '
'; + } + + page.querySelector('.tunerList').innerHTML = html; +} + export default function (page, providerId, options) { function reload() { loading.show(); @@ -202,43 +239,6 @@ export default function (page, providerId, options) { }); } - function getTunerName(providerId) { - switch (providerId.toLowerCase()) { - case 'm3u': - return 'M3U Playlist'; - case 'hdhomerun': - return 'HDHomerun'; - case 'satip': - return 'DVB'; - default: - return 'Unknown'; - } - } - - function refreshTunerDevices(page, providerInfo, devices) { - let html = ''; - - for (let i = 0, length = devices.length; i < length; i++) { - const device = devices[i]; - html += '
'; - const enabledTuners = providerInfo.EnabledTuners || []; - const isChecked = providerInfo.EnableAllTuners || enabledTuners.indexOf(device.Id) !== -1; - const checkedAttribute = isChecked ? ' checked' : ''; - html += ''; - html += '
'; - html += '
'; - html += device.FriendlyName || getTunerName(device.Type); - html += '
'; - html += '
'; - html += device.Url; - html += '
'; - html += '
'; - html += '
'; - } - - page.querySelector('.tunerList').innerHTML = html; - } - let listingsId; const self = this; diff --git a/src/components/tvproviders/xmltv.js b/src/components/tvproviders/xmltv.js index 4cc5f871fc..dc5f896447 100644 --- a/src/components/tvproviders/xmltv.js +++ b/src/components/tvproviders/xmltv.js @@ -8,6 +8,62 @@ import '../../elements/emby-button/paper-icon-button-light'; import Dashboard from '../../utils/dashboard'; import Events from '../../utils/events.ts'; +function getTunerName(providerId) { + switch (providerId.toLowerCase()) { + case 'm3u': + return 'M3U Playlist'; + case 'hdhomerun': + return 'HDHomerun'; + case 'satip': + return 'DVB'; + default: + return 'Unknown'; + } +} + +function refreshTunerDevices(page, providerInfo, devices) { + let html = ''; + + for (let i = 0, length = devices.length; i < length; i++) { + const device = devices[i]; + html += '
'; + const enabledTuners = providerInfo.EnabledTuners || []; + const isChecked = providerInfo.EnableAllTuners || enabledTuners.indexOf(device.Id) !== -1; + const checkedAttribute = isChecked ? ' checked' : ''; + html += ''; + html += '
'; + html += '
'; + html += device.FriendlyName || getTunerName(device.Type); + html += '
'; + html += '
'; + html += device.Url; + html += '
'; + html += '
'; + html += '
'; + } + + page.querySelector('.tunerList').innerHTML = html; +} + +function onSelectPathClick(e) { + const page = $(e.target).parents('.xmltvForm')[0]; + + import('../directorybrowser/directorybrowser').then(({default: DirectoryBrowser}) => { + const picker = new DirectoryBrowser(); + picker.show({ + includeFiles: true, + callback: function (path) { + if (path) { + const txtPath = page.querySelector('.txtPath'); + txtPath.value = path; + txtPath.focus(); + } + picker.close(); + } + }); + }); +} + export default function (page, providerId, options) { function getListingProvider(config, id) { if (config && id) { @@ -105,62 +161,6 @@ export default function (page, providerId, options) { }); } - function getTunerName(providerId) { - switch (providerId.toLowerCase()) { - case 'm3u': - return 'M3U Playlist'; - case 'hdhomerun': - return 'HDHomerun'; - case 'satip': - return 'DVB'; - default: - return 'Unknown'; - } - } - - function refreshTunerDevices(page, providerInfo, devices) { - let html = ''; - - for (let i = 0, length = devices.length; i < length; i++) { - const device = devices[i]; - html += '
'; - const enabledTuners = providerInfo.EnabledTuners || []; - const isChecked = providerInfo.EnableAllTuners || enabledTuners.indexOf(device.Id) !== -1; - const checkedAttribute = isChecked ? ' checked' : ''; - html += ''; - html += '
'; - html += '
'; - html += device.FriendlyName || getTunerName(device.Type); - html += '
'; - html += '
'; - html += device.Url; - html += '
'; - html += '
'; - html += '
'; - } - - page.querySelector('.tunerList').innerHTML = html; - } - - function onSelectPathClick(e) { - const page = $(e.target).parents('.xmltvForm')[0]; - - import('../directorybrowser/directorybrowser').then(({default: DirectoryBrowser}) => { - const picker = new DirectoryBrowser(); - picker.show({ - includeFiles: true, - callback: function (path) { - if (path) { - const txtPath = page.querySelector('.txtPath'); - txtPath.value = path; - txtPath.focus(); - } - picker.close(); - } - }); - }); - } - const self = this; self.submit = function () { diff --git a/src/controllers/dashboard/encodingsettings.js b/src/controllers/dashboard/encodingsettings.js index 4a67eaa22a..044fb1eb3d 100644 --- a/src/controllers/dashboard/encodingsettings.js +++ b/src/controllers/dashboard/encodingsettings.js @@ -289,8 +289,8 @@ import alert from '../../components/alert'; libraryMenu.setTabs('playback', 0, getTabs); const page = this; ApiClient.getNamedConfiguration('encoding').then(function (config) { - ApiClient.getSystemInfo().then(function (systemInfo) { - loadPage(page, config, systemInfo); + ApiClient.getSystemInfo().then(function (fetchedSystemInfo) { + loadPage(page, config, fetchedSystemInfo); }); }); }); diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 6e238a7045..a1bcebd3aa 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -770,7 +770,7 @@ function renderLinks(page, item) { } } -function renderDetailImage(elem, item, imageLoader) { +function renderDetailImage(elem, item, loader) { const itemArray = []; itemArray.push(item); const cardHtml = cardBuilder.getCardsHtml(itemArray, { @@ -787,7 +787,7 @@ function renderDetailImage(elem, item, imageLoader) { }); elem.innerHTML = cardHtml; - imageLoader.lazyChildren(elem); + loader.lazyChildren(elem); // Avoid breaking the design by preventing focus of the poster using the keyboard. elem.querySelector('a, button').tabIndex = -1; @@ -1881,28 +1881,28 @@ export default function (view, params) { return params.serverId ? ServerConnections.getApiClient(params.serverId) : ApiClient; } - function reload(instance, page, params) { + function reload(instance, page, pageParams) { loading.show(); const apiClient = getApiClient(); - Promise.all([getPromise(apiClient, params), apiClient.getCurrentUser()]).then(([item, user]) => { + Promise.all([getPromise(apiClient, pageParams), apiClient.getCurrentUser()]).then(([item, user]) => { currentItem = item; - reloadFromItem(instance, page, params, item, user); + reloadFromItem(instance, page, pageParams, item, user); }).catch((error) => { console.error('failed to get item or current user: ', error); }); } - function splitVersions(instance, page, apiClient, params) { + function splitVersions(instance, page, apiClient, pageParams) { confirm('Are you sure you wish to split the media sources into separate items?', 'Split Media Apart').then(function () { loading.show(); apiClient.ajax({ type: 'DELETE', - url: apiClient.getUrl('Videos/' + params.id + '/AlternateSources') + url: apiClient.getUrl('Videos/' + pageParams.id + '/AlternateSources') }).then(function () { loading.hide(); - reload(instance, page, params); + reload(instance, page, pageParams); }); }); } diff --git a/src/controllers/movies/moviecollections.js b/src/controllers/movies/moviecollections.js index 43f96be17c..9c077e6bee 100644 --- a/src/controllers/movies/moviecollections.js +++ b/src/controllers/movies/moviecollections.js @@ -206,8 +206,8 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; return getPageData(tabContent).view; }; - const initPage = (tabContent) => { - tabContent.querySelector('.btnSort').addEventListener('click', function (e) { + const initPage = (tabElement) => { + tabElement.querySelector('.btnSort').addEventListener('click', function (e) { libraryBrowser.showSortMenu({ items: [{ name: globalize.translate('Name'), @@ -226,26 +226,26 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; id: 'PremiereDate,SortName' }], callback: function () { - getQuery(tabContent).StartIndex = 0; - reloadItems(tabContent); + getQuery(tabElement).StartIndex = 0; + reloadItems(tabElement); }, - query: getQuery(tabContent), + query: getQuery(tabElement), button: e.target }); }); - const btnSelectView = tabContent.querySelector('.btnSelectView'); + const btnSelectView = tabElement.querySelector('.btnSelectView'); btnSelectView.addEventListener('click', (e) => { libraryBrowser.showLayoutMenu(e.target, this.getCurrentViewStyle(), 'List,Poster,PosterCard,Thumb,ThumbCard'.split(',')); }); btnSelectView.addEventListener('layoutchange', function (e) { const viewStyle = e.detail.viewStyle; - getPageData(tabContent).view = viewStyle; - libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle); - getQuery(tabContent).StartIndex = 0; + getPageData(tabElement).view = viewStyle; + libraryBrowser.saveViewSetting(getSavedQueryKey(tabElement), viewStyle); + getQuery(tabElement).StartIndex = 0; onViewStyleChange(); - reloadItems(tabContent); + reloadItems(tabElement); }); - tabContent.querySelector('.btnNewCollection').addEventListener('click', () => { + tabElement.querySelector('.btnNewCollection').addEventListener('click', () => { import('../../components/collectionEditor/collectionEditor').then(({default: collectionEditor}) => { const serverId = ApiClient.serverInfo().Id; new collectionEditor({ diff --git a/src/controllers/movies/movies.js b/src/controllers/movies/movies.js index bf566dc45d..89e086ce7e 100644 --- a/src/controllers/movies/movies.js +++ b/src/controllers/movies/movies.js @@ -166,11 +166,11 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; return html; }; - const initPage = (tabContent) => { + const initPage = (tabElement) => { itemsContainer.fetchData = fetchData; itemsContainer.getItemsHtml = getItemsHtml; itemsContainer.afterRefresh = afterRefresh; - const alphaPickerElement = tabContent.querySelector('.alphaPicker'); + const alphaPickerElement = tabElement.querySelector('.alphaPicker'); if (alphaPickerElement) { alphaPickerElement.addEventListener('alphavaluechanged', function (e) { @@ -190,19 +190,19 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; valueChangeEvent: 'click' }); - tabContent.querySelector('.alphaPicker').classList.add('alphabetPicker-right'); + tabElement.querySelector('.alphaPicker').classList.add('alphabetPicker-right'); alphaPickerElement.classList.add('alphaPicker-fixed-right'); itemsContainer.classList.add('padded-right-withalphapicker'); } - const btnFilter = tabContent.querySelector('.btnFilter'); + const btnFilter = tabElement.querySelector('.btnFilter'); if (btnFilter) { btnFilter.addEventListener('click', () => { this.showFilterMenu(); }); } - const btnSort = tabContent.querySelector('.btnSort'); + const btnSort = tabElement.querySelector('.btnSort'); if (btnSort) { btnSort.addEventListener('click', function (e) { @@ -248,7 +248,7 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; }); }); } - const btnSelectView = tabContent.querySelector('.btnSelectView'); + const btnSelectView = tabElement.querySelector('.btnSelectView'); btnSelectView.addEventListener('click', (e) => { libraryBrowser.showLayoutMenu(e.target, this.getCurrentViewStyle(), 'Banner,List,Poster,PosterCard,Thumb,ThumbCard'.split(',')); }); @@ -260,7 +260,7 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; itemsContainer.refreshItems(); }); - tabContent.querySelector('.btnShuffle').addEventListener('click', shuffle); + tabElement.querySelector('.btnShuffle').addEventListener('click', shuffle); }; let itemsContainer = tabContent.querySelector('.itemsContainer'); diff --git a/src/controllers/movies/movietrailers.js b/src/controllers/movies/movietrailers.js index f6b93b44c6..2e55e6eea8 100644 --- a/src/controllers/movies/movietrailers.js +++ b/src/controllers/movies/movietrailers.js @@ -206,12 +206,12 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; return getPageData(tabContent).view; }; - const initPage = (tabContent) => { - const alphaPickerElement = tabContent.querySelector('.alphaPicker'); - const itemsContainer = tabContent.querySelector('.itemsContainer'); + const initPage = (tabElement) => { + const alphaPickerElement = tabElement.querySelector('.alphaPicker'); + const itemsContainer = tabElement.querySelector('.itemsContainer'); alphaPickerElement.addEventListener('alphavaluechanged', function (e) { const newValue = e.detail.value; - const query = getQuery(tabContent); + const query = getQuery(tabElement); if (newValue === '#') { query.NameLessThan = 'A'; delete query.NameStartsWith; @@ -227,14 +227,14 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; valueChangeEvent: 'click' }); - tabContent.querySelector('.alphaPicker').classList.add('alphabetPicker-right'); + tabElement.querySelector('.alphaPicker').classList.add('alphabetPicker-right'); alphaPickerElement.classList.add('alphaPicker-fixed-right'); itemsContainer.classList.add('padded-right-withalphapicker'); - tabContent.querySelector('.btnFilter').addEventListener('click', () => { + tabElement.querySelector('.btnFilter').addEventListener('click', () => { this.showFilterMenu(); }); - tabContent.querySelector('.btnSort').addEventListener('click', function (e) { + tabElement.querySelector('.btnSort').addEventListener('click', function (e) { libraryBrowser.showSortMenu({ items: [{ name: globalize.translate('Name'), @@ -259,10 +259,10 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; id: 'PremiereDate,SortName' }], callback: function () { - getQuery(tabContent).StartIndex = 0; + getQuery(tabElement).StartIndex = 0; reloadItems(); }, - query: getQuery(tabContent), + query: getQuery(tabElement), button: e.target }); }); diff --git a/src/controllers/music/musicalbums.js b/src/controllers/music/musicalbums.js index b00c7db652..7b2cf65b42 100644 --- a/src/controllers/music/musicalbums.js +++ b/src/controllers/music/musicalbums.js @@ -210,9 +210,9 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; return getPageData().view; }; - const initPage = (tabContent) => { - const alphaPickerElement = tabContent.querySelector('.alphaPicker'); - const itemsContainer = tabContent.querySelector('.itemsContainer'); + const initPage = (tabElement) => { + const alphaPickerElement = tabElement.querySelector('.alphaPicker'); + const itemsContainer = tabElement.querySelector('.itemsContainer'); alphaPickerElement.addEventListener('alphavaluechanged', function (e) { const newValue = e.detail.value; @@ -233,15 +233,15 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; valueChangeEvent: 'click' }); - tabContent.querySelector('.alphaPicker').classList.add('alphabetPicker-right'); + tabElement.querySelector('.alphaPicker').classList.add('alphabetPicker-right'); alphaPickerElement.classList.add('alphaPicker-fixed-right'); itemsContainer.classList.add('padded-right-withalphapicker'); - tabContent.querySelector('.btnFilter').addEventListener('click', () => { + tabElement.querySelector('.btnFilter').addEventListener('click', () => { this.showFilterMenu(); }); - tabContent.querySelector('.btnSort').addEventListener('click', (e) => { + tabElement.querySelector('.btnSort').addEventListener('click', (e) => { libraryBrowser.showSortMenu({ items: [{ name: globalize.translate('Name'), @@ -274,7 +274,7 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; }); }); - const btnSelectView = tabContent.querySelector('.btnSelectView'); + const btnSelectView = tabElement.querySelector('.btnSelectView'); btnSelectView.addEventListener('click', (e) => { libraryBrowser.showLayoutMenu(e.target, this.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(',')); }); @@ -288,8 +288,8 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; reloadItems(); }); - tabContent.querySelector('.btnPlayAll').addEventListener('click', playAll); - tabContent.querySelector('.btnShuffle').addEventListener('click', shuffle); + tabElement.querySelector('.btnPlayAll').addEventListener('click', playAll); + tabElement.querySelector('.btnShuffle').addEventListener('click', shuffle); }; initPage(tabContent); diff --git a/src/controllers/music/musicartists.js b/src/controllers/music/musicartists.js index 4283f62a7f..b05ddd31fa 100644 --- a/src/controllers/music/musicartists.js +++ b/src/controllers/music/musicartists.js @@ -190,13 +190,13 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; return getPageData(tabContent).view; }; - const initPage = (tabContent) => { - const alphaPickerElement = tabContent.querySelector('.alphaPicker'); - const itemsContainer = tabContent.querySelector('.itemsContainer'); + const initPage = (tabElement) => { + const alphaPickerElement = tabElement.querySelector('.alphaPicker'); + const itemsContainer = tabElement.querySelector('.itemsContainer'); alphaPickerElement.addEventListener('alphavaluechanged', function (e) { const newValue = e.detail.value; - const query = getQuery(tabContent); + const query = getQuery(tabElement); if (newValue === '#') { query.NameLessThan = 'A'; delete query.NameStartsWith; @@ -205,31 +205,31 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; delete query.NameLessThan; } query.StartIndex = 0; - reloadItems(tabContent); + reloadItems(tabElement); }); this.alphaPicker = new AlphaPicker({ element: alphaPickerElement, valueChangeEvent: 'click' }); - tabContent.querySelector('.alphaPicker').classList.add('alphabetPicker-right'); + tabElement.querySelector('.alphaPicker').classList.add('alphabetPicker-right'); alphaPickerElement.classList.add('alphaPicker-fixed-right'); itemsContainer.classList.add('padded-right-withalphapicker'); - tabContent.querySelector('.btnFilter').addEventListener('click', () => { + tabElement.querySelector('.btnFilter').addEventListener('click', () => { this.showFilterMenu(); }); - const btnSelectView = tabContent.querySelector('.btnSelectView'); + const btnSelectView = tabElement.querySelector('.btnSelectView'); btnSelectView.addEventListener('click', (e) => { libraryBrowser.showLayoutMenu(e.target, this.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(',')); }); btnSelectView.addEventListener('layoutchange', function (e) { const viewStyle = e.detail.viewStyle; - getPageData(tabContent).view = viewStyle; - libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle); - getQuery(tabContent).StartIndex = 0; + getPageData(tabElement).view = viewStyle; + libraryBrowser.saveViewSetting(getSavedQueryKey(tabElement), viewStyle); + getQuery(tabElement).StartIndex = 0; onViewStyleChange(); - reloadItems(tabContent); + reloadItems(tabElement); }); }; diff --git a/src/controllers/music/musicrecommended.js b/src/controllers/music/musicrecommended.js index 7682a1241c..33ee2e135a 100644 --- a/src/controllers/music/musicrecommended.js +++ b/src/controllers/music/musicrecommended.js @@ -226,7 +226,7 @@ import Dashboard from '../../utils/dashboard'; loadSuggestionsTab(view, tabContent, params.topParentId); } - function enableScrollX() { + function enableScrollXmobile() { return browser.mobile; } @@ -362,7 +362,7 @@ import Dashboard from '../../utils/dashboard'; const containers = tabContent.querySelectorAll('.itemsContainer'); for (let i = 0, length = containers.length; i < length; i++) { - setScrollClasses(containers[i], enableScrollX()); + setScrollClasses(containers[i], enableScrollXmobile()); } }; diff --git a/src/controllers/music/songs.js b/src/controllers/music/songs.js index 8b742d2bd4..ed76a04ab3 100644 --- a/src/controllers/music/songs.js +++ b/src/controllers/music/songs.js @@ -159,11 +159,11 @@ export default function (view, params, tabContent) { return getPageData(tabContent).view; }; - function initPage(tabContent) { - tabContent.querySelector('.btnFilter').addEventListener('click', function () { + function initPage(tabElement) { + tabElement.querySelector('.btnFilter').addEventListener('click', function () { self.showFilterMenu(); }); - tabContent.querySelector('.btnSort').addEventListener('click', function (e) { + tabElement.querySelector('.btnSort').addEventListener('click', function (e) { libraryBrowser.showSortMenu({ items: [{ name: globalize.translate('OptionTrackName'), @@ -197,14 +197,14 @@ export default function (view, params, tabContent) { id: 'Random,SortName' }], callback: function () { - getQuery(tabContent).StartIndex = 0; - reloadItems(tabContent); + getQuery(tabElement).StartIndex = 0; + reloadItems(tabElement); }, - query: getQuery(tabContent), + query: getQuery(tabElement), button: e.target }); }); - tabContent.querySelector('.btnShuffle').addEventListener('click', shuffle); + tabElement.querySelector('.btnShuffle').addEventListener('click', shuffle); } initPage(tabContent); diff --git a/src/controllers/shows/episodes.js b/src/controllers/shows/episodes.js index d0c7344ace..56b7b40680 100644 --- a/src/controllers/shows/episodes.js +++ b/src/controllers/shows/episodes.js @@ -190,11 +190,11 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; return getPageData(tabContent).view; }; - function initPage(tabContent) { - tabContent.querySelector('.btnFilter').addEventListener('click', function () { + function initPage(tabElement) { + tabElement.querySelector('.btnFilter').addEventListener('click', function () { self.showFilterMenu(); }); - tabContent.querySelector('.btnSort').addEventListener('click', function (e) { + tabElement.querySelector('.btnSort').addEventListener('click', function (e) { libraryBrowser.showSortMenu({ items: [{ name: globalize.translate('Name'), @@ -222,22 +222,22 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; id: 'Runtime,SeriesSortName,SortName' }], callback: function () { - reloadItems(tabContent); + reloadItems(tabElement); }, - query: getQuery(tabContent), + query: getQuery(tabElement), button: e.target }); }); - const btnSelectView = tabContent.querySelector('.btnSelectView'); + const btnSelectView = tabElement.querySelector('.btnSelectView'); btnSelectView.addEventListener('click', function (e) { libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(',')); }); btnSelectView.addEventListener('layoutchange', function (e) { const viewStyle = e.detail.viewStyle; - getPageData(tabContent).view = viewStyle; - libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle); + getPageData(tabElement).view = viewStyle; + libraryBrowser.saveViewSetting(getSavedQueryKey(tabElement), viewStyle); onViewStyleChange(); - reloadItems(tabContent); + reloadItems(tabElement); }); } diff --git a/src/controllers/shows/tvshows.js b/src/controllers/shows/tvshows.js index 07a338bdc1..8c58bf6ff1 100644 --- a/src/controllers/shows/tvshows.js +++ b/src/controllers/shows/tvshows.js @@ -219,13 +219,13 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; return getPageData(tabContent).view; }; - const initPage = (tabContent) => { - const alphaPickerElement = tabContent.querySelector('.alphaPicker'); - const itemsContainer = tabContent.querySelector('.itemsContainer'); + const initPage = (tabElement) => { + const alphaPickerElement = tabElement.querySelector('.alphaPicker'); + const itemsContainer = tabElement.querySelector('.itemsContainer'); alphaPickerElement.addEventListener('alphavaluechanged', function (e) { const newValue = e.detail.value; - const query = getQuery(tabContent); + const query = getQuery(tabElement); if (newValue === '#') { query.NameLessThan = 'A'; delete query.NameStartsWith; @@ -234,21 +234,21 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; delete query.NameLessThan; } query.StartIndex = 0; - reloadItems(tabContent); + reloadItems(tabElement); }); this.alphaPicker = new AlphaPicker({ element: alphaPickerElement, valueChangeEvent: 'click' }); - tabContent.querySelector('.alphaPicker').classList.add('alphabetPicker-right'); + tabElement.querySelector('.alphaPicker').classList.add('alphabetPicker-right'); alphaPickerElement.classList.add('alphaPicker-fixed-right'); itemsContainer.classList.add('padded-right-withalphapicker'); - tabContent.querySelector('.btnFilter').addEventListener('click', () => { + tabElement.querySelector('.btnFilter').addEventListener('click', () => { this.showFilterMenu(); }); - tabContent.querySelector('.btnSort').addEventListener('click', function (e) { + tabElement.querySelector('.btnSort').addEventListener('click', function (e) { libraryBrowser.showSortMenu({ items: [{ name: globalize.translate('Name'), @@ -276,24 +276,24 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; id: 'PremiereDate,SortName' }], callback: function () { - getQuery(tabContent).StartIndex = 0; - reloadItems(tabContent); + getQuery(tabElement).StartIndex = 0; + reloadItems(tabElement); }, - query: getQuery(tabContent), + query: getQuery(tabElement), button: e.target }); }); - const btnSelectView = tabContent.querySelector('.btnSelectView'); + const btnSelectView = tabElement.querySelector('.btnSelectView'); btnSelectView.addEventListener('click', (e) => { libraryBrowser.showLayoutMenu(e.target, this.getCurrentViewStyle(), 'Banner,List,Poster,PosterCard,Thumb,ThumbCard'.split(',')); }); btnSelectView.addEventListener('layoutchange', function (e) { const viewStyle = e.detail.viewStyle; - getPageData(tabContent).view = viewStyle; - libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle); - getQuery(tabContent).StartIndex = 0; + getPageData(tabElement).view = viewStyle; + libraryBrowser.saveViewSetting(getSavedQueryKey(tabElement), viewStyle); + getQuery(tabElement).StartIndex = 0; onViewStyleChange(); - reloadItems(tabContent); + reloadItems(tabElement); }); }; diff --git a/src/elements/emby-scroller/emby-scroller.js b/src/elements/emby-scroller/emby-scroller.js index 5a76be9e6b..6a4c6064ec 100644 --- a/src/elements/emby-scroller/emby-scroller.js +++ b/src/elements/emby-scroller/emby-scroller.js @@ -155,9 +155,9 @@ import './emby-scroller.scss'; } }; - function loadScrollButtons(scroller) { + function loadScrollButtons(buttonsScroller) { import('../emby-scrollbuttons/emby-scrollbuttons').then(() => { - scroller.insertAdjacentHTML('beforebegin', '
'); + buttonsScroller.insertAdjacentHTML('beforebegin', '
'); }); } diff --git a/src/elements/emby-textarea/emby-textarea.js b/src/elements/emby-textarea/emby-textarea.js index 27195ab2ab..6e79ec304d 100644 --- a/src/elements/emby-textarea/emby-textarea.js +++ b/src/elements/emby-textarea/emby-textarea.js @@ -4,6 +4,17 @@ import '../emby-input/emby-input'; /* eslint-disable indent */ + function calculateOffset(textarea) { + const style = window.getComputedStyle(textarea, null); + const props = ['paddingTop', 'paddingBottom']; + let offset = 0; + + for (let i = 0; i < props.length; i++) { + offset += parseInt(style[props[i]]); + } + return offset; + } + function autoGrow(textarea, maxLines) { const self = this; @@ -16,16 +27,7 @@ import '../emby-input/emby-input'; * @param textarea * @returns {number} */ - self.getOffset = function (textarea) { - const style = window.getComputedStyle(textarea, null); - const props = ['paddingTop', 'paddingBottom']; - let offset = 0; - - for (let i = 0; i < props.length; i++) { - offset += parseInt(style[props[i]]); - } - return offset; - }; + self.getOffset = calculateOffset(textarea); let offset; function reset() { diff --git a/src/plugins/chromecastPlayer/plugin.js b/src/plugins/chromecastPlayer/plugin.js index 1cb48814f6..ca362c2c80 100644 --- a/src/plugins/chromecastPlayer/plugin.js +++ b/src/plugins/chromecastPlayer/plugin.js @@ -980,9 +980,9 @@ class ChromecastPlayer { const instance = this; - apiClient.getItem(userId, item.Id).then(function (item) { + apiClient.getItem(userId, item.Id).then(function (fetchedItem) { instance.playWithCommand({ - items: [item] + items: [fetchedItem] }, 'Shuffle'); }); } @@ -993,9 +993,9 @@ class ChromecastPlayer { const instance = this; - apiClient.getItem(userId, item.Id).then(function (item) { + apiClient.getItem(userId, item.Id).then(function (fetchedItem) { instance.playWithCommand({ - items: [item] + items: [fetchedItem] }, 'InstantMix'); }); } diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index d9bdcc7b9d..d0891de5e2 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -1346,13 +1346,13 @@ function tryRemoveElement(elem) { return import('./style.scss').then(() => { loading.show(); - const dlg = document.createElement('div'); - dlg.setAttribute('dir', 'ltr'); + const newdlg = document.createElement('div'); + newdlg.setAttribute('dir', 'ltr'); - dlg.classList.add('videoPlayerContainer'); + newdlg.classList.add('videoPlayerContainer'); if (options.fullscreen) { - dlg.classList.add('videoPlayerContainer-onTop'); + newdlg.classList.add('videoPlayerContainer-onTop'); } let html = ''; @@ -1371,8 +1371,8 @@ function tryRemoveElement(elem) { html += ''; - dlg.innerHTML = html; - const videoElement = dlg.querySelector('video'); + newdlg.innerHTML = html; + const videoElement = newdlg.querySelector('video'); videoElement.volume = getSavedVolume(); videoElement.addEventListener('timeupdate', this.onTimeUpdate); @@ -1388,8 +1388,8 @@ function tryRemoveElement(elem) { videoElement.poster = options.backdropUrl; } - document.body.insertBefore(dlg, document.body.firstChild); - this.#videoDialog = dlg; + document.body.insertBefore(newdlg, document.body.firstChild); + this.#videoDialog = newdlg; this.#mediaElement = videoElement; delete this.forcedFullscreen; @@ -1408,7 +1408,7 @@ function tryRemoveElement(elem) { // don't animate on smart tv's, too slow if (!browser.slow && browser.supportsCssAnimation()) { - return zoomIn(dlg).then(function () { + return zoomIn(newdlg).then(function () { return videoElement; }); } diff --git a/src/plugins/youtubePlayer/plugin.js b/src/plugins/youtubePlayer/plugin.js index 83eb430bad..e91ee0f88b 100644 --- a/src/plugins/youtubePlayer/plugin.js +++ b/src/plugins/youtubePlayer/plugin.js @@ -32,26 +32,26 @@ function createMediaElement(instance, options) { import('./style.scss').then(() => { loading.show(); - const dlg = document.createElement('div'); + const newdlg = document.createElement('div'); - dlg.classList.add('youtubePlayerContainer'); + newdlg.classList.add('youtubePlayerContainer'); if (options.fullscreen) { - dlg.classList.add('onTop'); + newdlg.classList.add('onTop'); } - dlg.innerHTML = '
'; - const videoElement = dlg.querySelector('#player'); + newdlg.innerHTML = '
'; + const videoElement = newdlg.querySelector('#player'); - document.body.insertBefore(dlg, document.body.firstChild); - instance.videoDialog = dlg; + document.body.insertBefore(newdlg, document.body.firstChild); + instance.videoDialog = newdlg; if (options.fullscreen) { document.body.classList.add('hide-scroll'); } - if (options.fullscreen && dlg.animate && !browser.slow) { - zoomIn(dlg, 1).onfinish = function () { + if (options.fullscreen && newdlg.animate && !browser.slow) { + zoomIn(newdlg, 1).onfinish = function () { resolve(videoElement); }; } else { diff --git a/src/scripts/gamepadtokey.js b/src/scripts/gamepadtokey.js index 40e33a7caf..847ef02a52 100644 --- a/src/scripts/gamepadtokey.js +++ b/src/scripts/gamepadtokey.js @@ -264,7 +264,7 @@ function runInputLoop() { } // Iterate through the buttons to see if Left thumbstick, DPad, A and B are pressed. const buttons = gamepad.buttons; - for (let j = 0, len = buttons.length; j < len; j++) { + for (let j = 0, buttonsLen = buttons.length; j < buttonsLen; j++) { if (ProcessedButtons.indexOf(j) !== -1) { if (buttons[j].pressed) { switch (j) {