If the survey configuration does not itself have a template
we will use the one in etc/defaults/templates/sequence.html.njk.
It is not very likely that the template will be changed all that
often and it avoids issues when people forget to copy it across
to a new survey, etc.
Replaces an existing element with a new one, or inserts it
if there is nothing to replace. The element may be deeply
nested inside a JSON object or array in the `info` table.
Works for both public.info and survey_?.info.
`complete` is a boolean.
If true, any virgin points remaining on the line
will be marked as `ntba=true`.
If false, *all* points on the line will be marked
as `ntba=false`.
Virgin points are those that have not been acquired
(and processed) at least once.
Points to be acquired are virgin points that do not
have the `ntba` flag set.
There is no concept of ‘current survey’ in Dougal, and
assigning navigation data to a particular survey is full
of edge cases but sometimes it is necessary or at least
convenient to do so.
This commit implements once such strategy, which consists
of checking the distance to the preplots of all active
surveys (well, those that do have preplots anyway) and
picking the nearest one.
To reduce load, we only do this every once in a while as
governed by the `offline_survey_detect_interval` option
in the configuration.
This strategy is only active if the configuration option
`offline_survey_heuristics == "nearest_preplot"` for the
corresponding navigation header.
This filter can collect attributes from items having the
same key into a single item.
Can be used in templates like this:
{% for Entry in Sequence.Entries |
collect("ShotPointId", ["EntryType", "Comment"]) %}
to avoid duplicating shotpoint numbers.
If the `download` or `d` query parameter is supplied (even
without any value), the response will include a
`Content-Disposition: attachment` header. A filename will
also be suggested.
A button in the help dialogue takes the user to the
/feed/… frontend URL, where the latest development
activity is shown, taken from the GitLab RSS feed
for the project.
The next sequence to shoot is normally retrieved from the
database via getSequence(), but it returns false if no
sequences have been shot yet.
In that case we use a default value of `1` to build the
name of the planned line.
Fixes#81Fixes#82
The `sequences` object now carries the attribute
`has_smsrc_data`, a boolean which is true iff
there is at least one `smsrc` record in the raw
shots metadata.
This is used by:
1. A new sequence-wise test which reports if gun
data is missing for the entire sequence.
2. The individual `missing_gun_data` test which
is inhibited if `has_smsrc_data` for the
corresponding sequence is false.
Closes#93.
When a client makes a request for `/` (the root of
the API), the OpenAPI description is served in an
appropriate format according to the `Accept` request
header, as follows:
Accept: text/html => HTML version
Accept: application/json => JSON version
Accept: * => YAML version
When running `npm install`, a self-contained HTML document
with the contents of the OpenAPI specification is saved as
openapi.html in the same directory as openapi.yaml.