diff --git a/lib/www/server/api/middleware/event/get/geojson.js b/lib/www/server/api/middleware/event/get/geojson.js index 5fbf8e7..50ae060 100644 --- a/lib/www/server/api/middleware/event/get/geojson.js +++ b/lib/www/server/api/middleware/event/get/geojson.js @@ -1,11 +1,10 @@ - -const { event } = require('../../../../lib/db'); +const { transform, prepare } = require('../../../../lib/sse'); const geojson = async function (req, res, next) { try { const query = req.query; query.sequence = req.params.sequence; - const events = await event.list(req.params.project, query); + const {events, sequences} = await prepare(req.params.project, query); const response = { type: "FeatureCollection", features: events.filter(event => event.geometry).map(event => { @@ -19,7 +18,14 @@ const geojson = async function (req, res, next) { }) }; if ("download" in query || "d" in query) { - const filename = `${req.params.project}-seq${query.sequence.padStart(3, "0")}.geojson`; + const extension = "geojson"; + // Get the sequence number(s) (more than one sequence can be selected) + const seqNums = query.sequence.split(";"); + // If we've only been asked for a single sequence, get its line name + const lineName = (sequences.find(i => i.sequence == seqNums[0]) || {})?.meta?.lineName; + const filename = seqNums.length == 1 + ? `${lineName}-NavLog.${extension}` + : `${req.params.project}-${query.sequence}.${extension}`; res.set("Content-Disposition", `attachment; filename="${filename}"`); } res.status(200).send(response); diff --git a/lib/www/server/api/middleware/event/get/html.js b/lib/www/server/api/middleware/event/get/html.js index bda4571..ed18bb5 100644 --- a/lib/www/server/api/middleware/event/get/html.js +++ b/lib/www/server/api/middleware/event/get/html.js @@ -12,12 +12,19 @@ const html = async function (req, res, next) { const {events, sequences} = await prepare(req.params.project, query); const seis = transform(events, sequences, {projectId: req.params.project}); const template = (await configuration.get(req.params.project, "sse/templates/0/template")) || defaultTemplatePath; - console.log("TEMPLATE", template); +// console.log("TEMPLATE", template); const response = await render(seis, template); if ("download" in query || "d" in query) { - const filename = `${req.params.project}-seq${query.sequence.padStart(3, "0")}.html`; + const extension = "html"; + // Get the sequence number(s) (more than one sequence can be selected) + const seqNums = query.sequence.split(";"); + // If we've only been asked for a single sequence, get its line name + const lineName = (sequences.find(i => i.sequence == seqNums[0]) || {})?.meta?.lineName; + const filename = seqNums.length == 1 + ? `${lineName}-NavLog.${extension}` + : `${req.params.project}-${query.sequence}.${extension}`; res.set("Content-Disposition", `attachment; filename="${filename}"`); } res.status(200).send(response); diff --git a/lib/www/server/api/middleware/event/get/json.js b/lib/www/server/api/middleware/event/get/json.js index 3848f2e..c8d723f 100644 --- a/lib/www/server/api/middleware/event/get/json.js +++ b/lib/www/server/api/middleware/event/get/json.js @@ -1,16 +1,22 @@ - -const { event } = require('../../../../lib/db'); +const { transform, prepare } = require('../../../../lib/sse'); const json = async function (req, res, next) { try { const query = req.query; query.sequence = req.params.sequence; - const response = await event.list(req.params.project, query); + const {events, sequences} = await prepare(req.params.project, query); if ("download" in query || "d" in query) { - const filename = `${req.params.project}-seq${query.sequence.padStart(3, "0")}.json`; + const extension = "json"; + // Get the sequence number(s) (more than one sequence can be selected) + const seqNums = query.sequence.split(";"); + // If we've only been asked for a single sequence, get its line name + const lineName = (sequences.find(i => i.sequence == seqNums[0]) || {})?.meta?.lineName; + const filename = seqNums.length == 1 + ? `${lineName}-NavLog.${extension}` + : `${req.params.project}-${query.sequence}.${extension}`; res.set("Content-Disposition", `attachment; filename="${filename}"`); } - res.status(200).send(response); + res.status(200).send(events); next(); } catch (err) { next(err); diff --git a/lib/www/server/api/middleware/event/get/pdf.js b/lib/www/server/api/middleware/event/get/pdf.js index 1bc387d..b7b3c30 100644 --- a/lib/www/server/api/middleware/event/get/pdf.js +++ b/lib/www/server/api/middleware/event/get/pdf.js @@ -28,7 +28,14 @@ const pdf = async function (req, res, next) { const pdf = Buffer.from(await url2pdf("file://"+fname), "base64"); if ("download" in query || "d" in query) { - const filename = `${req.params.project}-seq${query.sequence.padStart(3, "0")}.pdf`; + const extension = "pdf"; + // Get the sequence number(s) (more than one sequence can be selected) + const seqNums = query.sequence.split(";"); + // If we've only been asked for a single sequence, get its line name + const lineName = (sequences.find(i => i.sequence == seqNums[0]) || {})?.meta?.lineName; + const filename = seqNums.length == 1 + ? `${lineName}-NavLog.${extension}` + : `${req.params.project}-${query.sequence}.${extension}`; res.set("Content-Disposition", `attachment; filename="${filename}"`); } res.status(200).send(pdf); diff --git a/lib/www/server/api/middleware/event/get/seis.js b/lib/www/server/api/middleware/event/get/seis.js index a76e0a8..2079ff2 100644 --- a/lib/www/server/api/middleware/event/get/seis.js +++ b/lib/www/server/api/middleware/event/get/seis.js @@ -7,7 +7,14 @@ const seis = async function (req, res, next) { const {events, sequences} = await prepare(req.params.project, query); const response = transform(events, sequences, {projectId: req.params.project}); if ("download" in query || "d" in query) { - const filename = `${req.params.project}-seq${query.sequence.padStart(3, "0")}.json`; + const extension = "json"; + // Get the sequence number(s) (more than one sequence can be selected) + const seqNums = query.sequence.split(";"); + // If we've only been asked for a single sequence, get its line name + const lineName = (sequences.find(i => i.sequence == seqNums[0]) || {})?.meta?.lineName; + const filename = seqNums.length == 1 + ? `${lineName}-NavLog.${extension}` + : `${req.params.project}-${query.sequence}.${extension}`; res.set("Content-Disposition", `attachment; filename="${filename}"`); } res.status(200).send(response);