Reset tour button resets the local storage used to mark the tour
as done.
Overriding the origin can now be done with a query string.
This will load the store with the new origin from the start,
so might be better for testing some things.
I'm not worried about unexpected bugs, as it is quite obvious
from the URL what's going on.
Specifying overrideOrigin in the URL now
sets up the store with the modified origin.
This is intended for development, and makes it
much less annoying to develop with a Vue dev server.
The picamera object isn't thread safe; I have now wrapped all access
in context managers that acquire the BaseCamera.lock
I also added an endpoint to reset the LST without auto-gain.
When testing the UI I noticed that the different recalibrate routines
don't use locks properly, so they try to run
concurrently.
This commit isn't tested yet...
I've added buttons to perform the separate calibrations (gain, AWB)
under the full recalibrate link.
It would be really nice to have a modal dialog though.
I also increased the precision of the numbers, which makes the step
buttons annoyingly useless but allows floating point
values without validation errors.
The previous "auto calibrate" button for the camera relied on a
combination of the built-in autoexposure/AWB and
some JPEG-based tweaks to get the exposure settings right.
This often led to confusing results, e.g. oscillating between green and
pink images.
I have rewritten the auto-exposure code to adjust gain and shutter
speed based on the raw image. This seems to be
very reliable, at the expense of being quite slow. That's a price I'm
happy to pay.
I have replaced both the camera's auto white balance and my
JPEG-based AWB hack with a single-shot AWB method that
looks at the raw image.
The scan API view now uses a schema with validation
constraints to enforce a minimum size of 1 in any dimension.
This requires better error handling in the app, which I've added.
It also needs a fix in LabThings so the error propagates correctly
It doesn't make sense to allow fewer than 1 image in any dimension
of a scan. Currently, supplying 0 gives a division by zero error.
I've added min="1" to each control.
The tour pop-ups were getting stuck in the tab icon container.
Explicitly specifying that they could overflow said container,
and setting them to show to the right, seems to have fixed this issue.
You can now set the stage type to "MissingStage" in
microscope_configuration.json to stop the server looking for the stage.
A warning is logged to make it obvious what's happening.