Commit Graph

87 Commits

Author SHA1 Message Date
D. Berge
00f1ea20da Allow sequences to be filtered.
Sequences can be filtered by:
* sequence number;
* line number;
* start / end date (of raw acquisition);
* remarks (raw or final).
2020-08-25 12:59:40 +02:00
D. Berge
f486b4835e Instrument alerts for HTTP backend.
An alert is sent whenever an endpoint returns
an error other than an explicit failure (e.g.,
it won't send an alert if a middleware intentionally
returns a {status: XXX} object).
2020-08-25 11:32:13 +02:00
D. Berge
650ed998c6 Read also global config in server backend.
The configuration file etc/config.yaml is exposed to the
server backend under require('configuration').global.

Note that at some point it will probably make sense to
merge the two config files.
2020-08-25 08:48:10 +02:00
D. Berge
9fa76df446 Be explicit about the encoding of JSON config 2020-08-25 08:47:04 +02:00
D. Berge
3ce6f1dce6 Add tasks runner script.
This script runs the deferred imports. It is meant to
be called from a cronjob at regular intervals – every
one or two minutes is probably a good setting.

It checks if another instance is already running before
doing its thing.

If anything goes wrong (any of the called processes exits
with non-zero condition) it will send an alert to GitLab,
provided that the authorisation key is known.
2020-08-24 21:01:47 +02:00
D. Berge
b4b06c8744 Instrument alerts for deferred imports.
In case of errors (or anything else of note), send_alert.py
can be used to push information to a GitLab alerts endpoint.

It is generic enough that it can be used with anything else, though.
2020-08-24 20:02:12 +02:00
D. Berge
bc784989f6 Make P1 imports not fail if called needlessly.
If their respective configuration keys are not
defined in a survey configuration, the import
routines will print an informational message
and exit successfully.
2020-08-24 19:45:59 +02:00
D. Berge
721dae4084 Catch all middleware errors 2020-08-24 13:25:14 +02:00
D. Berge
2ed52f1a54 Add data manipulation functionality to Log component.
It is now possible to add, edit and delete events.
2020-08-22 20:46:15 +02:00
D. Berge
2ff0dfe1fa Add <dougal-event-edit-dialog/> component.
Used to enter new events.
2020-08-22 20:46:15 +02:00
D. Berge
15d5fb8148 Add <dougal-context-menu/> component 2020-08-22 20:46:15 +02:00
D. Berge
b2fc63dc51 Add defaults to Vuex store api action.
It sends Content-Type: application/json by default
and converts the body to string via JSON.stringify
unless it's a string already.
2020-08-22 20:46:15 +02:00
D. Berge
949defd2f6 Add event API endpoints 2020-08-22 20:46:15 +02:00
D. Berge
a55046ed93 Add a meta property to requests.
Using the meta(key, value) middleware factory, the user
can add a property req.meta[key] = value to the request.
2020-08-22 20:46:15 +02:00
D. Berge
0c4d91c603 Implement event DELETE middleware 2020-08-22 20:46:15 +02:00
D. Berge
5349708fb8 Implement event PUT middleware 2020-08-22 20:46:15 +02:00
D. Berge
58694ac1c1 Refactor event POST middleware.
It can now take some parameters from the request URL.
If present, request URL parameters take precedence over
request body values.
2020-08-22 20:45:59 +02:00
D. Berge
ba160c441c Implement db.event.del (delete) 2020-08-22 20:26:03 +02:00
D. Berge
517291d5c9 Implement db.event.put 2020-08-22 20:24:55 +02:00
D. Berge
81e0c40790 Refactor db.event.post 2020-08-22 20:24:10 +02:00
D. Berge
9e1f93d43e Adapt db.events.list to latest schema 2020-08-22 20:23:28 +02:00
D. Berge
1b549655fa Update schema (events).
Some columns have been renamed:

* ts0 → tstamp
* shotNumber → point

The ts1 column from events_timed has been removed.

Labels attached to a sequence / shot without an event
have been removed. All labels are now associated with events.

