diff --git a/src/index.js b/src/index.js index fc810fa3..6d7a7df1 100644 --- a/src/index.js +++ b/src/index.js @@ -42,7 +42,8 @@ require('./GeoInfo') require('./PluginMeasure') require('./PluginGeoLocate') let exportAll = require('./exportAll') -const tagsDisplay = require('./tagsDisplay') +const tagsDisplay = require('./tagsDisplay').display +require('./tagsDisplay-tag2link') window.onload = function () { var initState = config.defaultView diff --git a/src/tagsDisplay-tag2link.js b/src/tagsDisplay-tag2link.js new file mode 100644 index 00000000..3143d2b4 --- /dev/null +++ b/src/tagsDisplay-tag2link.js @@ -0,0 +1,63 @@ +const httpGet = require('./httpGet') +const formatter = require('./tagsDisplay').formatter + +let tag2link + +register_hook('init_callback', (initState, callback) => { + httpGet('dist/tag2link.json', {}, (err, result) => { + if (err) { + console.error('Can\'t read dist/tag2link.json - execute bin/download_dependencies') + return callback() + } + + tag2link = JSON.parse(result.body) + + Object.keys(tag2link).forEach(key => { + let tag = tag2link[key] + let link = tag.formatter[0].link.replace('$1', '{{ value }}') + + if (tag.formatter.length > 1) { + link = "#\" onclick=\"return tag2link(this, " + JSON.stringify(key).replace(/"/g, '"') + ", {{ value|json_encode }})" + } + + formatter.push({ + regexp: new RegExp("^" + key + "$"), + link + }) + }) + + callback() + }) +}) + +global.tag2link = function (dom, key, value) { + let div = document.createElement('div') + div.className = 'tag2link' + dom.parentNode.appendChild(div) + + let closeButton = document.createElement('div') + closeButton.className = 'closeButton' + closeButton.innerHTML = '❌' + closeButton.onclick = () => { + dom.parentNode.removeChild(div) + } + div.appendChild(closeButton) + + let selector = document.createElement('ul') + div.appendChild(selector) + + let tag = tag2link[key] + tag.formatter.forEach(formatter => { + let li = document.createElement('li') + + let a = document.createElement('a') + a.target = '_blank' + a.href = formatter.link.replace('$1', value) + a.appendChild(document.createTextNode(formatter.operator)) + + li.appendChild(a) + selector.appendChild(li) + }) + + return false +} diff --git a/src/tagsDisplay.js b/src/tagsDisplay.js index 8bf40f6d..3a69db38 100644 --- a/src/tagsDisplay.js +++ b/src/tagsDisplay.js @@ -1,7 +1,5 @@ const OverpassLayer = require('overpass-layer') -const httpGet = require('./httpGet') - const formatter = [ { regexp: /^(.*:)?wikidata$/, @@ -41,11 +39,10 @@ const formatter = [ } ] -let tag2link let compiled = false let defaultTemplate -module.exports = function tagsDisplay (tags) { +function tagsDisplay (tags) { if (!compiled) { defaultTemplate = OverpassLayer.twig.twig({ data: '{{ value }}', autoescape: true }) for (let i in formatter) { @@ -93,61 +90,7 @@ module.exports = function tagsDisplay (tags) { return div } -register_hook('init_callback', (initState, callback) => { - httpGet('dist/tag2link.json', {}, (err, result) => { - if (err) { - console.error('Can\'t read dist/tag2link.json - execute bin/download_dependencies') - return callback() - } - - tag2link = JSON.parse(result.body) - - Object.keys(tag2link).forEach(key => { - let tag = tag2link[key] - let link = tag.formatter[0].link.replace('$1', '{{ value }}') - - if (tag.formatter.length > 1) { - link = "#\" onclick=\"return tag2link(this, " + JSON.stringify(key).replace(/"/g, '"') + ", {{ value|json_encode }})" - } - - formatter.push({ - regexp: new RegExp("^" + key + "$"), - link - }) - }) - - callback() - }) -}) - -global.tag2link = function (dom, key, value) { - let div = document.createElement('div') - div.className = 'tag2link' - dom.parentNode.appendChild(div) - - let closeButton = document.createElement('div') - closeButton.className = 'closeButton' - closeButton.innerHTML = '❌' - closeButton.onclick = () => { - dom.parentNode.removeChild(div) - } - div.appendChild(closeButton) - - let selector = document.createElement('ul') - div.appendChild(selector) - - let tag = tag2link[key] - tag.formatter.forEach(formatter => { - let li = document.createElement('li') - - let a = document.createElement('a') - a.target = '_blank' - a.href = formatter.link.replace('$1', value) - a.appendChild(document.createTextNode(formatter.operator)) - - li.appendChild(a) - selector.appendChild(li) - }) - - return false +module.exports = { + display: tagsDisplay, + formatter }