You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The sidebar filtering component <FilterData> updates on any filter change (not date range). Each time it calls its makeOptions method which recomputes all options (to show in the dropdown), even though most of them are unchanged. In particular, calling collectGenotypeStates can be expensive and is completely unnecessary. Depending on the size of the tree and the number of attributes to be searched on each node this can be expensive and result in the filtering dropdown appearing janky¹. We should be able to use prop diffing to only recompute what has (or may have) changed.
Note: the options are calculated every render time, but we're debouncing the callback which hands them to . Can't we just defer the calculation of options to this callback?
¹ This will also relate to the rendering component we use, and we should also look into profiling and improving that, either here or elsewhere.
The text was updated successfully, but these errors were encountered:
Originally part of #1878
The sidebar filtering component
<FilterData>
updates on any filter change (not date range). Each time it calls its makeOptions method which recomputes all options (to show in the dropdown), even though most of them are unchanged. In particular, callingcollectGenotypeStates
can be expensive and is completely unnecessary. Depending on the size of the tree and the number of attributes to be searched on each node this can be expensive and result in the filtering dropdown appearing janky¹. We should be able to use prop diffing to only recompute what has (or may have) changed.Note: the options are calculated every render time, but we're debouncing the callback which hands them to . Can't we just defer the calculation of options to this callback?
¹ This will also relate to the rendering component we use, and we should also look into profiling and improving that, either here or elsewhere.
The text was updated successfully, but these errors were encountered: