I was sure there already was an open issue for this, but apparently not.
Currently, we provide the entire study with all study/assay table rows from an Ajax view into the client when loading the sample sheets Vue app. This was previously optimized into a condition enough to handle studies the size of N rows, but recently we have seen the introduction of studies the size of N*3 into our production server and the whole thing becomes way too unscalable.
AgGrid does provide APIs for dynamically loading data, so we should implement that. For the browser view with cache enabled, this should be quite simple: simply return rows x-y from the cached data.
For editing, things becomes more interesting. We do comparisons with table data within the client, so if we haven't loaded some data we can't compare to it. This has to be rethought somehow. It's also possibly we initially implement this only for the browser mode. I will think about it.
In any case, this should be done for the new Vue app version after doing #994 to avoid needless double work. In fact, it might require even waiting for the release where we drop the initial version of the app, but we'll see.
It would also make sense to look at #1559 while doing this, as that would optimize things further. Also related to #899, but that should definitely be done only after retiring the old app.
Tagging this tentatively for v1.2, but that may change.
Spec (WIP)
Add handling of dynamic requests to Ajax views
Implement dynamic data loading with AgGrid in browsing mode
Implement dynamic data loading in editing mode?
Add settings to control amount of data loaded at once?
I was sure there already was an open issue for this, but apparently not.
Currently, we provide the entire study with all study/assay table rows from an Ajax view into the client when loading the sample sheets Vue app. This was previously optimized into a condition enough to handle studies the size of N rows, but recently we have seen the introduction of studies the size of N*3 into our production server and the whole thing becomes way too unscalable.
AgGrid does provide APIs for dynamically loading data, so we should implement that. For the browser view with cache enabled, this should be quite simple: simply return rows x-y from the cached data.
For editing, things becomes more interesting. We do comparisons with table data within the client, so if we haven't loaded some data we can't compare to it. This has to be rethought somehow. It's also possibly we initially implement this only for the browser mode. I will think about it.
In any case, this should be done for the new Vue app version after doing #994 to avoid needless double work. In fact, it might require even waiting for the release where we drop the initial version of the app, but we'll see.
It would also make sense to look at #1559 while doing this, as that would optimize things further. Also related to #899, but that should definitely be done only after retiring the old app.
Tagging this tentatively for v1.2, but that may change.
Spec (WIP)