diff --git a/package.json b/package.json index 5c830de7f..6324ffd33 100644 --- a/package.json +++ b/package.json @@ -122,6 +122,8 @@ "src/components/maintabsmanager.js", "src/components/mediaLibraryCreator/mediaLibraryCreator.js", "src/components/mediaLibraryEditor/mediaLibraryEditor.js", + "src/components/metadataEditor/metadataEditor.js", + "src/components/metadataEditor/personEditor.js", "src/components/nowPlayingBar/nowPlayingBar.js", "src/components/listview/listview.js", "src/components/playback/brightnessosd.js", @@ -133,6 +135,7 @@ "src/components/playback/playmethodhelper.js", "src/components/playback/remotecontrolautoplay.js", "src/components/playback/volumeosd.js", + "src/components/playerstats/playerstats.js", "src/components/prompt/prompt.js", "src/components/playbackSettings/playbackSettings.js", "src/components/playlisteditor/playlisteditor.js", @@ -160,6 +163,8 @@ "src/controllers/dashboard/dashboard.js", "src/controllers/dashboard/encodingsettings.js", "src/controllers/dashboard/logs.js", + "src/controllers/user/menu.js", + "src/controllers/user/profile.js", "src/controllers/user/subtitles.js", "src/controllers/dashboard/general.js", "src/controllers/dashboard/librarydisplay.js", @@ -171,6 +176,11 @@ "src/controllers/dashboard/networking.js", "src/controllers/dashboard/playback.js", "src/controllers/dashboard/plugins/repositories.js", + "src/controllers/wizard/finish.js", + "src/controllers/wizard/remoteaccess.js", + "src/controllers/wizard/settings.js", + "src/controllers/wizard/start.js", + "src/controllers/wizard/user.js", "src/controllers/shows/episodes.js", "src/controllers/shows/tvgenres.js", "src/controllers/shows/tvlatest.js", @@ -216,6 +226,9 @@ "src/plugins/photoPlayer/plugin.js", "src/scripts/alphanumericshortcuts.js", "src/scripts/autoBackdrops.js", + "src/scripts/settings/appSettings.js", + "src/scripts/settings/userSettings.js", + "src/scripts/settings/webSettings.js", "src/scripts/datetime.js", "src/scripts/deleteHelper.js", "src/scripts/dfnshelper.js", @@ -228,11 +241,16 @@ "src/plugins/youtubePlayer/plugin.js", "src/components/filterdialog/filterdialog.js", "src/components/fetchhelper.js", + "src/scripts/editorsidebar.js", + "src/scripts/globalize.js", + "src/scripts/playlists.js", "src/scripts/keyboardNavigation.js", - "src/scripts/settings/appSettings.js", - "src/scripts/settings/userSettings.js", + "src/scripts/taskbutton.js", + "src/scripts/touchHelper.js", "src/scripts/themeLoader.js", - "src/scripts/settings/webSettings.js" + "src/plugins/backdropScreensaver/plugin.js", + "src/components/filterdialog/filterdialog.js", + "src/components/fetchhelper.js" ], "plugins": [ "@babel/plugin-transform-modules-amd", diff --git a/src/components/accessSchedule/accessSchedule.js b/src/components/accessSchedule/accessSchedule.js index 166460a02..edfef3a06 100644 --- a/src/components/accessSchedule/accessSchedule.js +++ b/src/components/accessSchedule/accessSchedule.js @@ -59,15 +59,14 @@ import 'formDialogStyle'; export function show(options) { return new Promise((resolve, reject) => { - // TODO: remove require - require(['text!./components/accessSchedule/accessSchedule.template.html'], template => { + import('text!./components/accessSchedule/accessSchedule.template.html').then(({default: template}) => { const dlg = dialogHelper.createDialog({ removeOnClose: true, size: 'small' }); dlg.classList.add('formDialog'); let html = ''; - html += globalize.translateDocument(template); + html += globalize.translateHtml(template); dlg.innerHTML = html; populateHours(dlg); loadSchedule(dlg, options.schedule); diff --git a/src/components/actionSheet/actionSheet.js b/src/components/actionSheet/actionSheet.js index c56f42a9d..1c8992bf5 100644 --- a/src/components/actionSheet/actionSheet.js +++ b/src/components/actionSheet/actionSheet.js @@ -73,7 +73,7 @@ function getPosition(options, dlg) { } function centerFocus(elem, horiz, on) { - require(['scrollHelper'], function (scrollHelper) { + import('scrollHelper').then(({default: scrollHelper}) => { const fn = on ? 'on' : 'off'; scrollHelper.centerFocus[fn](elem, horiz); }); diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 03fcb7656..ace35ac85 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -465,7 +465,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro function loadContent(ctx, route, html, request) { - html = globalize.translateDocument(html, route.dictionary); + html = globalize.translateHtml(html, route.dictionary); request.view = html; viewManager.loadView(request); diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 52d5ed202..1c59a7ae9 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1160,10 +1160,10 @@ import 'programStyles'; /** * Imports the refresh indicator element. */ - function requireRefreshIndicator() { + function importRefreshIndicator() { if (!refreshIndicatorLoaded) { refreshIndicatorLoaded = true; - require(['emby-itemrefreshindicator']); + import('emby-itemrefreshindicator'); } } @@ -1414,7 +1414,7 @@ import 'programStyles'; if (item.Type === 'CollectionFolder' || item.CollectionType) { const refreshClass = item.RefreshProgress ? '' : ' class="hide"'; indicatorsHtml += '
'; - requireRefreshIndicator(); + importRefreshIndicator(); } if (indicatorsHtml) { @@ -1495,7 +1495,7 @@ import 'programStyles'; const userData = item.UserData || {}; if (itemHelper.canMarkPlayed(item)) { - require(['emby-playstatebutton']); + import('emby-playstatebutton'); html += ''; } @@ -1503,7 +1503,7 @@ import 'programStyles'; const likes = userData.Likes == null ? '' : userData.Likes; - require(['emby-ratingbutton']); + import('emby-ratingbutton'); html += ''; } diff --git a/src/components/directorybrowser/directorybrowser.js b/src/components/directorybrowser/directorybrowser.js index fbe99154f..41744bdcb 100644 --- a/src/components/directorybrowser/directorybrowser.js +++ b/src/components/directorybrowser/directorybrowser.js @@ -157,7 +157,7 @@ import 'emby-button'; } function alertTextWithOptions(options) { - require(['alert'], alert => { + import('alert').then(({default: alert}) => { alert(options); }); } diff --git a/src/components/filterdialog/filterdialog.js b/src/components/filterdialog/filterdialog.js index 041fa82e7..df17c19de 100644 --- a/src/components/filterdialog/filterdialog.js +++ b/src/components/filterdialog/filterdialog.js @@ -412,7 +412,7 @@ import 'css!./style.css'; dlg.classList.add('background-theme-a'); dlg.classList.add('formDialog'); dlg.classList.add('filterDialog'); - dlg.innerHTML = globalize.translateDocument(template); + dlg.innerHTML = globalize.translateHtml(template); setVisibility(dlg, this.options); dialogHelper.open(dlg); dlg.addEventListener('close', resolve); diff --git a/src/components/filtermenu/filtermenu.js b/src/components/filtermenu/filtermenu.js index c189856e7..936e2b040 100644 --- a/src/components/filtermenu/filtermenu.js +++ b/src/components/filtermenu/filtermenu.js @@ -286,7 +286,7 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', html += template; - dlg.innerHTML = globalize.translateDocument(html, 'core'); + dlg.innerHTML = globalize.translateHtml(html, 'core'); var settingElements = dlg.querySelectorAll('.viewSetting'); for (var i = 0, length = settingElements.length; i < length; i++) { diff --git a/src/components/guide/guide-settings.js b/src/components/guide/guide-settings.js index 7409a7e94..77a363725 100644 --- a/src/components/guide/guide-settings.js +++ b/src/components/guide/guide-settings.js @@ -114,7 +114,7 @@ define(['dialogHelper', 'globalize', 'userSettings', 'layoutManager', 'connectio var html = ''; - html += globalize.translateDocument(template, 'core'); + html += globalize.translateHtml(template, 'core'); dlg.innerHTML = html; diff --git a/src/components/guide/guide.js b/src/components/guide/guide.js index 223d3a206..4ae204122 100644 --- a/src/components/guide/guide.js +++ b/src/components/guide/guide.js @@ -1151,7 +1151,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', context.classList.add('tvguide'); - context.innerHTML = globalize.translateDocument(template, 'core'); + context.innerHTML = globalize.translateHtml(template, 'core'); programGrid = context.querySelector('.programGrid'); var timeslotHeaders = context.querySelector('.timeslotHeaders'); diff --git a/src/components/homeScreenSettings/homeScreenSettings.js b/src/components/homeScreenSettings/homeScreenSettings.js index 5e7d6b4c5..6d6c26fce 100644 --- a/src/components/homeScreenSettings/homeScreenSettings.js +++ b/src/components/homeScreenSettings/homeScreenSettings.js @@ -464,7 +464,7 @@ import 'emby-checkbox'; template = template.replace(`{section${i}label}`, globalize.translate('LabelHomeScreenSectionValue', i)); } - options.element.innerHTML = globalize.translateDocument(template, 'core'); + options.element.innerHTML = globalize.translateHtml(template, 'core'); options.element.querySelector('.viewOrderList').addEventListener('click', onSectionOrderListClick); options.element.querySelector('form').addEventListener('submit', onSubmit.bind(self)); diff --git a/src/components/imageDownloader/imageDownloader.js b/src/components/imageDownloader/imageDownloader.js index a3965279c..fbe98c532 100644 --- a/src/components/imageDownloader/imageDownloader.js +++ b/src/components/imageDownloader/imageDownloader.js @@ -339,7 +339,7 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image var dlg = dialogHelper.createDialog(dialogOptions); - dlg.innerHTML = globalize.translateDocument(template, 'core'); + dlg.innerHTML = globalize.translateHtml(template, 'core'); if (layoutManager.tv) { scrollHelper.centerFocus.on(dlg, false); diff --git a/src/components/imageOptionsEditor/imageOptionsEditor.js b/src/components/imageOptionsEditor/imageOptionsEditor.js index 257921dfa..22dcf57dc 100644 --- a/src/components/imageOptionsEditor/imageOptionsEditor.js +++ b/src/components/imageOptionsEditor/imageOptionsEditor.js @@ -92,7 +92,7 @@ define(['globalize', 'dom', 'dialogHelper', 'emby-checkbox', 'emby-select', 'emb scrollY: false }); dlg.classList.add('formDialog'); - dlg.innerHTML = globalize.translateDocument(template); + dlg.innerHTML = globalize.translateHtml(template); dlg.addEventListener('close', function () { saveValues(dlg, options); }); diff --git a/src/components/imageUploader/imageUploader.js b/src/components/imageUploader/imageUploader.js index 3783b8faf..3cf7aa000 100644 --- a/src/components/imageUploader/imageUploader.js +++ b/src/components/imageUploader/imageUploader.js @@ -161,7 +161,7 @@ import 'css!./style'; dlg.classList.add('formDialog'); - dlg.innerHTML = globalize.translateDocument(template, 'core'); + dlg.innerHTML = globalize.translateHtml(template, 'core'); if (layoutManager.tv) { scrollHelper.centerFocus.on(dlg, false); diff --git a/src/components/imageeditor/imageeditor.js b/src/components/imageeditor/imageeditor.js index 93495eec0..0a873fa4c 100644 --- a/src/components/imageeditor/imageeditor.js +++ b/src/components/imageeditor/imageeditor.js @@ -464,7 +464,7 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', dlg.classList.add('formDialog'); - dlg.innerHTML = globalize.translateDocument(template, 'core'); + dlg.innerHTML = globalize.translateHtml(template, 'core'); if (layoutManager.tv) { scrollHelper.centerFocus.on(dlg, false); diff --git a/src/components/itemMediaInfo/itemMediaInfo.js b/src/components/itemMediaInfo/itemMediaInfo.js index 9c2c8c966..c3fd9e0d0 100644 --- a/src/components/itemMediaInfo/itemMediaInfo.js +++ b/src/components/itemMediaInfo/itemMediaInfo.js @@ -150,7 +150,7 @@ import 'flexStyles'; const dlg = dialogHelper.createDialog(dialogOptions); dlg.classList.add('formDialog'); let html = ''; - html += globalize.translateDocument(template, 'core'); + html += globalize.translateHtml(template, 'core'); dlg.innerHTML = html; if (layoutManager.tv) { dlg.querySelector('.formDialogContent'); diff --git a/src/components/itemidentifier/itemidentifier.js b/src/components/itemidentifier/itemidentifier.js index 6f638dc27..11e164ded 100644 --- a/src/components/itemidentifier/itemidentifier.js +++ b/src/components/itemidentifier/itemidentifier.js @@ -382,7 +382,7 @@ import 'cardStyle'; dlg.classList.add('recordingDialog'); let html = ''; - html += globalize.translateDocument(template, 'core'); + html += globalize.translateHtml(template, 'core'); dlg.innerHTML = html; @@ -464,7 +464,7 @@ import 'cardStyle'; dlg.classList.add('recordingDialog'); let html = ''; - html += globalize.translateDocument(template, 'core'); + html += globalize.translateHtml(template, 'core'); dlg.innerHTML = html; diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index 832a6ffc5..6aea530d1 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -359,7 +359,7 @@ define(['globalize', 'dom', 'emby-checkbox', 'emby-select', 'emby-input'], funct xhr.open('GET', 'components/libraryoptionseditor/libraryoptionseditor.template.html', true); xhr.onload = function(e) { var template = this.response; - parent.innerHTML = globalize.translateDocument(template); + parent.innerHTML = globalize.translateHtml(template); populateRefreshInterval(parent.querySelector('#selectAutoRefreshInterval')); var promises = [populateLanguages(parent), populateCountries(parent.querySelector('#selectCountry'))]; Promise.all(promises).then(function() { diff --git a/src/components/mediaLibraryCreator/mediaLibraryCreator.js b/src/components/mediaLibraryCreator/mediaLibraryCreator.js index c1b7453ca..4e0d7b026 100644 --- a/src/components/mediaLibraryCreator/mediaLibraryCreator.js +++ b/src/components/mediaLibraryCreator/mediaLibraryCreator.js @@ -211,7 +211,7 @@ export class showEditor { dlg.classList.add('background-theme-a'); dlg.classList.add('dlg-librarycreator'); dlg.classList.add('formDialog'); - dlg.innerHTML = globalize.translateDocument(template); + dlg.innerHTML = globalize.translateHtml(template); initEditor(dlg, options.collectionTypeOptions); dlg.addEventListener('close', onDialogClosed); dialogHelper.open(dlg); diff --git a/src/components/mediaLibraryEditor/mediaLibraryEditor.js b/src/components/mediaLibraryEditor/mediaLibraryEditor.js index 4577b6713..1cee6984d 100644 --- a/src/components/mediaLibraryEditor/mediaLibraryEditor.js +++ b/src/components/mediaLibraryEditor/mediaLibraryEditor.js @@ -226,7 +226,7 @@ export class showEditor { dlg.classList.add('ui-body-a'); dlg.classList.add('background-theme-a'); dlg.classList.add('formDialog'); - dlg.innerHTML = globalize.translateDocument(template); + dlg.innerHTML = globalize.translateHtml(template); dlg.querySelector('.formDialogHeaderTitle').innerHTML = options.library.Name; initEditor(dlg, options); dlg.addEventListener('close', onDialogClosed); diff --git a/src/components/metadataEditor/metadataEditor.js b/src/components/metadataEditor/metadataEditor.js index eb387828f..28bc8a6da 100644 --- a/src/components/metadataEditor/metadataEditor.js +++ b/src/components/metadataEditor/metadataEditor.js @@ -1,9 +1,30 @@ -define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loading', 'focusManager', 'connectionManager', 'globalize', 'require', 'shell', 'emby-checkbox', 'emby-input', 'emby-select', 'listViewStyle', 'emby-textarea', 'emby-button', 'paper-icon-button-light', 'css!./../formdialog', 'clearButtonStyle', 'flexStyles'], function (itemHelper, dom, layoutManager, dialogHelper, datetime, loading, focusManager, connectionManager, globalize, require, shell) { - 'use strict'; +import itemHelper from 'itemHelper'; +import dom from 'dom'; +import layoutManager from 'layoutManager'; +import dialogHelper from 'dialogHelper'; +import datetime from 'datetime'; +import loading from 'loading'; +import focusManager from 'focusManager'; +import connectionManager from 'connectionManager'; +import globalize from 'globalize'; +import require from 'require'; +import shell from 'shell'; +import 'emby-checkbox'; +import 'emby-input'; +import 'emby-select'; +import 'listViewStyle'; +import 'emby-textarea'; +import 'emby-button'; +import 'paper-icon-button-light'; +import 'css!./../formdialog'; +import 'clearButtonStyle'; +import 'flexStyles'; - var currentContext; - var metadataEditorInfo; - var currentItem; +/* eslint-disable indent */ + + let currentContext; + let metadataEditorInfo; + let currentItem; function isDialog() { return currentContext.classList.contains('dialog'); @@ -28,11 +49,11 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi closeDialog(true); } - var apiClient = getApiClient(); + const apiClient = getApiClient(); apiClient.updateItem(item).then(function () { - var newContentType = form.querySelector('#selectContentType').value || ''; + const newContentType = form.querySelector('#selectContentType').value || ''; if ((metadataEditorInfo.ContentType || '') !== newContentType) { @@ -56,7 +77,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi } function getSelectedAirDays(form) { - var checkedItems = form.querySelectorAll('.chkAirDay:checked') || []; + const checkedItems = form.querySelectorAll('.chkAirDay:checked') || []; return Array.prototype.map.call(checkedItems, function (c) { return c.getAttribute('data-day'); }); @@ -92,7 +113,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi function getDateValue(form, element, property) { - var val = form.querySelector(element).value; + let val = form.querySelector(element).value; if (!val) { return null; @@ -100,14 +121,14 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi if (currentItem[property]) { - var date = datetime.parseISO8601Date(currentItem[property], true); + const date = datetime.parseISO8601Date(currentItem[property], true); - var parts = date.toISOString().split('T'); + const parts = date.toISOString().split('T'); // If the date is the same, preserve the time if (parts[0].indexOf(val) === 0) { - var iso = parts[1]; + const iso = parts[1]; val += 'T' + iso; } @@ -120,9 +141,9 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi loading.show(); - var form = this; + const form = this; - var item = { + const item = { Id: currentItem.Id, Name: form.querySelector('#txtName').value, OriginalTitle: form.querySelector('#txtOriginalName').value, @@ -168,9 +189,9 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi item.ProviderIds = Object.assign({}, currentItem.ProviderIds); - var idElements = form.querySelectorAll('.txtExternalId'); + const idElements = form.querySelectorAll('.txtExternalId'); Array.prototype.map.call(idElements, function (idElem) { - var providerKey = idElem.getAttribute('data-providerkey'); + const providerKey = idElem.getAttribute('data-providerkey'); item.ProviderIds[providerKey] = idElem.value; }); @@ -179,7 +200,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi if (currentItem.Type === 'Person') { - var placeOfBirth = form.querySelector('#txtPlaceOfBirth').value; + const placeOfBirth = form.querySelector('#txtPlaceOfBirth').value; item.ProductionLocations = placeOfBirth ? [placeOfBirth] : []; } @@ -187,11 +208,11 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi if (currentItem.Type === 'Series') { // 600000000 - var seriesRuntime = form.querySelector('#txtSeriesRuntime').value; + const seriesRuntime = form.querySelector('#txtSeriesRuntime').value; item.RunTimeTicks = seriesRuntime ? (seriesRuntime * 600000000) : null; } - var tagline = form.querySelector('#txtTagline').value; + const tagline = form.querySelector('#txtTagline').value; item.Taglines = tagline ? [tagline] : []; submitUpdatedItem(form, item); @@ -215,8 +236,8 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi prompt.default({ label: 'Value:' }).then(function (text) { - var list = dom.parentWithClass(source, 'editableListviewContainer').querySelector('.paperList'); - var items = getListValues(list); + const list = dom.parentWithClass(source, 'editableListviewContainer').querySelector('.paperList'); + const items = getListValues(list); items.push(text); populateListView(list, items, sortCallback); }); @@ -224,7 +245,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi } function removeElementFromList(source) { - var el = dom.parentWithClass(source, 'listItem'); + const el = dom.parentWithClass(source, 'listItem'); el.parentNode.removeChild(el); } @@ -234,7 +255,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi personEditor.show(person).then(function (updatedPerson) { - var isNew = index === -1; + const isNew = index === -1; if (isNew) { currentItem.People.push(updatedPerson); @@ -247,13 +268,13 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi function onEditorClick(e) { - var btnRemoveFromEditorList = dom.parentWithClass(e.target, 'btnRemoveFromEditorList'); + const btnRemoveFromEditorList = dom.parentWithClass(e.target, 'btnRemoveFromEditorList'); if (btnRemoveFromEditorList) { removeElementFromList(btnRemoveFromEditorList); return; } - var btnAddTextItem = dom.parentWithClass(e.target, 'btnAddTextItem'); + const btnAddTextItem = dom.parentWithClass(e.target, 'btnAddTextItem'); if (btnAddTextItem) { addElementToList(btnAddTextItem); } @@ -264,7 +285,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi } function bindAll(elems, eventName, fn) { - for (var i = 0, length = elems.length; i < length; i++) { + for (let i = 0, length = elems.length; i < length; i++) { elems[i].addEventListener(eventName, fn); } } @@ -272,11 +293,11 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi function init(context, apiClient) { context.querySelector('.externalIds').addEventListener('click', function (e) { - var btnOpenExternalId = dom.parentWithClass(e.target, 'btnOpenExternalId'); + const btnOpenExternalId = dom.parentWithClass(e.target, 'btnOpenExternalId'); if (btnOpenExternalId) { - var field = context.querySelector('#' + btnOpenExternalId.getAttribute('data-fieldid')); + const field = context.querySelector('#' + btnOpenExternalId.getAttribute('data-fieldid')); - var formatString = field.getAttribute('data-formatstring'); + const formatString = field.getAttribute('data-formatstring'); if (field.value) { shell.openUrl(formatString.replace('{0}', field.value)); @@ -311,7 +332,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi context.removeEventListener('click', onEditorClick); context.addEventListener('click', onEditorClick); - var form = context.querySelector('form'); + const form = context.querySelector('form'); form.removeEventListener('submit', onSubmit); form.addEventListener('submit', onSubmit); @@ -322,15 +343,15 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi context.querySelector('#peopleList').addEventListener('click', function (e) { - var index; - var btnDeletePerson = dom.parentWithClass(e.target, 'btnDeletePerson'); + let index; + const btnDeletePerson = dom.parentWithClass(e.target, 'btnDeletePerson'); if (btnDeletePerson) { index = parseInt(btnDeletePerson.getAttribute('data-index')); currentItem.People.splice(index, 1); populatePeople(context, currentItem.People); } - var btnEditPerson = dom.parentWithClass(e.target, 'btnEditPerson'); + const btnEditPerson = dom.parentWithClass(e.target, 'btnEditPerson'); if (btnEditPerson) { index = parseInt(btnEditPerson.getAttribute('data-index')); editPerson(context, currentItem.People[index], index); @@ -340,7 +361,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi function getItem(itemId, serverId) { - var apiClient = connectionManager.getApiClient(serverId); + const apiClient = connectionManager.getApiClient(serverId); if (itemId) { return apiClient.getItem(apiClient.getCurrentUserId(), itemId); @@ -351,7 +372,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi function getEditorConfig(itemId, serverId) { - var apiClient = connectionManager.getApiClient(serverId); + const apiClient = connectionManager.getApiClient(serverId); if (itemId) { return apiClient.getJSON(apiClient.getUrl('Items/' + itemId + '/MetadataEditor')); @@ -362,13 +383,13 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi function populateCountries(select, allCountries) { - var html = ''; + let html = ''; html += ""; - for (var i = 0, length = allCountries.length; i < length; i++) { + for (let i = 0, length = allCountries.length; i < length; i++) { - var culture = allCountries[i]; + const culture = allCountries[i]; html += "'; } @@ -378,13 +399,13 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi function populateLanguages(select, languages) { - var html = ''; + let html = ''; html += ""; - for (var i = 0, length = languages.length; i < length; i++) { + for (let i = 0, length = languages.length; i < length; i++) { - var culture = languages[i]; + const culture = languages[i]; html += "'; } @@ -400,41 +421,41 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi showElement('#fldContentType', context); } - var html = metadataInfo.ContentTypeOptions.map(function (i) { + const html = metadataInfo.ContentTypeOptions.map(function (i) { return ''; }).join(''); - var selectEl = context.querySelector('#selectContentType'); + const selectEl = context.querySelector('#selectContentType'); selectEl.innerHTML = html; selectEl.value = metadataInfo.ContentType || ''; } function loadExternalIds(context, item, externalIds) { - var html = ''; + let html = ''; - var providerIds = item.ProviderIds || {}; + const providerIds = item.ProviderIds || {}; - for (var i = 0, length = externalIds.length; i < length; i++) { + for (let i = 0, length = externalIds.length; i < length; i++) { - var idInfo = externalIds[i]; + const idInfo = externalIds[i]; - var id = 'txt1' + idInfo.Key; - var formatString = idInfo.UrlFormatString || ''; + const id = 'txt1' + idInfo.Key; + const formatString = idInfo.UrlFormatString || ''; - var fullName = idInfo.Name; + let fullName = idInfo.Name; if (idInfo.Type) { fullName = idInfo.Name + ' ' + globalize.translate(idInfo.Type); } - var labelText = globalize.translate('LabelDynamicExternalId', fullName); + const labelText = globalize.translate('LabelDynamicExternalId', fullName); html += '
'; html += '
'; - var value = providerIds[idInfo.Key] || ''; + const value = providerIds[idInfo.Key] || ''; html += '
'; html += ''; @@ -448,7 +469,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi html += '
'; } - var elem = context.querySelector('.externalIds', context); + const elem = context.querySelector('.externalIds', context); elem.innerHTML = html; if (externalIds.length) { @@ -465,7 +486,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi context = context || document; if (typeof selector === 'string') { - var elements = multiple ? context.querySelectorAll(selector) : [context.querySelector(selector)]; + const elements = multiple ? context.querySelectorAll(selector) : [context.querySelector(selector)]; Array.prototype.forEach.call(elements, function (el) { if (el) { @@ -484,7 +505,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi context = context || document; if (typeof selector === 'string') { - var elements = multiple ? context.querySelectorAll(selector) : [context.querySelector(selector)]; + const elements = multiple ? context.querySelectorAll(selector) : [context.querySelector(selector)]; Array.prototype.forEach.call(elements, function (el) { if (el) { @@ -686,7 +707,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi function fillItemInfo(context, item, parentalRatingOptions) { - var select = context.querySelector('#selectOfficialRating'); + let select = context.querySelector('#selectOfficialRating'); populateRatings(parentalRatingOptions, select, item.OfficialRating); @@ -698,7 +719,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi select.value = item.CustomRating || ''; - var selectStatus = context.querySelector('#selectStatus'); + const selectStatus = context.querySelector('#selectStatus'); populateStatus(selectStatus); selectStatus.value = item.Status || ''; @@ -717,8 +738,8 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi populateListView(context.querySelector('#listTags'), item.Tags); - var lockData = (item.LockData || false); - var chkLockData = context.querySelector('#chkLockData'); + const lockData = (item.LockData || false); + const chkLockData = context.querySelector('#chkLockData'); chkLockData.checked = lockData; if (chkLockData.checked) { hideElement('.providerSettingsContainer', context); @@ -756,7 +777,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi return a.Name; }).join(';'); - var date; + let date; if (item.DateCreated) { try { @@ -798,7 +819,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi context.querySelector('#txtAirTime').value = item.AirTime || ''; - var placeofBirth = item.ProductionLocations && item.ProductionLocations.length ? item.ProductionLocations[0] : ''; + const placeofBirth = item.ProductionLocations && item.ProductionLocations.length ? item.ProductionLocations[0] : ''; context.querySelector('#txtPlaceOfBirth').value = placeofBirth; context.querySelector('#txtOriginalAspectRatio').value = item.AspectRatio || ''; @@ -808,7 +829,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi if (item.RunTimeTicks) { - var minutes = item.RunTimeTicks / 600000000; + const minutes = item.RunTimeTicks / 600000000; context.querySelector('#txtSeriesRuntime').value = Math.round(minutes); } else { @@ -818,18 +839,16 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi function populateRatings(allParentalRatings, select, currentValue) { - var html = ''; + let html = ''; html += ""; - var ratings = []; - var i; - var length; - var rating; + const ratings = []; + let rating; - var currentValueFound = false; + let currentValueFound = false; - for (i = 0, length = allParentalRatings.length; i < length; i++) { + for (let i = 0, length = allParentalRatings.length; i < length; i++) { rating = allParentalRatings[i]; @@ -844,7 +863,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi ratings.push({ Name: currentValue, Value: currentValue }); } - for (i = 0, length = ratings.length; i < length; i++) { + for (let i = 0, length = ratings.length; i < length; i++) { rating = ratings[i]; @@ -855,7 +874,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi } function populateStatus(select) { - var html = ''; + let html = ''; html += ""; html += "'; @@ -873,8 +892,8 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi } else { items = sortCallback(items); } - var html = ''; - for (var i = 0; i < items.length; i++) { + let html = ''; + for (let i = 0; i < items.length; i++) { html += '
'; html += ''; @@ -897,14 +916,14 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi function populatePeople(context, people) { - var lastType = ''; - var html = ''; + let lastType = ''; + let html = ''; - var elem = context.querySelector('#peopleList'); + const elem = context.querySelector('#peopleList'); - for (var i = 0, length = people.length; i < length; i++) { + for (let i = 0, length = people.length; i < length; i++) { - var person = people[i]; + const person = people[i]; html += '
'; @@ -934,13 +953,13 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi function getLockedFieldsHtml(fields, currentFields) { - var html = ''; - for (var i = 0; i < fields.length; i++) { + let html = ''; + for (let i = 0; i < fields.length; i++) { - var field = fields[i]; - var name = field.name; - var value = field.value || field.name; - var checkedHtml = currentFields.indexOf(value) === -1 ? ' checked' : ''; + const field = fields[i]; + const name = field.name; + const value = field.value || field.name; + const checkedHtml = currentFields.indexOf(value) === -1 ? ' checked' : ''; html += '