diff --git a/src/addCategories.js b/src/addCategories.js index b87a238d..c0c0fe18 100644 --- a/src/addCategories.js +++ b/src/addCategories.js @@ -9,14 +9,95 @@ const customCategory = require('./customCategory') let tab +function addCategoriesList (options = {}) { + let content = tab.content + + content.innerHTML = '

' + lang('more_categories') + '

' + ' ' + lang('loading') + + OpenStreetBrowserLoader.getRepositoryList(options, function (err, repoData) { + if (err) { + return global.alert(err) + } + + content.innerHTML = '

' + lang('more_categories') + '

' + + var categoryUrl = null + if (repoData.categoryUrl) { + categoryUrl = OverpassLayer.twig.twig({ data: repoData.categoryUrl, autoescape: true }) + } + + var list = {} + + customCategory(content) + + if (typeof repositoriesGitea === 'object' && repositoriesGitea.url) { + let a = document.createElement('a') + a.href = repositoriesGitea.url + a.target = '_blank' + a.innerHTML = lang('more_categories_gitea') + content.appendChild(a) + } + + list = weightSort(repoData, { + key: 'timestamp', + reverse: true + }) + + let menu = document.createElement('ul') + menu.className = 'menu' + content.appendChild(menu) + + let header = document.createElement('h3') + header.innerHTML = lang('repositories') + ':' + content.appendChild(header) + + var ul = document.createElement('ul') + + for (var id in list) { + var data = list[id] + + var repositoryUrl = null + if (data.repositoryUrl) { + repositoryUrl = OverpassLayer.twig.twig({ data: data.repositoryUrl, autoescape: true }) + } + + var li = document.createElement('li') + + let a = document.createElement('a') + a.href = '#' + a.onclick = function (id) { + addCategoriesShow(id) + return false + }.bind(this, id) + + li.appendChild(a) + a.appendChild(document.createTextNode('name' in data ? lang(data.name) : id)) + + var editLink = null + if (repositoryUrl) { + editLink = document.createElement('a') + editLink.href = repositoryUrl.render({ repositoryId: id }) + } + if (editLink) { + editLink.className = 'source-code' + editLink.title = 'Show source code' + editLink.target = '_blank' + editLink.innerHTML = '' + li.appendChild(document.createTextNode(' ')) + li.appendChild(editLink) + } + + ul.appendChild(li) + } + + content.appendChild(ul) + }) +} + function addCategoriesShow (repo, options={}) { let content = tab.content - let repoId - let branchId - if (repo) { - [ repoId, branchId ] = repo.split(/~/) - } + let [ repoId, branchId ] = repo.split(/~/) if (!branchId) { branchId = 'master' @@ -42,66 +123,47 @@ function addCategoriesShow (repo, options={}) { customCategory(content) - if (repo) { - var backLink = document.createElement('a') - backLink.className = 'back' - backLink.href = '#' - backLink.innerHTML = ' ' - backLink.appendChild(document.createTextNode(lang('back'))) + var backLink = document.createElement('a') + backLink.className = 'back' + backLink.href = '#' + backLink.innerHTML = ' ' + backLink.appendChild(document.createTextNode(lang('back'))) - backLink.onclick = function () { - addCategoriesShow() - return false - } - content.appendChild(backLink) - - let h = document.createElement('h2') - h.appendChild(document.createTextNode(repoId)) - content.appendChild(h) - - list = repoData.categories - } else { - if (typeof repositoriesGitea === 'object' && repositoriesGitea.url) { - let a = document.createElement('a') - a.href = repositoriesGitea.url - a.target = '_blank' - a.innerHTML = lang('more_categories_gitea') - content.appendChild(a) - } - - list = weightSort(repoData, { - key: 'timestamp', - reverse: true - }) + backLink.onclick = function () { + addCategoriesList() + return false } + content.appendChild(backLink) + + let h = document.createElement('h2') + h.appendChild(document.createTextNode(repoId)) + content.appendChild(h) + + list = repoData.categories let menu = document.createElement('ul') menu.className = 'menu' content.appendChild(menu) - if (repo) { - let li = document.createElement('li') - menu.appendChild(li) + let li = document.createElement('li') + menu.appendChild(li) - let text = document.createElement('a') - text.innerHTML = lang('repo-use-as-base') - text.href = '#repo=' + repo - text.onclick = addCategoriesHide - li.appendChild(text) - } + let text = document.createElement('a') + text.innerHTML = lang('repo-use-as-base') + text.href = '#repo=' + repo + text.onclick = addCategoriesHide + li.appendChild(text) - if (repo) { - let li = document.createElement('li') - menu.appendChild(li) + li = document.createElement('li') + menu.appendChild(li) - let text = document.createElement('a') - text.innerHTML = lang('reload') - text.href = '#' - text.onclick = () => { - addCategoriesShow(repo, { force: true }) - } - li.appendChild(text) + text = document.createElement('a') + text.innerHTML = lang('reload') + text.href = '#' + text.onclick = () => { + addCategoriesShow(repo, { force: true }) } + li.appendChild(text) if ('branches' in repoData) { let li = document.createElement('li') @@ -136,7 +198,7 @@ function addCategoriesShow (repo, options={}) { } let header = document.createElement('h3') - header.innerHTML = lang(repo ? 'categories' : 'repositories') + ':' + header.innerHTML = lang('categories') + ':' content.appendChild(header) var ul = document.createElement('ul') @@ -149,20 +211,12 @@ function addCategoriesShow (repo, options={}) { repositoryUrl = OverpassLayer.twig.twig({ data: data.repositoryUrl, autoescape: true }) } - var li = document.createElement('li') + li = document.createElement('li') let a = document.createElement('a') - if (repo) { - a.href = '#categories=' + (repo === 'default' ? '' : repo + '/') + id - a.onclick = function () { - addCategoriesHide() - } - } else { - a.href = '#' - a.onclick = function (id) { - addCategoriesShow(id) - return false - }.bind(this, id) + a.href = '#categories=' + (repo === 'default' ? '' : repo + '/') + id + a.onclick = function () { + addCategoriesHide() } li.appendChild(a) @@ -210,7 +264,7 @@ register_hook('init', function (callback) { tab.on('select', () => { if (!initialized) { - addCategoriesShow() + addCategoriesList() initialized = true } })