mirror of
https://gitlab.com/wgp/dougal/software.git
synced 2025-12-06 11:17:08 +00:00
This is for the usual case where only one sequence is requested.
When more than one sequence is requested, the suggested name comes out
as ${projectId}-${sequenceList}.${extension}, where `sequenceList` is
the list of sequence numbers separated by semicolons, e.g.:
eq21203-37;38;39.html.
Closes #116.
39 lines
1.2 KiB
JavaScript
39 lines
1.2 KiB
JavaScript
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, sequences} = await prepare(req.params.project, query);
|
|
const response = {
|
|
type: "FeatureCollection",
|
|
features: events.filter(event => event.geometry).map(event => {
|
|
const feature = {
|
|
type: "Feature",
|
|
geometry: event.geometry,
|
|
properties: event
|
|
};
|
|
delete feature.properties.geometry;
|
|
return feature;
|
|
})
|
|
};
|
|
if ("download" in query || "d" in query) {
|
|
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);
|
|
next();
|
|
} catch (err) {
|
|
next(err);
|
|
}
|
|
}
|
|
|
|
module.exports = geojson;
|