diff --git a/package.json b/package.json
index b3f26db917..a83f68c10f 100644
--- a/package.json
+++ b/package.json
@@ -92,17 +92,25 @@
"test": [
"src/components/accessSchedule/accessSchedule.js",
"src/components/actionSheet/actionSheet.js",
+ "src/components/activitylog.js",
+ "src/components/alert.js",
"src/components/alphaPicker/alphaPicker.js",
+ "src/components/appFooter/appFooter.js",
"src/components/autoFocuser.js",
"src/components/backdrop/backdrop.js",
"src/components/cardbuilder/cardBuilder.js",
"src/components/cardbuilder/chaptercardbuilder.js",
"src/components/cardbuilder/peoplecardbuilder.js",
+ "src/components/channelMapper/channelMapper.js",
+ "src/components/confirm/confirm.js",
+ "src/components/displaySettings/displaySettings.js",
+ "src/components/homeScreenSettings/homeScreenSettings.js",
"src/components/directorybrowser/directorybrowser.js",
"src/components/collectionEditor/collectionEditor.js",
"src/components/dialog/dialog.js",
+ "src/components/directorybrowser/directorybrowser.js",
"src/components/dialogHelper/dialogHelper.js",
- "src/components/channelMapper/channelMapper.js",
+ "src/components/homesections/homesections.js",
"src/components/images/imageLoader.js",
"src/components/imageUploader/imageUploader.js",
"src/components/indicators/indicators.js",
@@ -110,9 +118,11 @@
"src/components/itemidentifier/itemidentifier.js",
"src/components/itemMediaInfo/itemMediaInfo.js",
"src/components/lazyLoader/lazyLoaderIntersectionObserver.js",
+ "src/components/multiSelect/multiSelect.js",
"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",
@@ -123,12 +133,16 @@
"src/components/playback/playmethodhelper.js",
"src/components/playback/remotecontrolautoplay.js",
"src/components/playback/volumeosd.js",
+ "src/components/prompt/prompt.js",
+ "src/components/playbackSettings/playbackSettings.js",
"src/components/playlisteditor/playlisteditor.js",
"src/components/groupedcards.js",
"src/components/htmlMediaHelper.js",
"src/components/playmenu.js",
"src/components/sanatizefilename.js",
"src/components/scrollManager.js",
+ "src/components/search/searchfields.js",
+ "src/components/search/searchresults.js",
"src/components/settingshelper.js",
"src/components/subtitlesettings/subtitlesettings.js",
"src/components/subtitlesettings/subtitleappearancehelper.js",
@@ -137,11 +151,25 @@
"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/users/useredit.js",
"src/controllers/dashboard/users/userlibraryaccess.js",
@@ -149,6 +177,22 @@
"src/controllers/dashboard/users/userparentalcontrol.js",
"src/controllers/dashboard/users/userpasswordpage.js",
"src/controllers/dashboard/users/userprofilespage.js",
+ "src/controllers/shows/episodes.js",
+ "src/controllers/shows/tvgenres.js",
+ "src/controllers/shows/tvlatest.js",
+ "src/controllers/shows/tvrecommended.js",
+ "src/controllers/shows/tvshows.js",
+ "src/controllers/shows/tvstudios.js",
+ "src/controllers/shows/tvupcoming.js",
+ "src/controllers/searchpage.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",
+ "src/controllers/dashboard/devices/devices.js",
+ "src/controllers/dashboard/devices/device.js",
+ "src/controllers/dashboard/serveractivity.js",
"src/elements/emby-tabs/emby-tabs.js",
"src/elements/emby-scroller/emby-scroller.js",
"src/elements/emby-radio/emby-radio.js",
@@ -156,6 +200,10 @@
"src/elements/emby-itemrefreshindicator/emby-itemrefreshindicator.js",
"src/elements/emby-progressbar/emby-progressbar.js",
"src/elements/emby-progressring/emby-progressring.js",
+ "src/elements/emby-itemrefreshindicator/emby-itemrefreshindicator.js",
+ "src/elements/emby-itemscontainer/emby-itemscontainer.js",
+ "src/elements/emby-playstatebutton/emby-playstatebutton.js",
+ "src/elements/emby-programcell/emby-programcell.js",
"src/elements/emby-radio/emby-radio.js",
"src/elements/emby-ratingbutton/emby-ratingbutton.js",
"src/elements/emby-scrollbuttons/emby-scrollbuttons.js",
@@ -165,9 +213,14 @@
"src/elements/emby-tabs/emby-tabs.js",
"src/elements/emby-textarea/emby-textarea.js",
"src/elements/emby-toggle/emby-toggle.js",
+ "src/elements/emby-button/emby-button.js",
+ "src/elements/emby-button/paper-icon-button-light.js",
+ "src/elements/emby-collapse/emby-collapse.js",
+ "src/elements/emby-input/emby-input.js",
"src/plugins/bookPlayer/plugin.js",
"src/plugins/bookPlayer/tableOfContents.js",
"src/plugins/photoPlayer/plugin.js",
+ "src/scripts/datetime.js",
"src/scripts/deleteHelper.js",
"src/scripts/dfnshelper.js",
"src/scripts/dom.js",
diff --git a/src/components/activitylog.js b/src/components/activitylog.js
index bbb0995063..2d5a21756f 100644
--- a/src/components/activitylog.js
+++ b/src/components/activitylog.js
@@ -1,11 +1,21 @@
-define(['events', 'globalize', 'dom', 'date-fns', 'dfnshelper', 'userSettings', 'serverNotifications', 'connectionManager', 'emby-button', 'listViewStyle'], function (events, globalize, dom, datefns, dfnshelper, userSettings, serverNotifications, connectionManager) {
- 'use strict';
+import events from 'events';
+import globalize from 'globalize';
+import dom from 'dom';
+import * as datefns from 'date-fns';
+import dfnshelper from 'dfnshelper';
+import userSettings from 'userSettings';
+import serverNotifications from 'serverNotifications';
+import connectionManager from 'connectionManager';
+import 'emby-button';
+import 'listViewStyle';
+
+/* eslint-disable indent */
function getEntryHtml(entry, apiClient) {
- var html = '';
+ let html = '';
html += '
';
- var color = '#00a4dc';
- var icon = 'notifications';
+ let color = '#00a4dc';
+ let icon = 'notifications';
if ('Error' == entry.Severity || 'Fatal' == entry.Severity || 'Warn' == entry.Severity) {
color = '#cc0000';
@@ -56,8 +66,8 @@ define(['events', 'globalize', 'dom', 'date-fns', 'dfnshelper', 'userSettings',
}
limit = limit || parseInt(elem.getAttribute('data-activitylimit') || '7');
- var minDate = new Date();
- var hasUserId = 'false' !== elem.getAttribute('data-useractivity');
+ const minDate = new Date();
+ const hasUserId = 'false' !== elem.getAttribute('data-useractivity');
if (hasUserId) {
minDate.setTime(minDate.getTime() - 24 * 60 * 60 * 1000); // one day back
@@ -74,7 +84,7 @@ define(['events', 'globalize', 'dom', 'date-fns', 'dfnshelper', 'userSettings',
elem.setAttribute('data-activitystartindex', startIndex);
elem.setAttribute('data-activitylimit', limit);
if (!startIndex) {
- var activityContainer = dom.parentWithClass(elem, 'activityContainer');
+ const activityContainer = dom.parentWithClass(elem, 'activityContainer');
if (activityContainer) {
if (result.Items.length) {
@@ -91,7 +101,7 @@ define(['events', 'globalize', 'dom', 'date-fns', 'dfnshelper', 'userSettings',
}
function onActivityLogUpdate(e, apiClient, data) {
- var options = this.options;
+ const options = this.options;
if (options && options.serverId === apiClient.serverId()) {
reloadData(this, options.element, apiClient);
@@ -99,14 +109,14 @@ define(['events', 'globalize', 'dom', 'date-fns', 'dfnshelper', 'userSettings',
}
function onListClick(e) {
- var btnEntryInfo = dom.parentWithClass(e.target, 'btnEntryInfo');
+ const btnEntryInfo = dom.parentWithClass(e.target, 'btnEntryInfo');
if (btnEntryInfo) {
- var id = btnEntryInfo.getAttribute('data-id');
- var items = this.items;
+ const id = btnEntryInfo.getAttribute('data-id');
+ const items = this.items;
if (items) {
- var item = items.filter(function (i) {
+ const item = items.filter(function (i) {
return i.Id.toString() === id;
})[0];
@@ -118,35 +128,35 @@ define(['events', 'globalize', 'dom', 'date-fns', 'dfnshelper', 'userSettings',
}
function showItemOverview(item) {
- require(['alert'], function (alert) {
+ import('alert').then(({default: alert}) => {
alert({
text: item.Overview
});
});
}
- function ActivityLog(options) {
+class ActivityLog {
+ constructor(options) {
this.options = options;
- var element = options.element;
+ const element = options.element;
element.classList.add('activityLogListWidget');
element.addEventListener('click', onListClick.bind(this));
- var apiClient = connectionManager.getApiClient(options.serverId);
+ const apiClient = connectionManager.getApiClient(options.serverId);
reloadData(this, element, apiClient);
- var onUpdate = onActivityLogUpdate.bind(this);
+ const onUpdate = onActivityLogUpdate.bind(this);
this.updateFn = onUpdate;
events.on(serverNotifications, 'ActivityLogEntry', onUpdate);
apiClient.sendMessage('ActivityLogEntryStart', '0,1500');
}
-
- ActivityLog.prototype.destroy = function () {
- var options = this.options;
+ destroy() {
+ const options = this.options;
if (options) {
options.element.classList.remove('activityLogListWidget');
connectionManager.getApiClient(options.serverId).sendMessage('ActivityLogEntryStop', '0,1500');
}
- var onUpdate = this.updateFn;
+ const onUpdate = this.updateFn;
if (onUpdate) {
events.off(serverNotifications, 'ActivityLogEntry', onUpdate);
@@ -154,7 +164,9 @@ define(['events', 'globalize', 'dom', 'date-fns', 'dfnshelper', 'userSettings',
this.items = null;
this.options = null;
- };
+ }
+}
- return ActivityLog;
-});
+export default ActivityLog;
+
+/* eslint-enable indent */
diff --git a/src/components/alert.js b/src/components/alert.js
index 97b580f8f6..5d396e3a62 100644
--- a/src/components/alert.js
+++ b/src/components/alert.js
@@ -1,14 +1,17 @@
-define(['browser', 'dialog', 'globalize'], function (browser, dialog, globalize) {
- 'use strict';
+import browser from 'browser';
+import dialog from 'dialog';
+import globalize from 'globalize';
+
+/* eslint-disable indent */
function replaceAll(originalString, strReplace, strWith) {
- var reg = new RegExp(strReplace, 'ig');
+ const reg = new RegExp(strReplace, 'ig');
return originalString.replace(reg, strWith);
}
- return function (text, title) {
+ export default function (text, title) {
- var options;
+ let options;
if (typeof text === 'string') {
options = {
title: title,
@@ -21,7 +24,7 @@ define(['browser', 'dialog', 'globalize'], function (browser, dialog, globalize)
if (browser.tv && window.alert) {
alert(replaceAll(options.text || '', '
', '\n'));
} else {
- var items = [];
+ const items = [];
items.push({
name: globalize.translate('ButtonGotIt'),
@@ -41,5 +44,6 @@ define(['browser', 'dialog', 'globalize'], function (browser, dialog, globalize)
}
return Promise.resolve();
- };
-});
+ }
+
+/* eslint-enable indent */
diff --git a/src/components/appFooter/appFooter.js b/src/components/appFooter/appFooter.js
index 033a0b008d..427d3b8019 100644
--- a/src/components/appFooter/appFooter.js
+++ b/src/components/appFooter/appFooter.js
@@ -1,17 +1,18 @@
-define(['browser', 'css!./appFooter'], function (browser) {
- 'use strict';
+import browser from 'browser';
+import 'css!./appFooter';
- function render(options) {
- var elem = document.createElement('div');
- elem.classList.add('appfooter');
+function render(options) {
+ const elem = document.createElement('div');
+ elem.classList.add('appfooter');
- document.body.appendChild(elem);
+ document.body.appendChild(elem);
- return elem;
- }
+ return elem;
+}
- function appFooter(options) {
- var self = this;
+class appFooter {
+ constructor(options) {
+ const self = this;
self.element = render(options);
self.add = function (elem) {
@@ -26,12 +27,11 @@ define(['browser', 'css!./appFooter'], function (browser) {
}
};
}
-
- appFooter.prototype.destroy = function () {
+ destroy() {
var self = this;
self.element = null;
- };
+ }
+}
- return appFooter;
-});
+export default new appFooter;
diff --git a/src/components/appRouter.js b/src/components/appRouter.js
index 1791aef7e2..03fcb76564 100644
--- a/src/components/appRouter.js
+++ b/src/components/appRouter.js
@@ -53,7 +53,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro
break;
case 'ServerUpdateNeeded':
require(['alert'], function (alert) {
- alert({
+ alert.default({
text: globalize.translate('ServerUpdateNeeded', 'https://github.com/jellyfin/jellyfin'),
html: globalize.translate('ServerUpdateNeeded', '
https://github.com/jellyfin/jellyfin')
}).then(function () {
diff --git a/src/components/confirm/confirm.js b/src/components/confirm/confirm.js
index 6b9252b5f5..2d5cfdb55c 100644
--- a/src/components/confirm/confirm.js
+++ b/src/components/confirm/confirm.js
@@ -1,5 +1,9 @@
-define(['browser', 'dialog', 'globalize'], function(browser, dialog, globalize) {
- 'use strict';
+import browser from 'browser';
+import dialog from 'dialog';
+import globalize from 'globalize';
+
+/* eslint-disable indent */
+export default (() => {
function replaceAll(str, find, replace) {
return str.split(find).join(replace);
@@ -7,7 +11,7 @@ define(['browser', 'dialog', 'globalize'], function(browser, dialog, globalize)
if (browser.tv && window.confirm) {
// Use the native confirm dialog
- return function (options) {
+ return options => {
if (typeof options === 'string') {
options = {
title: '',
@@ -15,8 +19,8 @@ define(['browser', 'dialog', 'globalize'], function(browser, dialog, globalize)
};
}
- var text = replaceAll(options.text || '', '
', '\n');
- var result = confirm(text);
+ const text = replaceAll(options.text || '', '
', '\n');
+ const result = confirm(text);
if (result) {
return Promise.resolve();
@@ -26,8 +30,8 @@ define(['browser', 'dialog', 'globalize'], function(browser, dialog, globalize)
};
} else {
// Use our own dialog
- return function (text, title) {
- var options;
+ return (text, title) => {
+ let options;
if (typeof text === 'string') {
options = {
title: title,
@@ -37,7 +41,7 @@ define(['browser', 'dialog', 'globalize'], function(browser, dialog, globalize)
options = text;
}
- var items = [];
+ const items = [];
items.push({
name: options.cancelText || globalize.translate('ButtonCancel'),
@@ -53,7 +57,7 @@ define(['browser', 'dialog', 'globalize'], function(browser, dialog, globalize)
options.buttons = items;
- return dialog.show(options).then(function (result) {
+ return dialog.show(options).then(result => {
if (result === 'ok') {
return Promise.resolve();
}
@@ -62,4 +66,5 @@ define(['browser', 'dialog', 'globalize'], function(browser, dialog, globalize)
});
};
}
-});
+})();
+/* eslint-enable indent */
diff --git a/src/components/displaySettings/displaySettings.js b/src/components/displaySettings/displaySettings.js
index c4eb35f49f..801c8657bd 100644
--- a/src/components/displaySettings/displaySettings.js
+++ b/src/components/displaySettings/displaySettings.js
@@ -1,22 +1,37 @@
-define(['require', 'browser', 'layoutManager', 'appSettings', 'pluginManager', 'apphost', 'focusManager', 'datetime', 'globalize', 'loading', 'connectionManager', 'skinManager', 'dom', 'events', 'emby-select', 'emby-checkbox', 'emby-button'], function (require, browser, layoutManager, appSettings, pluginManager, appHost, focusManager, datetime, globalize, loading, connectionManager, skinManager, dom, events) {
- 'use strict';
+import browser from 'browser';
+import layoutManager from 'layoutManager';
+import appSettings from 'appSettings';
+import pluginManager from 'pluginManager';
+import appHost from 'apphost';
+import focusManager from 'focusManager';
+import datetime from 'datetime';
+import globalize from 'globalize';
+import loading from 'loading';
+import connectionManager from 'connectionManager';
+import skinManager from 'skinManager';
+import events from 'events';
+import 'emby-select';
+import 'emby-checkbox';
+import 'emby-button';
+
+/* eslint-disable indent */
function fillThemes(select, isDashboard) {
- select.innerHTML = skinManager.getThemes().map(function (t) {
- var value = t.id;
+ select.innerHTML = skinManager.getThemes().map(t => {
+ let value = t.id;
if (t.isDefault && !isDashboard) {
value = '';
} else if (t.isDefaultServerDashboard && isDashboard) {
value = '';
}
- return '
';
+ return `
`;
}).join('');
}
function loadScreensavers(context, userSettings) {
- var selectScreensaver = context.querySelector('.selectScreensaver');
- var options = pluginManager.ofType('screensaver').map(function (plugin) {
+ const selectScreensaver = context.querySelector('.selectScreensaver');
+ const options = pluginManager.ofType('screensaver').map(plugin => {
return {
name: plugin.name,
value: plugin.id
@@ -28,8 +43,8 @@ define(['require', 'browser', 'layoutManager', 'appSettings', 'pluginManager', '
value: 'none'
});
- selectScreensaver.innerHTML = options.map(function (o) {
- return '
';
+ selectScreensaver.innerHTML = options.map(o => {
+ return `
`;
}).join('');
selectScreensaver.value = userSettings.screensaver();
@@ -41,8 +56,8 @@ define(['require', 'browser', 'layoutManager', 'appSettings', 'pluginManager', '
function loadSoundEffects(context, userSettings) {
- var selectSoundEffects = context.querySelector('.selectSoundEffects');
- var options = pluginManager.ofType('soundeffects').map(function (plugin) {
+ const selectSoundEffects = context.querySelector('.selectSoundEffects');
+ const options = pluginManager.ofType('soundeffects').map(plugin => {
return {
name: plugin.name,
value: plugin.id
@@ -54,8 +69,8 @@ define(['require', 'browser', 'layoutManager', 'appSettings', 'pluginManager', '
value: 'none'
});
- selectSoundEffects.innerHTML = options.map(function (o) {
- return '
';
+ selectSoundEffects.innerHTML = options.map(o => {
+ return `
`;
}).join('');
selectSoundEffects.value = userSettings.soundEffects();
@@ -67,17 +82,17 @@ define(['require', 'browser', 'layoutManager', 'appSettings', 'pluginManager', '
function loadSkins(context, userSettings) {
- var selectSkin = context.querySelector('.selectSkin');
+ const selectSkin = context.querySelector('.selectSkin');
- var options = pluginManager.ofType('skin').map(function (plugin) {
+ const options = pluginManager.ofType('skin').map(plugin => {
return {
name: plugin.name,
value: plugin.id
};
});
- selectSkin.innerHTML = options.map(function (o) {
- return '
';
+ selectSkin.innerHTML = options.map(o => {
+ return `
`;
}).join('');
selectSkin.value = userSettings.skin();
@@ -92,7 +107,7 @@ define(['require', 'browser', 'layoutManager', 'appSettings', 'pluginManager', '
}
}
- function showOrHideMissingEpisodesField(context, user, apiClient) {
+ function showOrHideMissingEpisodesField(context) {
if (browser.tizen || browser.web0s) {
context.querySelector('.fldDisplayMissingEpisodes').classList.add('hide');
@@ -102,10 +117,7 @@ define(['require', 'browser', 'layoutManager', 'appSettings', 'pluginManager', '
context.querySelector('.fldDisplayMissingEpisodes').classList.remove('hide');
}
- function loadForm(context, user, userSettings, apiClient) {
-
- var loggedInUserId = apiClient.getCurrentUserId();
- var userId = user.Id;
+ function loadForm(context, user, userSettings) {
if (user.Policy.IsAdministrator) {
context.querySelector('.selectDashboardThemeContainer').classList.remove('hide');
@@ -167,8 +179,8 @@ define(['require', 'browser', 'layoutManager', 'appSettings', 'pluginManager', '
context.querySelector('.chkRunAtStartup').checked = appSettings.runAtStartup();
- var selectTheme = context.querySelector('#selectTheme');
- var selectDashboardTheme = context.querySelector('#selectDashboardTheme');
+ const selectTheme = context.querySelector('#selectTheme');
+ const selectDashboardTheme = context.querySelector('#selectDashboardTheme');
fillThemes(selectTheme);
fillThemes(selectDashboardTheme, true);
@@ -195,7 +207,7 @@ define(['require', 'browser', 'layoutManager', 'appSettings', 'pluginManager', '
context.querySelector('.selectLayout').value = layoutManager.getSavedLayout() || '';
- showOrHideMissingEpisodesField(context, user, apiClient);
+ showOrHideMissingEpisodesField(context);
loading.hide();
}
@@ -239,29 +251,29 @@ define(['require', 'browser', 'layoutManager', 'appSettings', 'pluginManager', '
function save(instance, context, userId, userSettings, apiClient, enableSaveConfirmation) {
loading.show();
- apiClient.getUser(userId).then(function (user) {
- saveUser(context, user, userSettings, apiClient).then(function () {
+ apiClient.getUser(userId).then(user => {
+ saveUser(context, user, userSettings, apiClient).then(() => {
loading.hide();
if (enableSaveConfirmation) {
- require(['toast'], function (toast) {
+ import('toast').then(({default: toast}) => {
toast(globalize.translate('SettingsSaved'));
});
}
events.trigger(instance, 'saved');
- }, function () {
+ }, () => {
loading.hide();
});
});
}
function onSubmit(e) {
- var self = this;
- var apiClient = connectionManager.getApiClient(self.options.serverId);
- var userId = self.options.userId;
- var userSettings = self.options.userSettings;
+ const self = this;
+ const apiClient = connectionManager.getApiClient(self.options.serverId);
+ const userId = self.options.userId;
+ const userSettings = self.options.userSettings;
- userSettings.setUserInfo(userId, apiClient).then(function () {
- var enableSaveConfirmation = self.options.enableSaveConfirmation;
+ userSettings.setUserInfo(userId, apiClient).then(() => {
+ const enableSaveConfirmation = self.options.enableSaveConfirmation;
save(self, self.options.element, userId, userSettings, apiClient, enableSaveConfirmation);
});
@@ -272,50 +284,51 @@ define(['require', 'browser', 'layoutManager', 'appSettings', 'pluginManager', '
return false;
}
- function embed(options, self) {
- require(['text!./displaySettings.template.html'], function (template) {
- options.element.innerHTML = globalize.translateDocument(template, 'core');
- options.element.querySelector('form').addEventListener('submit', onSubmit.bind(self));
- if (options.enableSaveButton) {
- options.element.querySelector('.btnSave').classList.remove('hide');
- }
- self.loadData(options.autoFocus);
- });
+ async function embed(options, self) {
+ const { default: template } = await import('text!./displaySettings.template.html');
+ options.element.innerHTML = globalize.translateDocument(template, 'core');
+ options.element.querySelector('form').addEventListener('submit', onSubmit.bind(self));
+ if (options.enableSaveButton) {
+ options.element.querySelector('.btnSave').classList.remove('hide');
+ }
+ self.loadData(options.autoFocus);
}
- function DisplaySettings(options) {
- this.options = options;
- embed(options, this);
- }
+ class DisplaySettings {
+ constructor(options) {
+ this.options = options;
+ embed(options, this);
+ }
- DisplaySettings.prototype.loadData = function (autoFocus) {
- var self = this;
- var context = self.options.element;
+ loadData(autoFocus) {
+ const self = this;
+ const context = self.options.element;
- loading.show();
+ loading.show();
- var userId = self.options.userId;
- var apiClient = connectionManager.getApiClient(self.options.serverId);
- var userSettings = self.options.userSettings;
+ const userId = self.options.userId;
+ const apiClient = connectionManager.getApiClient(self.options.serverId);
+ const userSettings = self.options.userSettings;
- return apiClient.getUser(userId).then(function (user) {
- return userSettings.setUserInfo(userId, apiClient).then(function () {
- self.dataLoaded = true;
- loadForm(context, user, userSettings, apiClient);
- if (autoFocus) {
- focusManager.autoFocus(context);
- }
+ return apiClient.getUser(userId).then(user => {
+ return userSettings.setUserInfo(userId, apiClient).then(() => {
+ self.dataLoaded = true;
+ loadForm(context, user, userSettings);
+ if (autoFocus) {
+ focusManager.autoFocus(context);
+ }
+ });
});
- });
- };
+ }
- DisplaySettings.prototype.submit = function () {
- onSubmit.call(this);
- };
+ submit() {
+ onSubmit.call(this);
+ }
- DisplaySettings.prototype.destroy = function () {
- this.options = null;
- };
+ destroy() {
+ this.options = null;
+ }
+ }
- return DisplaySettings;
-});
+/* eslint-enable indent */
+export default DisplaySettings;
diff --git a/src/components/homeScreenSettings/homeScreenSettings.js b/src/components/homeScreenSettings/homeScreenSettings.js
index 9eae944d26..5e7d6b4c51 100644
--- a/src/components/homeScreenSettings/homeScreenSettings.js
+++ b/src/components/homeScreenSettings/homeScreenSettings.js
@@ -1,26 +1,37 @@
-define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loading', 'connectionManager', 'homeSections', 'dom', 'events', 'listViewStyle', 'emby-select', 'emby-checkbox'], function (require, appHost, layoutManager, focusManager, globalize, loading, connectionManager, homeSections, dom, events) {
- 'use strict';
+import layoutManager from 'layoutManager';
+import focusManager from 'focusManager';
+import globalize from 'globalize';
+import loading from 'loading';
+import connectionManager from 'connectionManager';
+import homeSections from 'homeSections';
+import dom from 'dom';
+import events from 'events';
+import 'listViewStyle';
+import 'emby-select';
+import 'emby-checkbox';
- var numConfigurableSections = 7;
+/* eslint-disable indent */
+
+ const numConfigurableSections = 7;
function renderViews(page, user, result) {
- var folderHtml = '';
+ let folderHtml = '';
folderHtml += '
';
- folderHtml += result.map(function (i) {
+ folderHtml += result.map(i => {
- var currentHtml = '';
+ let currentHtml = '';
- var id = 'chkGroupFolder' + i.Id;
+ const id = `chkGroupFolder${i.Id}`;
- var isChecked = user.Configuration.GroupedFolders.indexOf(i.Id) !== -1;
+ const isChecked = user.Configuration.GroupedFolders.includes(i.Id);
- var checkedHtml = isChecked ? ' checked="checked"' : '';
+ const checkedHtml = isChecked ? ' checked="checked"' : '';
currentHtml += '
';
return currentHtml;
@@ -34,7 +45,7 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa
function getLandingScreenOptions(type) {
- var list = [];
+ const list = [];
if (type === 'movies') {
list.push({
@@ -123,27 +134,27 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa
function getLandingScreenOptionsHtml(type, userValue) {
- return getLandingScreenOptions(type).map(function (o) {
+ return getLandingScreenOptions(type).map(o => {
- var selected = userValue === o.value || (o.isDefault && !userValue);
- var selectedHtml = selected ? ' selected' : '';
- var optionValue = o.isDefault ? '' : o.value;
+ const selected = userValue === o.value || (o.isDefault && !userValue);
+ const selectedHtml = selected ? ' selected' : '';
+ const optionValue = o.isDefault ? '' : o.value;
- return '
';
+ return `
`;
}).join('');
}
function renderViewOrder(context, user, result) {
- var html = '';
+ let html = '';
- var index = 0;
+ let index = 0;
- html += result.Items.map(function (view) {
+ html += result.Items.map(view => {
- var currentHtml = '';
+ let currentHtml = '';
- currentHtml += '
';
+ currentHtml += `
`;
currentHtml += '';
@@ -155,8 +166,8 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa
currentHtml += '
';
- currentHtml += '
';
- currentHtml += '
';
+ currentHtml += `
`;
+ currentHtml += `
`;
currentHtml += '
';
@@ -170,14 +181,14 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa
function updateHomeSectionValues(context, userSettings) {
- for (var i = 1; i <= 7; i++) {
+ for (let i = 1; i <= 7; i++) {
- var select = context.querySelector('#selectHomeSection' + i);
- var defaultValue = homeSections.getDefaultSection(i - 1);
+ const select = context.querySelector(`#selectHomeSection${i}`);
+ const defaultValue = homeSections.getDefaultSection(i - 1);
- var option = select.querySelector('option[value=' + defaultValue + ']') || select.querySelector('option[value=""]');
+ const option = select.querySelector(`option[value=${defaultValue}]`) || select.querySelector('option[value=""]');
- var userValue = userSettings.get('homesection' + (i - 1));
+ const userValue = userSettings.get(`homesection${i - 1}`);
option.value = '';
@@ -193,42 +204,42 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa
function getPerLibrarySettingsHtml(item, user, userSettings, apiClient) {
- var html = '';
+ let html = '';
- var isChecked;
+ let isChecked;
if (item.Type === 'Channel' || item.CollectionType === 'boxsets' || item.CollectionType === 'playlists') {
- isChecked = (user.Configuration.MyMediaExcludes || []).indexOf(item.Id) === -1;
+ isChecked = !(user.Configuration.MyMediaExcludes || []).includes(item.Id);
html += '
';
html += '';
html += '
';
}
- var excludeFromLatest = ['playlists', 'livetv', 'boxsets', 'channels'];
- if (excludeFromLatest.indexOf(item.CollectionType || '') === -1) {
+ const excludeFromLatest = ['playlists', 'livetv', 'boxsets', 'channels'];
+ if (!excludeFromLatest.includes(item.CollectionType || '')) {
- isChecked = user.Configuration.LatestItemsExcludes.indexOf(item.Id) === -1;
+ isChecked = !user.Configuration.LatestItemsExcludes.includes(item.Id);
html += '
';
}
if (html) {
- html = '
' + html + '
';
+ html = `
${html}
`;
}
if (item.CollectionType === 'movies' || item.CollectionType === 'tvshows' || item.CollectionType === 'music' || item.CollectionType === 'livetv') {
- var idForLanding = item.CollectionType === 'livetv' ? item.CollectionType : item.Id;
+ const idForLanding = item.CollectionType === 'livetv' ? item.CollectionType : item.Id;
html += '
';
- html += '