import dom from '../../scripts/dom'; import dialogHelper from '../dialogHelper/dialogHelper'; import loading from '../loading/loading'; import layoutManager from '../layoutManager'; import globalize from '../../scripts/globalize'; import '../../elements/emby-input/emby-input'; import '../../elements/emby-button/emby-button'; import '../../elements/emby-button/paper-icon-button-light'; import '../../elements/emby-checkbox/emby-checkbox'; import '../../elements/emby-select/emby-select'; import 'material-design-icons-iconfont'; import '../formdialog.scss'; import ServerConnections from '../ServerConnections'; import toast from '../toast/toast'; /*eslint prefer-const: "error"*/ function getEditorHtml() { let html = ''; html += '
'; html += '
'; html += '
'; html += '
'; html += ''; html += '
'; html += ''; html += '
'; html += globalize.translate('RefreshDialogHelp'); html += '
'; html += ''; html += '
'; html += '
'; html += ''; html += '
'; html += '
'; html += '
'; html += '
'; return html; } function centerFocus(elem, horiz, on) { import('../../scripts/scrollHelper').then((scrollHelper) => { const fn = on ? 'on' : 'off'; scrollHelper.centerFocus[fn](elem, horiz); }); } function onSubmit(e) { loading.show(); const instance = this; const dlg = dom.parentWithClass(e.target, 'dialog'); const options = instance.options; const apiClient = ServerConnections.getApiClient(options.serverId); const replaceAllMetadata = dlg.querySelector('#selectMetadataRefreshMode').value === 'all'; const mode = dlg.querySelector('#selectMetadataRefreshMode').value === 'scan' ? 'Default' : 'FullRefresh'; const replaceAllImages = mode === 'FullRefresh' && dlg.querySelector('.chkReplaceImages').checked; options.itemIds.forEach(function (itemId) { apiClient.refreshItem(itemId, { Recursive: true, ImageRefreshMode: mode, MetadataRefreshMode: mode, ReplaceAllImages: replaceAllImages, ReplaceAllMetadata: replaceAllMetadata }); }); dialogHelper.close(dlg); toast(globalize.translate('RefreshQueued')); loading.hide(); e.preventDefault(); return false; } class RefreshDialog { constructor(options) { this.options = options; } show() { const dialogOptions = { removeOnClose: true, scrollY: false }; if (layoutManager.tv) { dialogOptions.size = 'fullscreen'; } else { dialogOptions.size = 'small'; } const dlg = dialogHelper.createDialog(dialogOptions); dlg.classList.add('formDialog'); let html = ''; const title = globalize.translate('RefreshMetadata'); html += '
'; html += ''; html += '

'; html += title; html += '

'; html += '
'; html += getEditorHtml(); dlg.innerHTML = html; dlg.querySelector('form').addEventListener('submit', onSubmit.bind(this)); dlg.querySelector('#selectMetadataRefreshMode').addEventListener('change', function () { if (this.value === 'scan') { dlg.querySelector('.fldReplaceExistingImages').classList.add('hide'); } else { dlg.querySelector('.fldReplaceExistingImages').classList.remove('hide'); } }); if (this.options.mode) { dlg.querySelector('#selectMetadataRefreshMode').value = this.options.mode; } dlg.querySelector('#selectMetadataRefreshMode').dispatchEvent(new CustomEvent('change')); dlg.querySelector('.btnCancel').addEventListener('click', function () { dialogHelper.close(dlg); }); if (layoutManager.tv) { centerFocus(dlg.querySelector('.formDialogContent'), false, true); } return new Promise(function (resolve, reject) { if (layoutManager.tv) { centerFocus(dlg.querySelector('.formDialogContent'), false, false); } dlg.addEventListener('close', resolve); dialogHelper.open(dlg); }); } } export default RefreshDialog;