';
- for (var i = 0; i < plugins.length; i++) {
- var plugin = plugins[i];
+ for (let i = 0; i < plugins.length; i++) {
+ const plugin = plugins[i];
html += '
';
- var isChecked = libraryOptionsForType.ImageFetchers ? -1 !== libraryOptionsForType.ImageFetchers.indexOf(plugin.Name) : plugin.DefaultEnabled;
- var checkedHtml = isChecked ? ' checked="checked"' : '';
+ const isChecked = libraryOptionsForType.ImageFetchers ? libraryOptionsForType.ImageFetchers.includes(plugin.Name) : plugin.DefaultEnabled;
+ const checkedHtml = isChecked ? ' checked="checked"' : '';
html += '
';
html += '
';
html += '
';
@@ -239,10 +249,10 @@ define(['globalize', 'dom', 'emby-checkbox', 'emby-select', 'emby-input'], funct
}
function renderImageFetchers(page, availableOptions, libraryOptions) {
- var html = '';
- var elem = page.querySelector('.imageFetchers');
- for (var i = 0; i < availableOptions.TypeOptions.length; i++) {
- var availableTypeOptions = availableOptions.TypeOptions[i];
+ let html = '';
+ const elem = page.querySelector('.imageFetchers');
+ for (let i = 0; i < availableOptions.TypeOptions.length; i++) {
+ const availableTypeOptions = availableOptions.TypeOptions[i];
html += getImageFetchersForTypeHtml(availableTypeOptions, getTypeOptions(libraryOptions, availableTypeOptions.Type) || {});
}
elem.innerHTML = html;
@@ -259,11 +269,11 @@ define(['globalize', 'dom', 'emby-checkbox', 'emby-select', 'emby-input'], funct
}
function populateMetadataSettings(parent, contentType, isNewLibrary) {
- var isNewLibrary = parent.classList.contains('newlibrary');
+ isNewLibrary = parent.classList.contains('newlibrary');
return ApiClient.getJSON(ApiClient.getUrl('Libraries/AvailableOptions', {
LibraryContentType: contentType,
IsNewLibrary: isNewLibrary
- })).then(function(availableOptions) {
+ })).then(availableOptions => {
currentAvailableOptions = availableOptions;
parent.availableOptions = availableOptions;
renderMetadataSavers(parent, availableOptions.MetadataSavers);
@@ -272,14 +282,14 @@ define(['globalize', 'dom', 'emby-checkbox', 'emby-select', 'emby-input'], funct
renderSubtitleFetchers(parent, availableOptions, {});
renderImageFetchers(parent, availableOptions, {});
availableOptions.SubtitleFetchers.length ? parent.querySelector('.subtitleDownloadSettings').classList.remove('hide') : parent.querySelector('.subtitleDownloadSettings').classList.add('hide');
- }).catch(function() {
+ }).catch(() => {
return Promise.resolve();
});
}
function adjustSortableListElement(elem) {
- var btnSortable = elem.querySelector('.btnSortable');
- var inner = btnSortable.querySelector('.material-icons');
+ const btnSortable = elem.querySelector('.btnSortable');
+ const inner = btnSortable.querySelector('.material-icons');
if (elem.previousSibling) {
btnSortable.title = globalize.translate('ButtonUp');
btnSortable.classList.add('btnSortableMoveUp');
@@ -296,22 +306,22 @@ define(['globalize', 'dom', 'emby-checkbox', 'emby-select', 'emby-input'], funct
}
function showImageOptionsForType(type) {
- require(['imageoptionseditor'], function(ImageOptionsEditor) {
- var typeOptions = getTypeOptions(currentLibraryOptions, type);
+ import('imageoptionseditor').then(({default: ImageOptionsEditor}) => {
+ let typeOptions = getTypeOptions(currentLibraryOptions, type);
if (!typeOptions) {
typeOptions = {
Type: type
};
currentLibraryOptions.TypeOptions.push(typeOptions);
}
- var availableOptions = getTypeOptions(currentAvailableOptions || {}, type);
- var imageOptionsEditor = new ImageOptionsEditor();
+ const availableOptions = getTypeOptions(currentAvailableOptions || {}, type);
+ const imageOptionsEditor = new ImageOptionsEditor();
imageOptionsEditor.show(type, typeOptions, availableOptions);
});
}
function onImageFetchersContainerClick(e) {
- var btnImageOptionsForType = dom.parentWithClass(e.target, 'btnImageOptionsForType');
+ const btnImageOptionsForType = dom.parentWithClass(e.target, 'btnImageOptionsForType');
if (btnImageOptionsForType) {
return void showImageOptionsForType(dom.parentWithClass(btnImageOptionsForType, 'imageFetcher').getAttribute('data-type'));
}
@@ -319,18 +329,18 @@ define(['globalize', 'dom', 'emby-checkbox', 'emby-select', 'emby-input'], funct
}
function onSortableContainerClick(e) {
- var btnSortable = dom.parentWithClass(e.target, 'btnSortable');
+ const btnSortable = dom.parentWithClass(e.target, 'btnSortable');
if (btnSortable) {
- var li = dom.parentWithClass(btnSortable, 'sortableOption');
- var list = dom.parentWithClass(li, 'paperList');
+ const li = dom.parentWithClass(btnSortable, 'sortableOption');
+ const list = dom.parentWithClass(li, 'paperList');
if (btnSortable.classList.contains('btnSortableMoveDown')) {
- var next = li.nextSibling;
+ const next = li.nextSibling;
if (next) {
li.parentNode.removeChild(li);
next.parentNode.insertBefore(li, next.nextSibling);
}
} else {
- var prev = li.previousSibling;
+ const prev = li.previousSibling;
if (prev) {
li.parentNode.removeChild(li);
prev.parentNode.insertBefore(li, prev);
@@ -347,41 +357,38 @@ define(['globalize', 'dom', 'emby-checkbox', 'emby-select', 'emby-input'], funct
parent.querySelector('.imageFetchers').addEventListener('click', onImageFetchersContainerClick);
}
- function embed(parent, contentType, libraryOptions) {
+ export function embed(parent, contentType, libraryOptions) {
currentLibraryOptions = {
TypeOptions: []
};
currentAvailableOptions = null;
- var isNewLibrary = null === libraryOptions;
+ const isNewLibrary = null === libraryOptions;
isNewLibrary && parent.classList.add('newlibrary');
- return new Promise(function(resolve, reject) {
- var xhr = new XMLHttpRequest;
- xhr.open('GET', 'components/libraryoptionseditor/libraryoptionseditor.template.html', true);
- xhr.onload = function(e) {
- var template = this.response;
+ return new Promise((resolve) => {
+ //TODO: remove require
+ require(['text!./components/libraryoptionseditor/libraryoptionseditor.template.html'], function (template) {
parent.innerHTML = globalize.translateDocument(template);
populateRefreshInterval(parent.querySelector('#selectAutoRefreshInterval'));
- var promises = [populateLanguages(parent), populateCountries(parent.querySelector('#selectCountry'))];
- Promise.all(promises).then(function() {
- return setContentType(parent, contentType).then(function() {
+ const promises = [populateLanguages(parent), populateCountries(parent.querySelector('#selectCountry'))];
+ Promise.all(promises).then(() => {
+ return setContentType(parent, contentType).then(() => {
libraryOptions && setLibraryOptions(parent, libraryOptions);
bindEvents(parent);
resolve();
});
});
- };
- xhr.send();
+ });
});
}
- function setAdvancedVisible(parent, visible) {
- var elems = parent.querySelectorAll('.advanced');
- for (var i = 0; i < elems.length; i++) {
+ export function setAdvancedVisible(parent, visible) {
+ const elems = parent.querySelectorAll('.advanced');
+ for (let i = 0; i < elems.length; i++) {
visible ? elems[i].classList.remove('advancedHide') : elems[i].classList.add('advancedHide');
}
}
- function setContentType(parent, contentType) {
+ export function setContentType(parent, contentType) {
if (contentType === 'homevideos' || contentType === 'photos') {
parent.querySelector('.chkEnablePhotosContainer').classList.remove('hide');
} else {
@@ -422,47 +429,47 @@ define(['globalize', 'dom', 'emby-checkbox', 'emby-select', 'emby-input'], funct
}
function setSubtitleFetchersIntoOptions(parent, options) {
- options.DisabledSubtitleFetchers = Array.prototype.map.call(Array.prototype.filter.call(parent.querySelectorAll('.chkSubtitleFetcher'), function(elem) {
+ options.DisabledSubtitleFetchers = Array.prototype.map.call(Array.prototype.filter.call(parent.querySelectorAll('.chkSubtitleFetcher'), elem => {
return !elem.checked;
- }), function(elem) {
+ }), elem => {
return elem.getAttribute('data-pluginname');
});
- options.SubtitleFetcherOrder = Array.prototype.map.call(parent.querySelectorAll('.subtitleFetcherItem'), function(elem) {
+ options.SubtitleFetcherOrder = Array.prototype.map.call(parent.querySelectorAll('.subtitleFetcherItem'), elem => {
return elem.getAttribute('data-pluginname');
});
}
function setMetadataFetchersIntoOptions(parent, options) {
- var sections = parent.querySelectorAll('.metadataFetcher');
- for (var i = 0; i < sections.length; i++) {
- var section = sections[i];
- var type = section.getAttribute('data-type');
- var typeOptions = getTypeOptions(options, type);
+ const sections = parent.querySelectorAll('.metadataFetcher');
+ for (let i = 0; i < sections.length; i++) {
+ const section = sections[i];
+ const type = section.getAttribute('data-type');
+ let typeOptions = getTypeOptions(options, type);
if (!typeOptions) {
typeOptions = {
Type: type
};
options.TypeOptions.push(typeOptions);
}
- typeOptions.MetadataFetchers = Array.prototype.map.call(Array.prototype.filter.call(section.querySelectorAll('.chkMetadataFetcher'), function(elem) {
+ typeOptions.MetadataFetchers = Array.prototype.map.call(Array.prototype.filter.call(section.querySelectorAll('.chkMetadataFetcher'), elem => {
return elem.checked;
- }), function(elem) {
+ }), elem => {
return elem.getAttribute('data-pluginname');
});
- typeOptions.MetadataFetcherOrder = Array.prototype.map.call(section.querySelectorAll('.metadataFetcherItem'), function(elem) {
+ typeOptions.MetadataFetcherOrder = Array.prototype.map.call(section.querySelectorAll('.metadataFetcherItem'), elem => {
return elem.getAttribute('data-pluginname');
});
}
}
function setImageFetchersIntoOptions(parent, options) {
- var sections = parent.querySelectorAll('.imageFetcher');
- for (var i = 0; i < sections.length; i++) {
- var section = sections[i];
- var type = section.getAttribute('data-type');
- var typeOptions = getTypeOptions(options, type);
+ const sections = parent.querySelectorAll('.imageFetcher');
+ for (let i = 0; i < sections.length; i++) {
+ const section = sections[i];
+ const type = section.getAttribute('data-type');
+ let typeOptions = getTypeOptions(options, type);
if (!typeOptions) {
typeOptions = {
Type: type
@@ -470,23 +477,23 @@ define(['globalize', 'dom', 'emby-checkbox', 'emby-select', 'emby-input'], funct
options.TypeOptions.push(typeOptions);
}
- typeOptions.ImageFetchers = Array.prototype.map.call(Array.prototype.filter.call(section.querySelectorAll('.chkImageFetcher'), function(elem) {
+ typeOptions.ImageFetchers = Array.prototype.map.call(Array.prototype.filter.call(section.querySelectorAll('.chkImageFetcher'), elem => {
return elem.checked;
- }), function(elem) {
+ }), elem => {
return elem.getAttribute('data-pluginname');
});
- typeOptions.ImageFetcherOrder = Array.prototype.map.call(section.querySelectorAll('.imageFetcherItem'), function(elem) {
+ typeOptions.ImageFetcherOrder = Array.prototype.map.call(section.querySelectorAll('.imageFetcherItem'), elem => {
return elem.getAttribute('data-pluginname');
});
}
}
- function setImageOptionsIntoOptions(parent, options) {
- var originalTypeOptions = (currentLibraryOptions || {}).TypeOptions || [];
- for (var i = 0; i < originalTypeOptions.length; i++) {
- var originalTypeOption = originalTypeOptions[i];
- var typeOptions = getTypeOptions(options, originalTypeOption.Type);
+ function setImageOptionsIntoOptions(options) {
+ const originalTypeOptions = (currentLibraryOptions || {}).TypeOptions || [];
+ for (let i = 0; i < originalTypeOptions.length; i++) {
+ const originalTypeOption = originalTypeOptions[i];
+ let typeOptions = getTypeOptions(options, originalTypeOption.Type);
if (!typeOptions) {
typeOptions = {
@@ -498,8 +505,8 @@ define(['globalize', 'dom', 'emby-checkbox', 'emby-select', 'emby-input'], funct
}
}
- function getLibraryOptions(parent) {
- var options = {
+ export function getLibraryOptions(parent) {
+ const options = {
EnableArchiveMediaFiles: false,
EnablePhotos: parent.querySelector('.chkEnablePhotos').checked,
EnableRealtimeMonitor: parent.querySelector('.chkEnableRealtimeMonitor').checked,
@@ -520,39 +527,39 @@ define(['globalize', 'dom', 'emby-checkbox', 'emby-select', 'emby-input'], funct
SkipSubtitlesIfAudioTrackMatches: parent.querySelector('#chkSkipIfAudioTrackPresent').checked,
SaveSubtitlesWithMedia: parent.querySelector('#chkSaveSubtitlesLocally').checked,
RequirePerfectSubtitleMatch: parent.querySelector('#chkRequirePerfectMatch').checked,
- MetadataSavers: Array.prototype.map.call(Array.prototype.filter.call(parent.querySelectorAll('.chkMetadataSaver'), function(elem) {
+ MetadataSavers: Array.prototype.map.call(Array.prototype.filter.call(parent.querySelectorAll('.chkMetadataSaver'), elem => {
return elem.checked;
- }), function(elem) {
+ }), elem => {
return elem.getAttribute('data-pluginname');
}),
TypeOptions: []
};
- options.LocalMetadataReaderOrder = Array.prototype.map.call(parent.querySelectorAll('.localReaderOption'), function(elem) {
+ options.LocalMetadataReaderOrder = Array.prototype.map.call(parent.querySelectorAll('.localReaderOption'), elem => {
return elem.getAttribute('data-pluginname');
});
- options.SubtitleDownloadLanguages = Array.prototype.map.call(Array.prototype.filter.call(parent.querySelectorAll('.chkSubtitleLanguage'), function(elem) {
+ options.SubtitleDownloadLanguages = Array.prototype.map.call(Array.prototype.filter.call(parent.querySelectorAll('.chkSubtitleLanguage'), elem => {
return elem.checked;
- }), function(elem) {
+ }), elem => {
return elem.getAttribute('data-lang');
});
setSubtitleFetchersIntoOptions(parent, options);
setMetadataFetchersIntoOptions(parent, options);
setImageFetchersIntoOptions(parent, options);
- setImageOptionsIntoOptions(parent, options);
+ setImageOptionsIntoOptions(options);
return options;
}
function getOrderedPlugins(plugins, configuredOrder) {
plugins = plugins.slice(0);
- plugins.sort(function(a, b) {
+ plugins.sort((a, b) => {
return a = configuredOrder.indexOf(a.Name), b = configuredOrder.indexOf(b.Name), a < b ? -1 : a > b ? 1 : 0;
});
return plugins;
}
- function setLibraryOptions(parent, options) {
+ export function setLibraryOptions(parent, options) {
currentLibraryOptions = options;
currentAvailableOptions = parent.availableOptions;
parent.querySelector('#selectLanguage').value = options.PreferredMetadataLanguage || '';
@@ -573,11 +580,11 @@ define(['globalize', 'dom', 'emby-checkbox', 'emby-select', 'emby-input'], funct
parent.querySelector('#chkSaveSubtitlesLocally').checked = options.SaveSubtitlesWithMedia;
parent.querySelector('#chkSkipIfAudioTrackPresent').checked = options.SkipSubtitlesIfAudioTrackMatches;
parent.querySelector('#chkRequirePerfectMatch').checked = options.RequirePerfectSubtitleMatch;
- Array.prototype.forEach.call(parent.querySelectorAll('.chkMetadataSaver'), function(elem) {
- elem.checked = options.MetadataSavers ? -1 !== options.MetadataSavers.indexOf(elem.getAttribute('data-pluginname')) : 'true' === elem.getAttribute('data-defaultenabled');
+ Array.prototype.forEach.call(parent.querySelectorAll('.chkMetadataSaver'), elem => {
+ elem.checked = options.MetadataSavers ? options.MetadataSavers.includes(elem.getAttribute('data-pluginname')) : 'true' === elem.getAttribute('data-defaultenabled');
});
- Array.prototype.forEach.call(parent.querySelectorAll('.chkSubtitleLanguage'), function(elem) {
- elem.checked = !!options.SubtitleDownloadLanguages && -1 !== options.SubtitleDownloadLanguages.indexOf(elem.getAttribute('data-lang'));
+ Array.prototype.forEach.call(parent.querySelectorAll('.chkSubtitleLanguage'), elem => {
+ elem.checked = !!options.SubtitleDownloadLanguages && options.SubtitleDownloadLanguages.includes(elem.getAttribute('data-lang'));
});
renderMetadataReaders(parent, getOrderedPlugins(parent.availableOptions.MetadataReaders, options.LocalMetadataReaderOrder || []));
renderMetadataFetchers(parent, parent.availableOptions, options);
@@ -585,14 +592,14 @@ define(['globalize', 'dom', 'emby-checkbox', 'emby-select', 'emby-input'], funct
renderSubtitleFetchers(parent, parent.availableOptions, options);
}
- var currentLibraryOptions;
- var currentAvailableOptions;
+ let currentLibraryOptions;
+ let currentAvailableOptions;
- return {
- embed: embed,
- setContentType: setContentType,
- getLibraryOptions: getLibraryOptions,
- setLibraryOptions: setLibraryOptions,
- setAdvancedVisible: setAdvancedVisible
- };
-});
+/* eslint-enable indent */
+export default {
+ embed: embed,
+ setContentType: setContentType,
+ getLibraryOptions: getLibraryOptions,
+ setLibraryOptions: setLibraryOptions,
+ setAdvancedVisible: setAdvancedVisible
+};