diff --git a/src/server.js b/src/server.js index 18209ed..79841a3 100644 --- a/src/server.js +++ b/src/server.js @@ -121,13 +121,13 @@ function start(opts) { success = serve_style.add(options, serving.styles, item, id, opts.publicUrl, (mbtiles, fromData) => { let dataItemId; - for (const id of Object.keys(data)) { + for (const id of Object.keys(serving.data)) { if (fromData) { if (id === mbtiles) { dataItemId = id; } } else { - if (data[id].mbtiles === mbtiles) { + if (serving.data[id].mbtiles === mbtiles) { dataItemId = id; } } @@ -140,7 +140,7 @@ function start(opts) { return undefined; } else { let id = mbtiles.substr(0, mbtiles.lastIndexOf('.')) || mbtiles; - while (data[id]) id += '_'; + //while (data[id]) id += '_'; data[id] = { 'mbtiles': mbtiles }; @@ -172,6 +172,11 @@ function start(opts) { } }; + let addData = (id, item) => { + console.log(`Add data ${id}`); + Promise.all([serve_data.add(options, serving.data, item, id, opts.publicUrl)]); + }; + for (const id of Object.keys(config.styles || {})) { const item = config.styles[id]; if (!item.style || item.style.length === 0) { @@ -201,6 +206,21 @@ function start(opts) { } if (options.serveAllStyles) { + fs.readdir(options.paths.mbtiles, {withFileTypes: true}, (err, files) => { + if (err) { + return; + } + for (const file of files) { + if (file.isFile() && path.extname(file.name).toLowerCase() == '.mbtiles') { + let id = path.basename(file.name, '.mbtiles'); + let item = { + mbtiles: file.name + }; + addData(id, item); + } + } + }); + fs.readdir(options.paths.styles, {withFileTypes: true}, (err, files) => { if (err) { return; @@ -212,7 +232,24 @@ function start(opts) { let item = { style: file.name }; - addStyle(id, item, false, false); + addStyle(id, item, true, true); + } + } + }); + + const watcherData = chokidar.watch(path.join(options.paths.mbtiles, '*.mbtiles'), + { + }); + watcherData.on('all', (eventType, filename) => { + if (filename) { + let id = path.basename(filename, '.mbtiles'); + console.log(`Data "${id}" added`); + + if (eventType == "add") { + let item = { + mbtiles: filename + }; + addData(id, item); } } }); @@ -235,7 +272,7 @@ function start(opts) { let item = { style: filename }; - addStyle(id, item, false, false); + addStyle(id, item, true, true); } } }); @@ -256,17 +293,6 @@ function start(opts) { res.send(result); }); - app.get('/process', (req, res, next) => { - const result = {}; - const id = req.query.style || ''; - const item = { - 'style': id + '.json' - }; - result[id] = true; - addStyle(id, item, true, true); - res.send(serving.styles); - }); - const addTileJSONs = (arr, req, type) => { for (const id of Object.keys(serving[type])) { const info = clone(serving[type][id].tileJSON);