diff --git a/src/index.js b/src/index.js index 6e9e870c..f1f8babe 100644 --- a/src/index.js +++ b/src/index.js @@ -1,4 +1,4 @@ -/* globals map:true, overpassFrontend:true, currentPath:true, options:true, baseCategory:true, overpassUrl:true showDetails */ +/* globals map:true, overpassFrontend:true, currentPath:true, options:true, baseCategory:true, overpassUrl:true */ const tabs = require('modulekit-tabs') @@ -41,9 +41,8 @@ require('./CategoryOverpassFilter') require('./GeoInfo') require('./PluginMeasure') require('./PluginGeoLocate') -let exportAll = require('./exportAll') -const tagsDisplay = require('./tagsDisplay').display require('./tagsDisplay-tag2link') +const objectDisplay = require('./objectDisplay') window.onload = function () { var initState = config.defaultView @@ -241,7 +240,7 @@ function show (id, options, callback) { } if (options.showDetails) { - showDetails(data, category) + objectDisplay(data, category) } callback(err) @@ -252,100 +251,6 @@ function show (id, options, callback) { }) } -window.showDetails = function (data, category) { - var div, h, dt, dd, li, a - var k - var dom = document.getElementById('contentDetails') - - dom.innerHTML = '' - - let header = document.createElement('div') - header.className = 'header' - dom.appendChild(header) - - div = document.createElement('div') - div.className = 'description' - div.innerHTML = data.data.popupDescription || data.data.description || '' - header.appendChild(div) - data.sublayer.updateAssets(div, data) - - div = document.createElement('div') - div.className = 'title' - div.innerHTML = data.data.title || '' - header.appendChild(div) - data.sublayer.updateAssets(div, data) - - div = document.createElement('div') - div.className = 'body' - dom.appendChild(div) - - function updateBody (div) { - div.innerHTML = data.data.detailBody || data.data.body || '' - data.sublayer.updateAssets(div, data) - } - - data.object.on('update', updateBody.bind(this, div)) - updateBody(div) - - div = document.createElement('div') - div.className = 'body' - dom.appendChild(div) - category.renderTemplate(data, 'detailsBody', function (div, err, result) { - div.innerHTML = result - data.sublayer.updateAssets(div, data) - }.bind(this, div)) - - call_hooks_callback('show-details', data, category, dom, - function (err) { - if (err.length) { - console.log('show-details produced errors:', err) - } - } - ) - - h = document.createElement('h3') - h.innerHTML = lang('header:export') - dom.appendChild(h) - - div = document.createElement('div') - dom.appendChild(div) - exportAll(data, div) - - h = document.createElement('h3') - h.innerHTML = lang('header:attributes') - dom.appendChild(h) - - dom.appendChild(tagsDisplay(data.object.tags)) - - h = document.createElement('h3') - h.innerHTML = lang('header:osm_meta') - dom.appendChild(h) - - div = document.createElement('dl') - div.className = 'meta' - dt = document.createElement('dt') - dt.appendChild(document.createTextNode('id')) - div.appendChild(dt) - dd = document.createElement('dd') - a = document.createElement('a') - a.appendChild(document.createTextNode(data.object.type + '/' + data.object.osm_id)) - a.href = config.urlOpenStreetMap + '/' + data.object.type + '/' + data.object.osm_id - a.target = '_blank' - - dd.appendChild(a) - div.appendChild(dd) - for (k in data.object.meta) { - dt = document.createElement('dt') - dt.appendChild(document.createTextNode(k)) - div.appendChild(dt) - - dd = document.createElement('dd') - dd.appendChild(document.createTextNode(data.object.meta[k])) - div.appendChild(dd) - } - dom.appendChild(div) -} - function hide () { call_hooks('hide-' + document.getElementById('content').className) document.getElementById('content').className = 'list' diff --git a/src/objectDisplay.js b/src/objectDisplay.js new file mode 100644 index 00000000..47360807 --- /dev/null +++ b/src/objectDisplay.js @@ -0,0 +1,98 @@ +const exportAll = require('./exportAll') +const tagsDisplay = require('./tagsDisplay').display + +module.exports = function objectDisplay (data, category) { + var div, h, dt, dd, li, a + var k + var dom = document.getElementById('contentDetails') + + dom.innerHTML = '' + + let header = document.createElement('div') + header.className = 'header' + dom.appendChild(header) + + div = document.createElement('div') + div.className = 'description' + div.innerHTML = data.data.popupDescription || data.data.description || '' + header.appendChild(div) + data.sublayer.updateAssets(div, data) + + div = document.createElement('div') + div.className = 'title' + div.innerHTML = data.data.title || '' + header.appendChild(div) + data.sublayer.updateAssets(div, data) + + div = document.createElement('div') + div.className = 'body' + dom.appendChild(div) + + function updateBody (div) { + div.innerHTML = data.data.detailBody || data.data.body || '' + data.sublayer.updateAssets(div, data) + } + + data.object.on('update', updateBody.bind(this, div)) + updateBody(div) + + div = document.createElement('div') + div.className = 'body' + dom.appendChild(div) + category.renderTemplate(data, 'detailsBody', function (div, err, result) { + div.innerHTML = result + data.sublayer.updateAssets(div, data) + }.bind(this, div)) + + call_hooks_callback('show-details', data, category, dom, + function (err) { + if (err.length) { + console.log('show-details produced errors:', err) + } + } + ) + + h = document.createElement('h3') + h.innerHTML = lang('header:export') + dom.appendChild(h) + + div = document.createElement('div') + dom.appendChild(div) + exportAll(data, div) + + h = document.createElement('h3') + h.innerHTML = lang('header:attributes') + dom.appendChild(h) + + dom.appendChild(tagsDisplay(data.object.tags)) + + h = document.createElement('h3') + h.innerHTML = lang('header:osm_meta') + dom.appendChild(h) + + div = document.createElement('dl') + div.className = 'meta' + dt = document.createElement('dt') + dt.appendChild(document.createTextNode('id')) + div.appendChild(dt) + dd = document.createElement('dd') + a = document.createElement('a') + a.appendChild(document.createTextNode(data.object.type + '/' + data.object.osm_id)) + a.href = config.urlOpenStreetMap + '/' + data.object.type + '/' + data.object.osm_id + a.target = '_blank' + + dd.appendChild(a) + div.appendChild(dd) + for (k in data.object.meta) { + dt = document.createElement('dt') + dt.appendChild(document.createTextNode(k)) + div.appendChild(dt) + + dd = document.createElement('dd') + dd.appendChild(document.createTextNode(data.object.meta[k])) + div.appendChild(dd) + } + dom.appendChild(div) +} + +