withAssayModels: filter by "assayName" prop when provided #1645
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Rationale
The
withAssayModelscomponent wrapper accepts anassayNameprop with which it optionally loads an assay protocol. Each time, however, it loads all of the assay definitions in the requested container which can be overly burdensome, especially, in containers with a large number of assays defined.This change is an optimization which changes the wrapper to only request the assay definition associated with the provided
assayNameif/when it is furnished. This can have a significant impact on initial page load times for our/assayroutes since they only need the assay definition of the protocol being requested.For example, locally I have a container with 127 assay definitions which is taking ~8 seconds to fulfill the
assay-assayList.apirequest for an assay page. With this change, the time is down to sub 200ms.That said, there are other usages of
withAssayModelsthat do not specify anassayNameprop which will continue to request all of the definitions in the container. This PR doesn't attempt to optimize those and we'll seek to address them at later date.Related Pull Requests
Changes
assayNameprop is specified onwithAssayModels, then only load the associated assay definition rather than all definitions in the container.