Changes to event views.
2020-08-22 20:19:39 +02:00
D. Berge
a588bfcb68 Add timed event labels to events view 2020-08-18 10:41:15 +02:00
D. Berge
c3d896a75b Fix typo 2020-08-17 11:22:39 +02:00
D. Berge
218172c821 Fix typo 2020-08-17 11:22:05 +02:00
D. Berge
db4064b806 Add preset event definitions to example survey config 2020-08-17 11:19:41 +02:00
D. Berge
bf1bda0edf Add label definitions to example survey config 2020-08-17 11:19:01 +02:00
D. Berge
4c710a1c62 Modify details of example survey configuration file 2020-08-17 11:17:38 +02:00
D. Berge
d33947e11a Handle empty API responses 2020-08-16 10:51:55 +02:00
D. Berge
c93188a5a7 Add event POST middleware to API 2020-08-16 10:50:58 +02:00
D. Berge
608fd9d3cd Refactor DB interface to use setSurvey() 2020-08-16 10:46:54 +02:00
D. Berge
170312efd6 Remove dead code from DB interface 2020-08-16 10:44:04 +02:00
D. Berge
ecbe4d38ca Add setSurvey() utility function to DB interface.
It sets the current survey and optionally returns a
client connection to use in subsequent queries.
2020-08-16 10:16:08 +02:00
D. Berge
dc1e08b452 Add transaction utility functions to DB interface 2020-08-16 10:15:44 +02:00
D. Berge
2bfa340b52 Add API endpoint to retrieve survey configuration.
The endpoint /project/:project/configuration/:path(*)?
returns the contents of the survey configuration YAML
file for a given project.

To retrieve the full configuration:
 * /project/:project/configuration

To retrieve a specific subset (e.g., binning parameters):

 * /project/:project/configuration/binning

To retrieve a specific value (e.g., inline bin width):

 * /project/:project/configuration/binning/I_width
2020-08-16 10:06:43 +02:00
D. Berge
9197c2c12d Add Aaltronav logo font 2020-08-16 10:02:06 +02:00
D. Berge
63f4b45a42 Add robots.txt 2020-08-14 17:30:45 +02:00
D. Berge
2ee9b0cac8 Add midnight shot synthetic event.
It inserts `LDSP` and `FDSP` labels, if those exist
in the `labels` table, on the last and first shotpoints
of the day when a sequence is shot through midnight.

The server timezone is always set to UTC so the midnight
shot implicitly refers to UTC through this.
2020-08-13 23:44:25 +02:00
D. Berge
3a1ec467c9 Update client home page.
Still a work in progress. The recently viewed projects
list is meant to show the last three or so projects that
the user has visited on this computer, probably using localStorage.
2020-08-12 18:23:10 +02:00
D. Berge
f2373a0454 Use environment variables for DB connection if possible 2020-08-12 18:18:47 +02:00
D. Berge
3dcb55393a Navigate to events log from calendar.
* When clicking on a date, shows events for that date.

* When clicking on a sequence, shows that sequence's events.
2020-08-12 15:18:32 +02:00
D. Berge
4de0684919 Implement event logs component.
It can show:

 - all events (this could get slow);
 - a single sequence;
 - a set of sequences;
 - a single date;
 - a range between two dates.

It does not (yet) do pagination and filtering is local only.
2020-08-12 15:15:44 +02:00
D. Berge
6fa39eb3c7 Autogenerate JWT secret if not in production mode 2020-08-12 15:13:53 +02:00
D. Berge
9453d14ee5 Make API config search path consistent with backend.
The API configuration now accepts the same DOUGAL_ROOT
environment variable as the backend and uses the same
path algorithm.
2020-08-12 15:11:54 +02:00
D. Berge
d66e3dd661 Prefer environment variables to connect to DB 2020-08-12 14:39:33 +02:00
D. Berge
b1a088da36 Prefer environment variables to connect to DB 2020-08-12 14:38:31 +02:00
D. Berge
8ea220d09e Add info on etc/db files 2020-08-12 14:24:10 +02:00
D. Berge
d4f91aea3b Add script to update template schema from database 2020-08-12 14:23:34 +02:00
D. Berge
c7b6f259cb Add btree_gist extension to database template 2020-08-12 14:02:40 +02:00
D. Berge
a73376572b API: Add label querying endpoint.
Labels can be associated with events and can have
display properties such as a description and colour,
this is why we need an endpoint for the client to
retrieve them.
2020-08-12 11:41:28 +02:00