From 0b79173e2d68cdde960369b235a4a848f7237d6f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= <skunk@xover.mud.at>
Date: Thu, 28 May 2020 19:03:20 +0200
Subject: [PATCH] tag2link: move code to a separate file

---
 src/index.js                |  3 +-
 src/tagsDisplay-tag2link.js | 63 +++++++++++++++++++++++++++++++++++
 src/tagsDisplay.js          | 65 +++----------------------------------
 3 files changed, 69 insertions(+), 62 deletions(-)
 create mode 100644 src/tagsDisplay-tag2link.js

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, '&quot;') + ", {{ 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, '&quot;') + ", {{ 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
 }