mountetna / timur

Data browser for biologists
GNU General Public License v2.0
3 stars 6 forks source link

Preserve state in client views #234

Open graft opened 5 years ago

graft commented 5 years ago

Currently switching between view components in Timur (e.g. the Browser and the Search page) destroys state in each of those components. If you perform a Search and Browse to a record from that Search, you will lose the Search. Navigating "back" may not work either.

Instead, Timur should maintain state for each of these components, so that navigating between them does not destroy state, e.g., going from Search to Browse and back to Search would take you once more to the current Search. Or, if editing a Manifest, clicking on 'Map' and then back to Manifest would take you back to the current manifest being edited.

In order to make this change we should: 1) Amend each top-level component to store state in the Redux store, rather than in the React component state (as it currently does). 2) Add the current route/location for each component to the store. E.g. the Browser serves /:project_name/browse/:model_name/*record_name#tab_name - the current route should persist in the store. 3) Amend the Tab Bar to route to the location from (2) rather than the top-level component route (i.e., not /browse/).