import loading from 'loading'; import libraryMenu from 'libraryMenu'; import globalize from 'globalize'; import dialogHelper from 'dialogHelper'; import 'emby-button'; import 'emby-checkbox'; import 'emby-select'; import 'formDialogStyle'; import 'listViewStyle'; 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(error => { 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(response => { reloadList(page); }).catch(error => { console.error('error saving repositories'); loading.hide(); }); } function populateList(options) { var html = ''; html += '
'; for (var i = 0; i < options.repositories.length; i++) { html += getRepositoryHtml(options.repositories[i]); } html += '
'; if (!options.repositories.length) { options.noneElement.classList.remove('hide'); } options.listElement.innerHTML = html; loading.hide(); } function getRepositoryHtml(repository) { var 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, params) { view.addEventListener('viewshow', function () { libraryMenu.setTabs('plugins', 2, getTabs); reloadList(this); var save = this; $('#repositories', view).on('click', '.btnDelete', function() { var button = this; repositories = repositories.filter(function (r) { return r.Url !== button.id; }); saveList(save); }); }); view.querySelector('.btnNewRepository').addEventListener('click', () => { let 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', () => { repositories.push({ Name: dialog.querySelector('#txtRepositoryName').value, Url: dialog.querySelector('#txtRepositoryUrl').value, Enabled: true }); saveList(view); dialogHelper.close(dialog); return false; }); dialogHelper.open(dialog); }); }