Browse Source

tag2link: move code to a separate file

master
parent
commit
0b79173e2d
  1. 3
      src/index.js
  2. 63
      src/tagsDisplay-tag2link.js
  3. 65
      src/tagsDisplay.js

3
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

63
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
}

65
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
}
Loading…
Cancel
Save