sanger / sequencescape

Web based LIMS
MIT License
87 stars 33 forks source link

DPL-057 Allow editing of batch information [OKR] #3225

Closed JamesGlover closed 3 years ago

JamesGlover commented 3 years ago

User story We need to be a bit careful about how we approach this one, as certain piplines are very unhappy if you try to edit completed steps. However there is no real reason for sequencing to be one of these. However well will need to ensure:

We should also:

Neil S:

In the process of loading flowcells most details (events) are manually entered. Some are for 'in team' tracking e.g. Operator, Pipette Carousel, PhiX lot whilst others are required for downstream analysis e.g. phix barcode, loading concentration, workflow

Presently once the batch is released these events cannot be updated by the team and require the generation of an RT ticket to update the event(s). There is potential for downstream analysis to be delayed.

The number of RT tickets generated for this action is consistently the highest in any month than any other area we support.

Who are the primary contacts for this story e.g. John S (don't include surnames in public repos)

Acceptance criteria To be considered successful the solution must allow:

Dependencies This story is blocked by the following dependencies:

References This story has a non-blocking relationship with:

Additional context Add any other context or screenshots about the feature request here.

JamesGlover commented 3 years ago

PR with annotations of existing code: https://github.com/sanger/sequencescape/pull/3242

JamesGlover commented 3 years ago

Improve the batch summary page to better handle updated data:

Before Screenshot 2021-08-13 at 08 43 00 After Screenshot 2021-08-13 at 08 43 08

neilsycamore commented 3 years ago

James I can see pipette carousel in the view twice. Removing it from the top row would free up some space

JamesGlover commented 3 years ago

Its recorded for different steps, they don't necessarily use the same carousel each time. (Sequencescape even supports different carousels for each request, but I'm not sure if this functionality is ever used.)

KatyTaylor commented 3 years ago

I think a nice addition to the UI you've posted would be for there to be a label somewhere saying what the things in the cards / tables are. Our expert users will know, but new users (and developers!) might not. I think the cards are lanes, and each table is an event, or something? Can the word 'lane' and 'events' go somewhere? Apologies for annoying not-related-to-your-task request :)

Edit: also not quite sure about the table format - are we expecting there to be multiple rows in the tables? If not, might be better as cards or something?

JamesGlover commented 3 years ago

I did try a descriptive list approach, but it was a bit hard to control space, so tables were an attempt to keep things compact. I can prototype another version and see what Tris thinks.

JamesGlover commented 3 years ago

Quickly prototyped a cards version. For some batches there will be more columns... Screenshot 2021-08-18 at 17 27 06

JamesGlover commented 3 years ago

Batch with more steps Screenshot 2021-08-18 at 17 28 22

JamesGlover commented 3 years ago

The same batch with a table view Screenshot 2021-08-18 at 17 29 40

JamesGlover commented 3 years ago

Card deck at the request level Screenshot 2021-08-18 at 17 36 16 It completely falls over for 8 lane batched though, and still looks cluttered if grouped by 4. Screenshot 2021-08-18 at 17 40 52

JamesGlover commented 3 years ago

Tris likes the first protoype, but agrees that it falls apart with more columns. I'll look at improving that approach. A few ideas:

I'm probably going to avoid the 'masonry' style approach of tessellating the columns, as:

Tris also suggested abbreviating some of the fields, but as they get pulled straight from the database, this isn't really viable without changing the historical data.

JamesGlover commented 3 years ago

Tris was worried that hiding empty fields could make it unclear if a field was missed.

JamesGlover commented 3 years ago

Screenshot 2021-08-19 at 14 46 55 Got something that seems to work. Not quite as responsive as I'd like, due to limitations in bootstrap card groups. But that does seem to have been improved in bootstrap 5, so might be able to revisit it soom.

JamesGlover commented 3 years ago

Question to Tris:

I’ve got a question about some existing functionality in the Sequencing pipelines, that I suspect is almost entirely unused.

Most pipeline steps can be in one of two modes: Per item mode (Mostly for setting concentrations) where each request has its own boxes Per batch mode where a single set of fields are shared for the entire batch (most other steps)

PhiX has its own behaviour, and I’m not really covering it here.

In both modes it is possible to de-select requests as the top of the page, and only apply the values you filled in to the rest of the requests within the batch. When you do this, you’ll be returned to the same page.

In the case of per-batch mode, the fields will be filled in with the values on the previous page. You then need to adjust the selected requests, update the details as required and click update again. Once all the requests have been updated in this way, you get taken to the next page.

This approach already feels clunky, and will be incredibly confusing if you wish to edit a request. As a result I’m proposing the following:

If you choose to only update some requests in the batch, the screen will flip to per-item mode for the remaining requests. Per item mode will also be selected if you choose to edit a batch where the information is different for the various requests.

One slight issues this raises though, is whether we should still populate the empty fields with the previous contents:

Advantages: Less typing, especially if its only one field that differs. Disadvantages: More error prone, as it isn’t immediately apparent which fields haven’t been filled yet.

Do you have a preference? Keeping them blank is marginally simpler from our perspective, although more from a risk-of-bugs perspective than actual time to implement.

Running with not-populate for now