From 9323dc9682cfbe87e183843d959ca6ffd46dac32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= Date: Sun, 18 Nov 2018 14:46:34 +0100 Subject: [PATCH] Use new export method also for single objects --- src/exportAll.js | 65 +++++++++++++++++++++++++++++++++++++----------- src/index.js | 14 +++-------- 2 files changed, 53 insertions(+), 26 deletions(-) diff --git a/src/exportAll.js b/src/exportAll.js index 4e823805..43fd7c25 100644 --- a/src/exportAll.js +++ b/src/exportAll.js @@ -14,12 +14,20 @@ let formExport function prepareDownload (callback) { let conf = formExport.get_data() - let fileType - let extension - let type = types[conf.type] - let exportFun = new type(conf) global.baseCategory.allMapFeatures((err, data) => { + if (err) { + return callback(err) + } + + createDownload(conf, data, callback) + }) +} + +function createDownload (conf, data, callback) { + let type = types[conf.type] + let exportFun = new type(conf) + let chunks = chunkSplit(data, 1000) let parentNode @@ -49,31 +57,34 @@ function prepareDownload (callback) { callback() } ) - }) } -register_hook('init', function () { - tab = new tabs.Tab({ - id: 'export' - }) - global.tabs.add(tab) - - tab.header.innerHTML = '' - tab.content.innerHTML = lang('export-all') - +function formDef () { let values = {} Object.keys(types).forEach(type => values[type] = lang('export:' + type) ) - formExport = new form('export', { + return { type: { name: 'Type', type: 'radio', values, default: Object.keys(types)[0] } + } +} + +register_hook('init', function () { + tab = new tabs.Tab({ + id: 'export' }) + global.tabs.add(tab) + + tab.header.innerHTML = '' + tab.content.innerHTML = lang('export-all') + + formExport = new form('export', formDef()) let domForm = document.createElement('form') tab.content.appendChild(domForm) @@ -99,3 +110,27 @@ register_hook('init', function () { formExport.resize() }) }) + +module.exports = (data, div) => { + let formExport = new form('exportOne', formDef()) + + let domForm = document.createElement('form') + div.appendChild(domForm) + formExport.show(domForm) + + let submit = document.createElement('input') + submit.type = 'submit' + submit.value = lang('export-prepare') + submit.onclick = () => { + submit.setAttribute('disabled', 'disabled') + let conf = formExport.get_data() + createDownload(conf, [ data ], (err) => { + if (err) { + alert(err) + } + + submit.removeAttribute('disabled') + }) + } + div.appendChild(submit) +} diff --git a/src/index.js b/src/index.js index 6f4ec74e..ebf7bff7 100644 --- a/src/index.js +++ b/src/index.js @@ -33,7 +33,7 @@ require('./categories') require('./wikipedia') require('./image') require('./addCategories') -require('./exportAll') +let exportAll = require('./exportAll') window.onload = function () { var initState = config.defaultView @@ -294,17 +294,9 @@ window.showDetails = function (data, category) { h.innerHTML = lang('header:export') dom.appendChild(h) - div = document.createElement('ul') + div = document.createElement('div') dom.appendChild(div) - - li = document.createElement('li') - div.appendChild(li) - - a = document.createElement('a') - a.download = data.id + '.json' - a.href = 'data:application/json;charset=UTF-8,' + encodeURIComponent(JSON.stringify(data.object.GeoJSON(), null, ' ')) - a.innerHTML = lang('download:geojson') - li.appendChild(a) + exportAll(data, div) h = document.createElement('h3') h.innerHTML = lang('header:attributes')