import loading from '../../../../components/loading/loading'; import libraryMenu from '../../../../scripts/libraryMenu'; import globalize from '../../../../scripts/globalize'; import dialogHelper from '../../../../components/dialogHelper/dialogHelper'; import '../../../../elements/emby-button/emby-button'; import '../../../../elements/emby-checkbox/emby-checkbox'; import '../../../../elements/emby-select/emby-select'; import '../../../../components/formdialog.scss'; import '../../../../components/listview/listview.scss'; let repositories = []; function reloadList(page) { loading.show(); ApiClient.getJSON(ApiClient.getUrl('Repositories')).then(list => { repositories = list; populateList({ listElement: page.querySelector('#repositories'), noneElement: page.querySelector('#none'), repositories: repositories }); }).catch(() => { console.error('error loading repositories'); page.querySelector('#none').classList.remove('hide'); loading.hide(); }); } function saveList(page) { loading.show(); ApiClient.ajax({ type: 'POST', url: ApiClient.getUrl('Repositories'), data: JSON.stringify(repositories), contentType: 'application/json' }).then(() => { reloadList(page); }).catch(() => { console.error('error saving repositories'); loading.hide(); }); } function populateList(options) { let html = ''; html += '
'; for (let i = 0; i < options.repositories.length; i++) { html += getRepositoryHtml(options.repositories[i]); } html += '
'; if (!options.repositories.length) { options.noneElement.classList.remove('hide'); } else { options.noneElement.classList.add('hide'); } options.listElement.innerHTML = html; loading.hide(); } function getRepositoryHtml(repository) { let html = ''; html += '
'; html += ``; html += ''; html += ''; html += '
'; html += `

${repository.Name}

`; html += `
${repository.Url}
`; html += '
'; html += ``; html += '
'; return html; } function getTabs() { return [{ href: '#!/installedplugins.html', name: globalize.translate('TabMyPlugins') }, { href: '#!/availableplugins.html', name: globalize.translate('TabCatalog') }, { href: '#!/repositories.html', name: globalize.translate('TabRepositories') }]; } export default function(view) { view.addEventListener('viewshow', function () { libraryMenu.setTabs('plugins', 2, getTabs); reloadList(this); const save = this; $('#repositories', view).on('click', '.btnDelete', function() { const button = this; repositories = repositories.filter(function (r) { return r.Url !== button.id; }); saveList(save); }); }); view.querySelector('.btnNewRepository').addEventListener('click', () => { const dialog = dialogHelper.createDialog({ scrollY: false, size: 'large', modal: false, removeOnClose: true }); let html = ''; html += '
'; html += ''; html += `

${globalize.translate('HeaderNewRepository')}

`; html += '
'; html += '
'; html += '
'; html += ``; html += `
${globalize.translate('LabelRepositoryNameHelp')}
`; html += '
'; html += '
'; html += ``; html += `
${globalize.translate('LabelRepositoryUrlHelp')}
`; html += '
'; html += ``; html += ''; html += '
'; dialog.innerHTML = html; dialog.querySelector('.btnCancel').addEventListener('click', () => { dialogHelper.close(dialog); }); dialog.querySelector('.newPluginForm').addEventListener('submit', e => { e.preventDefault(); repositories.push({ Name: dialog.querySelector('#txtRepositoryName').value, Url: dialog.querySelector('#txtRepositoryUrl').value, Enabled: true }); saveList(view); dialogHelper.close(dialog); return false; }); dialogHelper.open(dialog); }); }