Merge branch '281-modify-planner-endpoint-s' into 'devel'

Resolve "Modify planner endpoint(s)"

Closes #281

See merge request wgp/dougal/software!49
This commit is contained in:
D. Berge
2023-10-25 14:26:23 +00:00
3 changed files with 68 additions and 6 deletions

View File

@@ -43,15 +43,26 @@ const rels = [
matches: [ ],
callback (url, data) {
if (data.payload?.table == "info") {
const pid = data.payload?.pid;
const key = (data.payload?.new ?? data.payload?.old)?.key;
const rx = /^\/project\/([^\/]+)\/info\/([^\/?]+)[\/?]?/;
const match = url.match(rx);
if (match) {
if (match[1] == data.payload.pid) {
if (match[1] == pid) {
if (match[2] == data.payload?.old?.key || match[2] == data.payload?.new?.key) {
return true;
}
}
}
if (key == "plan") {
const rx = /^\/project\/([^\/]+)\/plan[\/?]?/;
const match = url.match(rx);
if (match) {
return match[1] == pid;
}
}
}
return false;
}

View File

@@ -1,9 +1,14 @@
const { plan } = require('../../../../lib/db');
const { plan, info } = require('../../../../lib/db');
const json = async function (req, res, next) {
try {
const response = await plan.list(req.params.project, req.query);
const sequences = await plan.list(req.params.project, req.query) ?? [];
const remarks = await info.get(req.params.project, "plan/remarks", req.query, req.user.role) ?? null;
const response = {
remarks,
sequences
};
res.status(200).send(response);
next();
} catch (err) {

View File

@@ -1256,9 +1256,55 @@ paths:
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PlannedSequence"
type: object
properties:
remarks:
type: string
description: Planner remarks
sequences:
type: array
items:
$ref: "#/components/schemas/PlannedSequence"
text/csv:
schema:
type: string
format: csv
description: |
Returns a CSV response containing one row for each planned sequence, with the following columns:
* `sequence`: Sequence number
* `line`: Line number
* `fsp`: First shotpoint
* `lsp`: Last shotpoint
* `ts0`: Estimated timestamp of the first shotpoint
* `ts1`: Estimated timestamp of the last shotpoint
* `name`: Line name
* `remarks`: Arbitrary comments
* `num_points`: Number of shotpoints
* `duration`: Estimated duration in seconds
* `length`: Line length in metres
* `azimuth`: Line azimuth
* `lon0`: Longitude of the first shotpoint
* `lat0`: Latitude of the first shotpoint
* `lon1` Longitude of the last shotpoint
* `lat1`: Latitude of the last shotpoint
example: |
"sequence","line","fsp","lsp","ts0","ts1","name","remarks","num_points","duration","length","azimuth","lon0","lat0","lon1","lat1"
81,5162,2422,1158,"2023-10-22T11:09:24.912Z","2023-10-22T12:56:03.395Z","2051621081S00000","",633,6398,15799.988472147348,26.4703415983101,2.474872,59.086695,2.596266,59.214146
82,5178,2444,1146,"2023-10-22T12:56:03.000Z","2023-10-22T14:45:33.607Z","2051781082S00000","",650,6570,16225.02094944685,26.470137885560813,2.469632,59.085264,2.594277,59.216147
text/html:
schema:
type: string
format: html
description: |
An HTML representation of the plan.
application/pdf:
schema:
type: string
contentMediaType: application/pdf
description: |
A PDF representation of the plan.
post:
description: Add a new sequence to the plan.