diff --git a/package.json b/package.json index 724c533fcb..b30b457fbd 100644 --- a/package.json +++ b/package.json @@ -122,6 +122,7 @@ "src/components/maintabsmanager.js", "src/components/mediaLibraryCreator/mediaLibraryCreator.js", "src/components/mediaLibraryEditor/mediaLibraryEditor.js", + "src/components/nowPlayingBar/nowPlayingBar.js", "src/components/listview/listview.js", "src/components/playback/brightnessosd.js", "src/components/playback/mediasession.js", @@ -148,15 +149,28 @@ "src/components/syncPlay/playbackPermissionManager.js", "src/components/syncPlay/syncPlayManager.js", "src/components/syncPlay/timeSyncManager.js", + "src/controllers/auth/addserver.js", + "src/controllers/auth/forgotpassword.js", + "src/controllers/auth/forgotpasswordpin.js", + "src/controllers/auth/login.js", + "src/controllers/auth/selectserver.js", "src/controllers/dashboard/apikeys.js", "src/controllers/dashboard/dashboard.js", "src/controllers/dashboard/encodingsettings.js", "src/controllers/dashboard/logs.js", "src/controllers/user/subtitles.js", + "src/controllers/dashboard/general.js", + "src/controllers/dashboard/librarydisplay.js", + "src/controllers/dashboard/metadataImages.js", + "src/controllers/dashboard/metadatanfo.js", + "src/controllers/dashboard/plugins/repositories.js", + "src/controllers/dashboard/streaming.js", "src/controllers/dashboard/mediaLibrary.js", "src/controllers/dashboard/networking.js", "src/controllers/dashboard/playback.js", "src/controllers/dashboard/plugins/repositories.js", + "src/controllers/dashboard/scheduledtasks/scheduledtask.js", + "src/controllers/dashboard/scheduledtasks/scheduledtasks.js", "src/controllers/dashboard/dlna/profile.js", "src/controllers/dashboard/dlna/profiles.js", "src/controllers/dashboard/dlna/settings.js", diff --git a/src/components/nowPlayingBar/nowPlayingBar.js b/src/components/nowPlayingBar/nowPlayingBar.js index bc9c3c1a88..ec413cb7ae 100644 --- a/src/components/nowPlayingBar/nowPlayingBar.js +++ b/src/components/nowPlayingBar/nowPlayingBar.js @@ -1,31 +1,46 @@ -define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', 'layoutManager', 'playbackManager', 'nowPlayingHelper', 'apphost', 'dom', 'connectionManager', 'itemContextMenu', 'paper-icon-button-light', 'emby-ratingbutton'], function (require, datetime, itemHelper, events, browser, imageLoader, layoutManager, playbackManager, nowPlayingHelper, appHost, dom, connectionManager, itemContextMenu) { - 'use strict'; +import require from 'require'; +import datetime from 'datetime'; +import itemHelper from 'itemHelper'; +import events from 'events'; +import browser from 'browser'; +import imageLoader from 'imageLoader'; +import layoutManager from 'layoutManager'; +import playbackManager from 'playbackManager'; +import nowPlayingHelper from 'nowPlayingHelper'; +import appHost from 'apphost'; +import dom from 'dom'; +import connectionManager from 'connectionManager'; +import itemContextMenu from 'itemContextMenu'; +import 'paper-icon-button-light'; +import 'emby-ratingbutton'; - var currentPlayer; - var currentPlayerSupportedCommands = []; +/* eslint-disable indent */ - var currentTimeElement; - var nowPlayingImageElement; - var nowPlayingTextElement; - var nowPlayingUserData; - var muteButton; - var volumeSlider; - var volumeSliderContainer; - var playPauseButtons; - var positionSlider; - var toggleRepeatButton; - var toggleRepeatButtonIcon; + let currentPlayer; + let currentPlayerSupportedCommands = []; - var lastUpdateTime = 0; - var lastPlayerState = {}; - var isEnabled; - var currentRuntimeTicks = 0; + let currentTimeElement; + let nowPlayingImageElement; + let nowPlayingTextElement; + let nowPlayingUserData; + let muteButton; + let volumeSlider; + let volumeSliderContainer; + let playPauseButtons; + let positionSlider; + let toggleRepeatButton; + let toggleRepeatButtonIcon; - var isVisibilityAllowed = true; + let lastUpdateTime = 0; + let lastPlayerState = {}; + let isEnabled; + let currentRuntimeTicks = 0; + + let isVisibilityAllowed = true; function getNowPlayingBarHtml() { - var html = ''; + let html = ''; html += '
'; @@ -198,7 +213,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', if (currentPlayer) { - var newPercent = parseFloat(this.value); + const newPercent = parseFloat(this.value); playbackManager.seekPercent(newPercent, currentPlayer); } @@ -207,13 +222,13 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', positionSlider.getBubbleText = function (value) { - var state = lastPlayerState; + const state = lastPlayerState; if (!state || !state.NowPlayingItem || !currentRuntimeTicks) { return '--:--'; } - var ticks = currentRuntimeTicks; + let ticks = currentRuntimeTicks; ticks /= 100; ticks *= value; @@ -230,12 +245,12 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', function showRemoteControl() { - require(['appRouter'], function (appRouter) { + import('appRouter').then(({default: appRouter}) => { appRouter.showNowPlaying(); }); } - var nowPlayingBarElement; + let nowPlayingBarElement; function getNowPlayingBar() { if (nowPlayingBarElement) { @@ -243,10 +258,15 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', } return new Promise(function (resolve, reject) { - - require(['appFooter-shared', 'itemShortcuts', 'css!./nowPlayingBar.css', 'emby-slider'], function (appfooter, itemShortcuts) { - - var parentContainer = appfooter.element; + Promise.all([ + import('appFooter-shared'), + import('itemShortcuts'), + import('css!./nowPlayingBar.css'), + import('emby-slider') + ]) + .then(([appfooter, itemShortcuts]) => { + console.log(appfooter); + const parentContainer = appfooter.element; nowPlayingBarElement = parentContainer.querySelector('.nowPlayingBar'); if (nowPlayingBarElement) { @@ -294,13 +314,13 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', lastPlayerState = state; - var playerInfo = playbackManager.getPlayerInfo(); + const playerInfo = playbackManager.getPlayerInfo(); - var playState = state.PlayState || {}; + const playState = state.PlayState || {}; updatePlayPauseState(playState.IsPaused); - var supportedCommands = playerInfo.supportedCommands; + const supportedCommands = playerInfo.supportedCommands; currentPlayerSupportedCommands = supportedCommands; if (supportedCommands.indexOf('SetRepeatMode') === -1) { @@ -317,11 +337,11 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', positionSlider.disabled = !playState.CanSeek; // determines if both forward and backward buffer progress will be visible - var isProgressClear = state.MediaSource && state.MediaSource.RunTimeTicks == null; + const isProgressClear = state.MediaSource && state.MediaSource.RunTimeTicks == null; positionSlider.setIsClear(isProgressClear); } - var nowPlayingItem = state.NowPlayingItem || {}; + const nowPlayingItem = state.NowPlayingItem || {}; updateTimeDisplay(playState.PositionTicks, nowPlayingItem.RunTimeTicks, playbackManager.getBufferedRanges(player)); updateNowPlayingInfo(state); @@ -348,7 +368,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', if (positionSlider && !positionSlider.dragging) { if (runtimeTicks) { - var pct = positionTicks / runtimeTicks; + let pct = positionTicks / runtimeTicks; pct *= 100; positionSlider.value = pct; @@ -365,7 +385,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', if (currentTimeElement) { - var timeText = positionTicks == null ? '--:--' : datetime.getDisplayRunningTime(positionTicks); + let timeText = positionTicks == null ? '--:--' : datetime.getDisplayRunningTime(positionTicks); if (runtimeTicks) { timeText += ' / ' + datetime.getDisplayRunningTime(runtimeTicks); @@ -377,10 +397,10 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', function updatePlayerVolumeState(isMuted, volumeLevel) { - var supportedCommands = currentPlayerSupportedCommands; + const supportedCommands = currentPlayerSupportedCommands; - var showMuteButton = true; - var showVolumeSlider = true; + let showMuteButton = true; + let showVolumeSlider = true; if (supportedCommands.indexOf('ToggleMute') === -1) { showMuteButton = false; @@ -495,37 +515,37 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', return null; } - var currentImgUrl; + let currentImgUrl; function updateNowPlayingInfo(state) { - var nowPlayingItem = state.NowPlayingItem; + const nowPlayingItem = state.NowPlayingItem; - var textLines = nowPlayingItem ? nowPlayingHelper.getNowPlayingNames(nowPlayingItem) : []; + const textLines = nowPlayingItem ? nowPlayingHelper.getNowPlayingNames(nowPlayingItem) : []; if (textLines.length > 1) { textLines[1].secondary = true; } nowPlayingTextElement.innerHTML = textLines.map(function (nowPlayingName) { - var cssClass = nowPlayingName.secondary ? ' class="nowPlayingBarSecondaryText"' : ''; + const cssClass = nowPlayingName.secondary ? ' class="nowPlayingBarSecondaryText"' : ''; if (nowPlayingName.item) { - var nowPlayingText = getTextActionButton(nowPlayingName.item, nowPlayingName.text); + const nowPlayingText = getTextActionButton(nowPlayingName.item, nowPlayingName.text); return `
${nowPlayingText}
`; } - + let nowPlayingText = ''; return `
${nowPlayingText}
`; }).join(''); - var imgHeight = 70; + const imgHeight = 70; - var url = nowPlayingItem ? (seriesImageUrl(nowPlayingItem, { + const url = nowPlayingItem ? (seriesImageUrl(nowPlayingItem, { height: imgHeight }) || imageUrl(nowPlayingItem, { height: imgHeight })) : null; - var isRefreshing = false; + let isRefreshing = false; if (url !== currentImgUrl) { currentImgUrl = url; @@ -541,12 +561,12 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', if (nowPlayingItem.Id) { if (isRefreshing) { - var apiClient = connectionManager.getApiClient(nowPlayingItem.ServerId); + const apiClient = connectionManager.getApiClient(nowPlayingItem.ServerId); apiClient.getItem(apiClient.getCurrentUserId(), nowPlayingItem.Id).then(function (item) { - var userData = item.UserData || {}; - var likes = userData.Likes == null ? '' : userData.Likes; - var contextButton = document.querySelector('.btnToggleContextMenu'); - var options = { + const userData = item.UserData || {}; + const likes = userData.Likes == null ? '' : userData.Likes; + const contextButton = document.querySelector('.btnToggleContextMenu'); + const options = { play: false, queue: false, positionTo: contextButton @@ -570,7 +590,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', function onPlaybackStart(e, state) { console.debug('nowplaying event: ' + e.type); - var player = this; + const player = this; onStateChanged.call(player, e, state); } @@ -581,7 +601,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', return; } - var player = this; + const player = this; updateRepeatModeDisplay(playbackManager.getRepeatMode(player)); } @@ -604,7 +624,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', // in the event of a stop->play command // Don't call getNowPlayingBar here because we don't want to end up creating it just to hide it - var elem = document.getElementsByClassName('nowPlayingBar')[0]; + const elem = document.getElementsByClassName('nowPlayingBar')[0]; if (elem) { slideDown(elem); @@ -614,7 +634,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', function onPlaybackStopped(e, state) { console.debug('nowplaying event: ' + e.type); - var player = this; + const player = this; if (player.isLocalPlayer) { if (state.NextMediaType !== 'Audio') { @@ -633,14 +653,14 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', return; } - var player = this; + const player = this; updatePlayPauseState(player.paused()); } function onStateChanged(event, state) { console.debug('nowplaying event: ' + event.type); - var player = this; + const player = this; if (!state.NowPlayingItem || layoutManager.tv) { hideNowPlayingBar(); @@ -671,21 +691,21 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', } // Try to avoid hammering the document with changes - var now = new Date().getTime(); + const now = new Date().getTime(); if ((now - lastUpdateTime) < 700) { return; } lastUpdateTime = now; - var player = this; + const player = this; currentRuntimeTicks = playbackManager.duration(player); updateTimeDisplay(playbackManager.currentTime(player), currentRuntimeTicks, playbackManager.getBufferedRanges(player)); } function releaseCurrentPlayer() { - var player = currentPlayer; + const player = currentPlayer; if (player) { events.off(player, 'playbackstart', onPlaybackStart); @@ -708,14 +728,14 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', return; } - var player = this; + const player = this; updatePlayerVolumeState(player.isMuted(), player.getVolume()); } function refreshFromPlayer(player) { - var state = playbackManager.getPlayerState(player); + const state = playbackManager.getPlayerState(player); onStateChanged.call(player, { type: 'init' }, state); } @@ -771,4 +791,5 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', } } }); -}); + +/* eslint-enable indent */ diff --git a/src/controllers/auth/addserver.js b/src/controllers/auth/addserver.js index 622d19082e..1129283246 100644 --- a/src/controllers/auth/addserver.js +++ b/src/controllers/auth/addserver.js @@ -1,14 +1,20 @@ -define(['appSettings', 'loading', 'browser', 'globalize', 'emby-button'], function(appSettings, loading, browser, globalize) { - 'use strict'; +import appSettings from 'appSettings'; +import loading from 'loading'; +import browser from 'browser'; +import globalize from 'globalize'; +import 'emby-button'; + +/* eslint-disable indent */ function handleConnectionResult(page, result) { loading.hide(); switch (result.State) { - case 'SignedIn': - var apiClient = result.ApiClient; + case 'SignedIn': { + const apiClient = result.ApiClient; Dashboard.onServerChanged(apiClient.getCurrentUserId(), apiClient.accessToken(), apiClient); Dashboard.navigate('home.html'); break; + } case 'ServerSignIn': Dashboard.navigate('login.html?serverid=' + result.Servers[0].Id, false, 'none'); break; @@ -30,7 +36,7 @@ define(['appSettings', 'loading', 'browser', 'globalize', 'emby-button'], functi function submitServer(page) { loading.show(); - var host = page.querySelector('#txtServerHost').value; + const host = page.querySelector('#txtServerHost').value; ConnectionManager.connectToAddress(host, { enableAutoLogin: appSettings.enableAutoLogin() }).then(function(result) { @@ -42,11 +48,11 @@ define(['appSettings', 'loading', 'browser', 'globalize', 'emby-button'], functi }); } - return function(view, params) { + export default function(view, params) { view.querySelector('.addServerForm').addEventListener('submit', onServerSubmit); view.querySelector('.btnCancel').addEventListener('click', goBack); - require(['autoFocuser'], function (autoFocuser) { + import('autoFocuser').then(({default: autoFocuser}) => { autoFocuser.autoFocus(view); }); @@ -57,9 +63,10 @@ define(['appSettings', 'loading', 'browser', 'globalize', 'emby-button'], functi } function goBack() { - require(['appRouter'], function(appRouter) { + import('appRouter').then(({default: appRouter}) => { appRouter.back(); }); } - }; -}); + } + +/* eslint-enable indent */ diff --git a/src/controllers/auth/forgotpassword.js b/src/controllers/auth/forgotpassword.js index 3756bf814d..ace5a3ec15 100644 --- a/src/controllers/auth/forgotpassword.js +++ b/src/controllers/auth/forgotpassword.js @@ -1,5 +1,6 @@ -define(['globalize'], function (globalize) { - 'use strict'; +import globalize from 'globalize'; + +/* eslint-disable indent */ function processForgotPasswordResult(result) { if ('ContactAdmin' == result.Action) { @@ -17,7 +18,7 @@ define(['globalize'], function (globalize) { } if ('PinCode' == result.Action) { - var msg = globalize.translate('MessageForgotPasswordFileCreated'); + let msg = globalize.translate('MessageForgotPasswordFileCreated'); msg += '
'; msg += '
'; msg += 'Enter PIN here to finish Password Reset
'; @@ -34,7 +35,7 @@ define(['globalize'], function (globalize) { } } - return function (view, params) { + export default function (view, params) { function onSubmit(e) { ApiClient.ajax({ type: 'POST', @@ -49,5 +50,6 @@ define(['globalize'], function (globalize) { } view.querySelector('form').addEventListener('submit', onSubmit); - }; -}); + } + +/* eslint-enable indent */ diff --git a/src/controllers/auth/forgotpasswordpin.js b/src/controllers/auth/forgotpasswordpin.js index 2a51890d2f..a88e131eea 100644 --- a/src/controllers/auth/forgotpasswordpin.js +++ b/src/controllers/auth/forgotpasswordpin.js @@ -1,9 +1,10 @@ -define(['globalize'], function (globalize) { - 'use strict'; +import globalize from 'globalize'; + +/* eslint-disable indent */ function processForgotPasswordResult(result) { if (result.Success) { - var msg = globalize.translate('MessagePasswordResetForUsers'); + let msg = globalize.translate('MessagePasswordResetForUsers'); msg += '
'; msg += '
'; msg += result.UsersReset.join('
'); @@ -22,7 +23,7 @@ define(['globalize'], function (globalize) { }); } - return function (view, params) { + export default function (view, params) { function onSubmit(e) { ApiClient.ajax({ type: 'POST', @@ -37,5 +38,6 @@ define(['globalize'], function (globalize) { } view.querySelector('form').addEventListener('submit', onSubmit); - }; -}); + } + +/* eslint-enable indent */ diff --git a/src/controllers/auth/login.js b/src/controllers/auth/login.js index c0c37e27d6..fb16413ae7 100644 --- a/src/controllers/auth/login.js +++ b/src/controllers/auth/login.js @@ -1,14 +1,24 @@ -define(['apphost', 'appSettings', 'dom', 'connectionManager', 'loading', 'layoutManager', 'browser', 'globalize', 'cardStyle', 'emby-checkbox'], function (appHost, appSettings, dom, connectionManager, loading, layoutManager, browser, globalize) { - 'use strict'; +import appHost from 'apphost'; +import appSettings from 'appSettings'; +import dom from 'dom'; +import connectionManager from 'connectionManager'; +import loading from 'loading'; +import layoutManager from 'layoutManager'; +import browser from 'browser'; +import globalize from 'globalize'; +import 'cardStyle'; +import 'emby-checkbox'; - var enableFocusTransform = !browser.slow && !browser.edge; +/* eslint-disable indent */ + + const enableFocusTransform = !browser.slow && !browser.edge; function authenticateUserByName(page, apiClient, username, password) { loading.show(); apiClient.authenticateUserByName(username, password).then(function (result) { - var user = result.User; - var serverId = getParameterByName('serverid'); - var newUrl; + const user = result.User; + const serverId = getParameterByName('serverid'); + let newUrl; if (user.Policy.IsAdministrator && !serverId) { newUrl = 'dashboard.html'; @@ -26,7 +36,7 @@ define(['apphost', 'appSettings', 'dom', 'connectionManager', 'loading', 'layout const UnauthorizedOrForbidden = [401, 403]; if (UnauthorizedOrForbidden.includes(response.status)) { - require(['toast'], function (toast) { + import('toast').then(({default: toast}) => { const messageKey = response.status === 401 ? 'MessageInvalidUser' : 'MessageUnauthorizedUser'; toast(globalize.translate(messageKey)); }); @@ -58,23 +68,23 @@ define(['apphost', 'appSettings', 'dom', 'connectionManager', 'loading', 'layout } } - var metroColors = ['#6FBD45', '#4BB3DD', '#4164A5', '#E12026', '#800080', '#E1B222', '#008040', '#0094FF', '#FF00C7', '#FF870F', '#7F0037']; + const metroColors = ['#6FBD45', '#4BB3DD', '#4164A5', '#E12026', '#800080', '#E1B222', '#008040', '#0094FF', '#FF00C7', '#FF870F', '#7F0037']; function getRandomMetroColor() { - var index = Math.floor(Math.random() * (metroColors.length - 1)); + const index = Math.floor(Math.random() * (metroColors.length - 1)); return metroColors[index]; } function getMetroColor(str) { if (str) { - var character = String(str.substr(0, 1).charCodeAt()); - var sum = 0; + const character = String(str.substr(0, 1).charCodeAt()); + let sum = 0; - for (var i = 0; i < character.length; i++) { + for (let i = 0; i < character.length; i++) { sum += parseInt(character.charAt(i)); } - var index = String(sum).substr(-1); + const index = String(sum).substr(-1); return metroColors[index]; } @@ -82,13 +92,13 @@ define(['apphost', 'appSettings', 'dom', 'connectionManager', 'loading', 'layout } function loadUserList(context, apiClient, users) { - var html = ''; + let html = ''; - for (var i = 0; i < users.length; i++) { - var user = users[i]; + for (let i = 0; i < users.length; i++) { + const user = users[i]; // TODO move card creation code to Card component - var cssClass = 'card squareCard scalableCard squareCard-scalable'; + let cssClass = 'card squareCard scalableCard squareCard-scalable'; if (layoutManager.tv) { cssClass += ' show-focus'; @@ -98,13 +108,13 @@ define(['apphost', 'appSettings', 'dom', 'connectionManager', 'loading', 'layout } } - var cardBoxCssClass = 'cardBox cardBox-bottompadded'; + const cardBoxCssClass = 'cardBox cardBox-bottompadded'; html += '
'; return cardContainer; }).join(''); - var itemsContainer = view.querySelector('.servers'); + const itemsContainer = view.querySelector('.servers'); if (!items.length) { html = '

' + globalize.translate('MessageNoServersAvailable') + '

'; @@ -89,7 +106,7 @@ define(['loading', 'appRouter', 'layoutManager', 'appSettings', 'apphost', 'focu } function alertTextWithOptions(options) { - require(['alert'], function (alert) { + import('alert').then(({default: alert}) => { alert(options); }); } @@ -98,14 +115,14 @@ define(['loading', 'appRouter', 'layoutManager', 'appSettings', 'apphost', 'focu alertText(globalize.translate('MessageUnableToConnectToServer')); } - return function (view, params) { + export default function (view, params) { function connectToServer(server) { loading.show(); connectionManager.connectToServer(server, { enableAutoLogin: appSettings.enableAutoLogin() }).then(function (result) { loading.hide(); - var apiClient = result.ApiClient; + const apiClient = result.ApiClient; switch (result.State) { case 'SignedIn': @@ -140,7 +157,7 @@ define(['loading', 'appRouter', 'layoutManager', 'appSettings', 'apphost', 'focu } function onServerClick(server) { - var menuItems = []; + const menuItems = []; menuItems.push({ name: globalize.translate('Connect'), id: 'connect' @@ -178,10 +195,10 @@ define(['loading', 'appRouter', 'layoutManager', 'appSettings', 'apphost', 'focu connectionManager.getAvailableServers().then(onServersRetrieved); } - var servers; + let servers; updatePageStyle(view, params); view.addEventListener('viewshow', function (e) { - var isRestored = e.detail.isRestored; + const isRestored = e.detail.isRestored; appRouter.setTitle(null); if (!isRestored) { @@ -189,20 +206,21 @@ define(['loading', 'appRouter', 'layoutManager', 'appSettings', 'apphost', 'focu } }); view.querySelector('.servers').addEventListener('click', function (e) { - var card = dom.parentWithClass(e.target, 'card'); + const card = dom.parentWithClass(e.target, 'card'); if (card) { - var url = card.getAttribute('data-url'); + const url = card.getAttribute('data-url'); if (url) { appRouter.show(url); } else { - var id = card.getAttribute('data-id'); + const id = card.getAttribute('data-id'); onServerClick(servers.filter(function (s) { return s.Id === id; })[0]); } } }); - }; -}); + } + +/* eslint-enable indent */ diff --git a/src/controllers/dashboard/general.js b/src/controllers/dashboard/general.js index eb0f7edfa4..8e30749aba 100644 --- a/src/controllers/dashboard/general.js +++ b/src/controllers/dashboard/general.js @@ -1,5 +1,13 @@ -define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-textarea', 'emby-input', 'emby-select', 'emby-button'], function ($, loading, globalize) { - 'use strict'; +import $ from 'jQuery'; +import loading from 'loading'; +import globalize from 'globalize'; +import 'emby-checkbox'; +import 'emby-textarea'; +import 'emby-input'; +import 'emby-select'; +import 'emby-button'; + +/* eslint-disable indent */ function loadPage(page, config, languageOptions, systemInfo) { page.querySelector('#txtServerName').value = systemInfo.ServerName; @@ -16,7 +24,7 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-textarea', 'emb function onSubmit() { loading.show(); - var form = this; + const form = this; $(form).parents('.page'); ApiClient.getServerConfiguration().then(function (config) { config.ServerName = $('#txtServerName', form).val(); @@ -24,7 +32,7 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-textarea', 'emb config.CachePath = form.querySelector('#txtCachePath').value; config.MetadataPath = $('#txtMetadataPath', form).val(); config.MetadataNetworkPath = $('#txtMetadataNetworkPath', form).val(); - var requiresReload = config.UICulture !== currentLanguage; + let requiresReload = config.UICulture !== currentLanguage; ApiClient.updateServerConfiguration(config).then(function() { ApiClient.getNamedConfiguration(brandingConfigKey).then(function(brandingConfig) { brandingConfig.LoginDisclaimer = form.querySelector('#txtLoginDisclaimer').value; @@ -43,7 +51,7 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-textarea', 'emb }); }); }, function () { - require(['alert'], function (alert) { + import('alert').then(({default: alert}) => { alert(globalize.translate('DefaultErrorMessage')); }); @@ -53,13 +61,13 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-textarea', 'emb return false; } - var currentBrandingOptions; - var currentLanguage; - var brandingConfigKey = 'branding'; - return function (view, params) { + let currentBrandingOptions; + let currentLanguage; + const brandingConfigKey = 'branding'; + export default function (view, params) { $('#btnSelectCachePath', view).on('click.selectDirectory', function () { - require(['directorybrowser'], function (directoryBrowser) { - var picker = new directoryBrowser.default(); + import('directorybrowser').then(({default: directoryBrowser}) => { + const picker = new directoryBrowser(); picker.show({ callback: function (path) { if (path) { @@ -75,8 +83,8 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-textarea', 'emb }); }); $('#btnSelectMetadataPath', view).on('click.selectDirectory', function () { - require(['directorybrowser'], function (directoryBrowser) { - var picker = new directoryBrowser.default(); + import('directorybrowser').then(({default: directoryBrowser}) => { + const picker = new directoryBrowser(); picker.show({ path: $('#txtMetadataPath', view).val(), networkSharePath: $('#txtMetadataNetworkPath', view).val(), @@ -100,9 +108,9 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-textarea', 'emb }); $('.dashboardGeneralForm', view).off('submit', onSubmit).on('submit', onSubmit); view.addEventListener('viewshow', function () { - var promiseConfig = ApiClient.getServerConfiguration(); - var promiseLanguageOptions = ApiClient.getJSON(ApiClient.getUrl('Localization/Options')); - var promiseSystemInfo = ApiClient.getSystemInfo(); + const promiseConfig = ApiClient.getServerConfiguration(); + const promiseLanguageOptions = ApiClient.getJSON(ApiClient.getUrl('Localization/Options')); + const promiseSystemInfo = ApiClient.getSystemInfo(); Promise.all([promiseConfig, promiseLanguageOptions, promiseSystemInfo]).then(function (responses) { loadPage(view, responses[0], responses[1], responses[2]); }); @@ -112,5 +120,6 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-textarea', 'emb view.querySelector('#txtCustomCss').value = config.CustomCss || ''; }); }); - }; -}); + } + +/* eslint-enable indent */ diff --git a/src/controllers/dashboard/librarydisplay.js b/src/controllers/dashboard/librarydisplay.js index a820c37528..2269e19c44 100644 --- a/src/controllers/dashboard/librarydisplay.js +++ b/src/controllers/dashboard/librarydisplay.js @@ -1,5 +1,10 @@ -define(['globalize', 'loading', 'libraryMenu', 'emby-checkbox', 'emby-button', 'emby-button'], function(globalize, loading, libraryMenu) { - 'use strict'; +import globalize from 'globalize'; +import loading from 'loading'; +import libraryMenu from 'libraryMenu'; +import 'emby-checkbox'; +import 'emby-button'; + +/* eslint-disable indent */ function getTabs() { return [{ @@ -17,7 +22,7 @@ define(['globalize', 'loading', 'libraryMenu', 'emby-checkbox', 'emby-button', ' }]; } - return function(view, params) { + export default function(view, params) { function loadData() { ApiClient.getServerConfiguration().then(function(config) { view.querySelector('.chkFolderView').checked = config.EnableFolderView; @@ -33,7 +38,7 @@ define(['globalize', 'loading', 'libraryMenu', 'emby-checkbox', 'emby-button', ' view.querySelector('form').addEventListener('submit', function(e) { loading.show(); - var form = this; + const form = this; ApiClient.getServerConfiguration().then(function(config) { config.EnableFolderView = form.querySelector('.chkFolderView').checked; config.EnableGroupingIntoCollections = form.querySelector('.chkGroupMoviesIntoCollections').checked; @@ -63,5 +68,6 @@ define(['globalize', 'loading', 'libraryMenu', 'emby-checkbox', 'emby-button', ' } }); }); - }; -}); + } + +/* eslint-enable indent */ diff --git a/src/controllers/dashboard/metadataImages.js b/src/controllers/dashboard/metadataImages.js index 3047736a68..cbfe05419c 100644 --- a/src/controllers/dashboard/metadataImages.js +++ b/src/controllers/dashboard/metadataImages.js @@ -1,12 +1,18 @@ -define(['jQuery', 'dom', 'loading', 'libraryMenu', 'globalize', 'listViewStyle'], function($, dom, loading, libraryMenu, globalize) { - 'use strict'; +import $ from 'jQuery'; +import dom from 'dom'; +import loading from 'loading'; +import libraryMenu from 'libraryMenu'; +import globalize from 'globalize'; +import 'listViewStyle'; + +/* eslint-disable indent */ function populateLanguages(select) { return ApiClient.getCultures().then(function(languages) { - var html = ''; + let html = ''; html += ""; - for (var i = 0, length = languages.length; i < length; i++) { - var culture = languages[i]; + for (let i = 0, length = languages.length; i < length; i++) { + const culture = languages[i]; html += "'; } select.innerHTML = html; @@ -15,10 +21,10 @@ define(['jQuery', 'dom', 'loading', 'libraryMenu', 'globalize', 'listViewStyle'] function populateCountries(select) { return ApiClient.getCountries().then(function(allCountries) { - var html = ''; + let html = ''; html += ""; - for (var i = 0, length = allCountries.length; i < length; i++) { - var culture = allCountries[i]; + for (let i = 0, length = allCountries.length; i < length; i++) { + const culture = allCountries[i]; html += "'; } select.innerHTML = html; @@ -26,9 +32,9 @@ define(['jQuery', 'dom', 'loading', 'libraryMenu', 'globalize', 'listViewStyle'] } function loadPage(page) { - var promises = [ApiClient.getServerConfiguration(), populateLanguages(page.querySelector('#selectLanguage')), populateCountries(page.querySelector('#selectCountry'))]; + const promises = [ApiClient.getServerConfiguration(), populateLanguages(page.querySelector('#selectLanguage')), populateCountries(page.querySelector('#selectCountry'))]; Promise.all(promises).then(function(responses) { - var config = responses[0]; + const config = responses[0]; page.querySelector('#selectLanguage').value = config.PreferredMetadataLanguage || ''; page.querySelector('#selectCountry').value = config.MetadataCountryCode || ''; loading.hide(); @@ -36,7 +42,7 @@ define(['jQuery', 'dom', 'loading', 'libraryMenu', 'globalize', 'listViewStyle'] } function onSubmit() { - var form = this; + const form = this; return loading.show(), ApiClient.getServerConfiguration().then(function(config) { config.PreferredMetadataLanguage = form.querySelector('#selectLanguage').value; config.MetadataCountryCode = form.querySelector('#selectCountry').value; @@ -67,4 +73,5 @@ define(['jQuery', 'dom', 'loading', 'libraryMenu', 'globalize', 'listViewStyle'] loading.show(); loadPage(this); }); -}); + +/* eslint-enable indent */ diff --git a/src/controllers/dashboard/metadatanfo.js b/src/controllers/dashboard/metadatanfo.js index 3ef1a7cbf9..f1b768d18b 100644 --- a/src/controllers/dashboard/metadatanfo.js +++ b/src/controllers/dashboard/metadatanfo.js @@ -1,8 +1,12 @@ -define(['jQuery', 'loading', 'libraryMenu', 'globalize'], function ($, loading, libraryMenu, globalize) { - 'use strict'; +import $ from 'jQuery'; +import loading from 'loading'; +import libraryMenu from 'libraryMenu'; +import globalize from 'globalize'; + +/* eslint-disable indent */ function loadPage(page, config, users) { - var html = ''; + let html = ''; html += users.map(function (user) { return ''; }).join(''); @@ -16,7 +20,7 @@ define(['jQuery', 'loading', 'libraryMenu', 'globalize'], function ($, loading, function onSubmit() { loading.show(); - var form = this; + const form = this; ApiClient.getNamedConfiguration(metadataKey).then(function (config) { config.UserId = $('#selectUser', form).val() || null; config.ReleaseDateFormat = $('#selectReleaseDateFormat', form).val(); @@ -32,11 +36,11 @@ define(['jQuery', 'loading', 'libraryMenu', 'globalize'], function ($, loading, } function showConfirmMessage(config) { - var msg = []; + const msg = []; msg.push(globalize.translate('MetadataSettingChangeHelp')); - require(['alert'], function (alert) { - alert.default({ + import('alert').then(({default: alert}) => { + alert({ text: msg.join('

') }); }); @@ -58,17 +62,18 @@ define(['jQuery', 'loading', 'libraryMenu', 'globalize'], function ($, loading, }]; } - var metadataKey = 'xbmcmetadata'; + const metadataKey = 'xbmcmetadata'; $(document).on('pageinit', '#metadataNfoPage', function () { $('.metadataNfoForm').off('submit', onSubmit).on('submit', onSubmit); }).on('pageshow', '#metadataNfoPage', function () { libraryMenu.setTabs('metadata', 3, getTabs); loading.show(); - var page = this; - var promise1 = ApiClient.getUsers(); - var promise2 = ApiClient.getNamedConfiguration(metadataKey); + const page = this; + const promise1 = ApiClient.getUsers(); + const promise2 = ApiClient.getNamedConfiguration(metadataKey); Promise.all([promise1, promise2]).then(function (responses) { loadPage(page, responses[1], responses[0]); }); }); -}); + +/* eslint-enable indent */ diff --git a/src/controllers/dashboard/networking.js b/src/controllers/dashboard/networking.js index 5b0342ec2a..367ab8335c 100644 --- a/src/controllers/dashboard/networking.js +++ b/src/controllers/dashboard/networking.js @@ -85,7 +85,7 @@ import 'emby-select'; function showAlertText(options) { return new Promise(function (resolve, reject) { - require(['alert'], function (alert) { + import('alert').then(({default: alert}) => { alert(options).then(resolve, reject); }); }); @@ -140,7 +140,7 @@ import 'emby-select'; } }); view.querySelector('#btnSelectCertPath').addEventListener('click', function () { - require(['directorybrowser'], function (directoryBrowser) { + import('directorybrowser').then(({default: directoryBrowser}) => { const picker = new directoryBrowser(); picker.show({ includeFiles: true, diff --git a/src/controllers/dashboard/scheduledtasks/scheduledtask.js b/src/controllers/dashboard/scheduledtasks/scheduledtask.js index b632d176f4..79775e092d 100644 --- a/src/controllers/dashboard/scheduledtasks/scheduledtask.js +++ b/src/controllers/dashboard/scheduledtasks/scheduledtask.js @@ -1,11 +1,19 @@ -define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby-button', 'emby-select'], function ($, loading, datetime, dom, globalize) { - 'use strict'; +import $ from 'jQuery'; +import loading from 'loading'; +import datetime from 'datetime'; +import dom from 'dom'; +import globalize from 'globalize'; +import 'emby-input'; +import 'emby-button'; +import 'emby-select'; + +/* eslint-disable indent */ function fillTimeOfDay(select) { - var options = []; + const options = []; - for (var i = 0; i < 86400000; i += 900000) { + for (let i = 0; i < 86400000; i += 900000) { options.push({ name: ScheduledTaskPage.getDisplayTime(i * 10000), value: i * 10000 @@ -18,15 +26,15 @@ define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby } Array.prototype.remove = function (from, to) { - var rest = this.slice((to || from) + 1 || this.length); + const rest = this.slice((to || from) + 1 || this.length); this.length = from < 0 ? this.length + from : from; return this.push.apply(this, rest); }; - var ScheduledTaskPage = { + const ScheduledTaskPage = { refreshScheduledTask: function (view) { loading.show(); - var id = getParameterByName('id'); + let id = getParameterByName('id'); ApiClient.getScheduledTask(id).then(function (task) { ScheduledTaskPage.loadScheduledTask(view, task); }); @@ -42,11 +50,11 @@ define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby loading.hide(); }, loadTaskTriggers: function (context, task) { - var html = ''; + let html = ''; html += '
'; - for (var i = 0, length = task.Triggers.length; i < length; i++) { - var trigger = task.Triggers[i]; + for (let i = 0, length = task.Triggers.length; i < length; i++) { + const trigger = task.Triggers[i]; html += '
'; html += ''; @@ -58,7 +66,7 @@ define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby html += "
" + ScheduledTaskPage.getTriggerFriendlyName(trigger) + '
'; if (trigger.MaxRuntimeMs) { html += '
'; - var hours = trigger.MaxRuntimeTicks / 36e9; + const hours = trigger.MaxRuntimeTicks / 36e9; if (hours == 1) { html += globalize.translate('ValueTimeLimitSingleHour'); } else { @@ -92,7 +100,7 @@ define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby if (trigger.Type == 'IntervalTrigger') { - var hours = trigger.IntervalTicks / 36e9; + const hours = trigger.IntervalTicks / 36e9; if (hours == 0.25) { return globalize.translate('EveryXMinutes', '15'); @@ -117,8 +125,8 @@ define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby return trigger.Type; }, getDisplayTime: function (ticks) { - var ms = ticks / 1e4; - var now = new Date(); + const ms = ticks / 1e4; + const now = new Date(); now.setHours(0, 0, 0, 0); now.setTime(now.getTime() + ms); return datetime.getDisplayTime(now); @@ -137,7 +145,7 @@ define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby }, deleteTrigger: function (view, index) { loading.show(); - var id = getParameterByName('id'); + let id = getParameterByName('id'); ApiClient.getScheduledTask(id).then(function (task) { task.Triggers.remove(index); ApiClient.updateScheduledTaskTriggers(task.Id, task.Triggers).then(function () { @@ -179,7 +187,7 @@ define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby } }, getTriggerToAdd: function (page) { - var trigger = { + const trigger = { Type: $('#selectTriggerType', page).val() }; @@ -194,7 +202,7 @@ define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby trigger.IntervalTicks = $('#selectInterval', page).val(); } - var timeLimit = $('#txtTimeLimit', page).val() || '0'; + let timeLimit = $('#txtTimeLimit', page).val() || '0'; timeLimit = parseFloat(timeLimit) * 3600000; trigger.MaxRuntimeMs = timeLimit || null; @@ -202,10 +210,10 @@ define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby return trigger; } }; - return function (view, params) { + export default function (view, params) { function onSubmit(e) { loading.show(); - var id = getParameterByName('id'); + let id = getParameterByName('id'); ApiClient.getScheduledTask(id).then(function (task) { task.Triggers.push(ScheduledTaskPage.getTriggerToAdd(view)); ApiClient.updateScheduledTaskTriggers(task.Id, task.Triggers).then(function () { @@ -226,7 +234,7 @@ define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby ScheduledTaskPage.showAddTriggerPopup(view); }); view.addEventListener('click', function (e) { - var btnDeleteTrigger = dom.parentWithClass(e.target, 'btnDeleteTrigger'); + const btnDeleteTrigger = dom.parentWithClass(e.target, 'btnDeleteTrigger'); if (btnDeleteTrigger) { ScheduledTaskPage.confirmDeleteTrigger(view, parseInt(btnDeleteTrigger.getAttribute('data-index'))); @@ -235,5 +243,6 @@ define(['jQuery', 'loading', 'datetime', 'dom', 'globalize', 'emby-input', 'emby view.addEventListener('viewshow', function () { ScheduledTaskPage.refreshScheduledTask(view); }); - }; -}); + } + +/* eslint-enable indent */ diff --git a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js index 5ce53cf6fe..af96f34c15 100644 --- a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js +++ b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js @@ -1,5 +1,14 @@ -define(['jQuery', 'loading', 'events', 'globalize', 'serverNotifications', 'date-fns', 'dfnshelper', 'listViewStyle', 'emby-button'], function ($, loading, events, globalize, serverNotifications, datefns, dfnshelper) { - 'use strict'; +import $ from 'jQuery'; +import loading from 'loading'; +import events from 'events'; +import globalize from 'globalize'; +import serverNotifications from 'serverNotifications'; +import * as datefns from 'date-fns'; +import dfnshelper from 'dfnshelper'; +import 'listViewStyle'; +import 'emby-button'; + +/* eslint-disable indent */ function reloadList(page) { ApiClient.getScheduledTasks({ @@ -17,10 +26,10 @@ define(['jQuery', 'loading', 'events', 'globalize', 'serverNotifications', 'date return a == b ? 0 : a < b ? -1 : 1; }); - var currentCategory; - var html = ''; - for (var i = 0; i < tasks.length; i++) { - var task = tasks[i]; + let currentCategory; + let html = ''; + for (let i = 0; i < tasks.length; i++) { + const task = tasks[i]; if (task.Category != currentCategory) { currentCategory = task.Category; if (currentCategory) { @@ -63,11 +72,11 @@ define(['jQuery', 'loading', 'events', 'globalize', 'serverNotifications', 'date } function getTaskProgressHtml(task) { - var html = ''; + let html = ''; if (task.State === 'Idle') { if (task.LastExecutionResult) { - var endtime = Date.parse(task.LastExecutionResult.EndTimeUtc); - var starttime = Date.parse(task.LastExecutionResult.StartTimeUtc); + const endtime = Date.parse(task.LastExecutionResult.EndTimeUtc); + const starttime = Date.parse(task.LastExecutionResult.StartTimeUtc); html += globalize.translate('LabelScheduledTaskLastRan', datefns.formatDistanceToNow(endtime, dfnshelper.localeWithSuffix), datefns.formatDistance(starttime, endtime, { locale: dfnshelper.getLocale() })); if (task.LastExecutionResult.Status === 'Failed') { @@ -79,7 +88,7 @@ define(['jQuery', 'loading', 'events', 'globalize', 'serverNotifications', 'date } } } else if (task.State === 'Running') { - var progress = (task.CurrentProgressPercentage || 0).toFixed(1); + const progress = (task.CurrentProgressPercentage || 0).toFixed(1); html += '
'; html += '
'; html += '
'; @@ -94,7 +103,7 @@ define(['jQuery', 'loading', 'events', 'globalize', 'serverNotifications', 'date } function setTaskButtonIcon(button, icon) { - var inner = button.querySelector('.material-icons'); + let inner = button.querySelector('.material-icons'); inner.classList.remove('stop', 'play_arrow'); inner.classList.add(icon); } @@ -114,10 +123,10 @@ define(['jQuery', 'loading', 'events', 'globalize', 'serverNotifications', 'date $(elem).parents('.listItem')[0].setAttribute('data-status', state); } - return function(view, params) { + export default function(view, params) { function updateTasks(tasks) { - for (var i = 0; i < tasks.length; i++) { - var task = tasks[i]; + for (let i = 0; i < tasks.length; i++) { + const task = tasks[i]; view.querySelector('#taskProgress' + task.Id).innerHTML = getTaskProgressHtml(task); updateTaskButton(view.querySelector('#btnTask' + task.Id), task.State); } @@ -146,12 +155,12 @@ define(['jQuery', 'loading', 'events', 'globalize', 'serverNotifications', 'date pollInterval && clearInterval(pollInterval); } - var pollInterval; - var serverId = ApiClient.serverId(); + let pollInterval; + const serverId = ApiClient.serverId(); $('.divScheduledTasks', view).on('click', '.btnStartTask', function() { - var button = this; - var id = button.getAttribute('data-taskid'); + const button = this; + let id = button.getAttribute('data-taskid'); ApiClient.startScheduledTask(id).then(function() { updateTaskButton(button, 'Running'); reloadList(view); @@ -159,8 +168,8 @@ define(['jQuery', 'loading', 'events', 'globalize', 'serverNotifications', 'date }); $('.divScheduledTasks', view).on('click', '.btnStopTask', function() { - var button = this; - var id = button.getAttribute('data-taskid'); + const button = this; + let id = button.getAttribute('data-taskid'); ApiClient.stopScheduledTask(id).then(function() { updateTaskButton(button, ''); reloadList(view); @@ -178,5 +187,6 @@ define(['jQuery', 'loading', 'events', 'globalize', 'serverNotifications', 'date reloadList(view); events.on(serverNotifications, 'ScheduledTasksInfo', onScheduledTasksUpdate); }); - }; -}); + } + +/* eslint-enable indent */ diff --git a/src/controllers/dashboard/streaming.js b/src/controllers/dashboard/streaming.js index 37afe5a054..c54fbea472 100644 --- a/src/controllers/dashboard/streaming.js +++ b/src/controllers/dashboard/streaming.js @@ -1,5 +1,9 @@ -define(['jQuery', 'libraryMenu', 'loading', 'globalize'], function ($, libraryMenu, loading, globalize) { - 'use strict'; +import $ from 'jQuery'; +import libraryMenu from 'libraryMenu'; +import loading from 'loading'; +import globalize from 'globalize'; + +/* eslint-disable indent */ function loadPage(page, config) { $('#txtRemoteClientBitrateLimit', page).val(config.RemoteClientBitrateLimit / 1e6 || ''); @@ -8,7 +12,7 @@ define(['jQuery', 'libraryMenu', 'loading', 'globalize'], function ($, libraryMe function onSubmit() { loading.show(); - var form = this; + const form = this; ApiClient.getServerConfiguration().then(function (config) { config.RemoteClientBitrateLimit = parseInt(1e6 * parseFloat($('#txtRemoteClientBitrateLimit', form).val() || '0')); ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult); @@ -35,9 +39,10 @@ define(['jQuery', 'libraryMenu', 'loading', 'globalize'], function ($, libraryMe }).on('pageshow', '#streamingSettingsPage', function () { loading.show(); libraryMenu.setTabs('playback', 2, getTabs); - var page = this; + const page = this; ApiClient.getServerConfiguration().then(function (config) { loadPage(page, config); }); }); -}); + +/* eslint-enable indent */