Modify actions in search page triggering a page reload #2798
Many actions in the search page trigger a full page reload, either because they use links to navigate to another page, or because they submit a form to the server.
That was needed in previous versions of the web interface (prior 2.0) but now can be replaced by a combination of react-router and a refresh of the reflux stores involved in the search. This has the advantage of avoiding the page reload, avoiding asking the server for the web interface assets (as described in #2488), and also avoiding flashes with the login page (as described in #2770).
This PR takes care of modifying some of those actions to avoid page reloads when:
This PR intentionally does not take care of:
Motivation and Context
The changes were motivated by #2488, and they also fix that issue.
How Has This Been Tested?
I have checked that these search elements still work after the changes:
* Avoid page reload when a search param changes When changing the search page or histogram resolution, do not force a full page reload, but change the URL. That triggers an update of the stores involved in the search. Refs #2488 * Avoid page reload on search submit Prevent the submit of new searches, and change the URL instead. That triggers an update on the stores involved in the search page. Refs #2488 * Use latest search to get widget parameters Delay fetching search parameters to create widgets until the last moment, so we ensure the parameters used are the ones from the latest search performed. * Avoid page reload when loading saved search Instead replace URL and let search stores to fetch new data. Refs #2488 * Fix search page sorting After the last changes in the search reload behaviour, remove the `sortField` and `sortOrder` options from `SearchResult`'s state and rely on `SearchStore` to provide the right values. * Add search loading indicator Since we don't reload the search page now, we need a way of giving feedback to the user when the search is being loaded. This commit introduces a loading indicator in the bottom right corner of the screen for such purpose. * Remove unused openLink method * Make search loading indicator reusable (cherry picked from commit f51e5ca)