Commit Graph

83 Commits

Author SHA1 Message Date
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
D. Berge
d52f8f8bc2 API: Add event querying endpoint.
Events may be filtered by sequence(s):
   …/event?sequence=1
   …/event?sequence=1;3;7

Events may be filtered by date:
   …/event?date0=1970-01-01

Events may be filtered by a date interval:
   …/event?date0=1970-01-01&date1=1980-01-01

Events may also be paginated.
2020-08-12 11:35:57 +02:00
D. Berge
9871aebde6 Add event tables and views.
Events can be associated either with a timestamp *or* with a
sequence + shotpoint (but not both, for data integrity reasons).

Events and shotpoints can also have “labels” associated with them.
The difference between a comment and a label is that the former
is free text while the latter is predefined and has associated
properties (currently only for display, but could also have QC
related properties such as ensuring that there is only one “FSP”
label per sequence and so on).

The `events` view puts everything together into a coherent view.
Note that this view may produce multiple rows for the same
timestamp or shotpoint, for instance when the event has both
a text comment and one or more labels.
2020-08-12 11:24:52 +02:00
D. Berge
d53105ef7a Fix map loading indicator 2020-08-11 20:57:29 +02:00
D. Berge
656f5a2c6d Remove debugging statements 2020-08-11 20:57:05 +02:00