Storing queries, split state, and time range in URL.
- harmonize query serialization when generating Explore URLs in
dashboards (use of `renderUrl`)
- move URL parse/serialization to Wrapper
- keep UI states under two keys, one for left and one for right Explore
- add option to angular router to not reload page on search change
- add lots of types
- fix time service function that gets triggered by URL change
Previous explore restrictions only took permissions into consideration.
* add `exploreEnabled` to global settings
* only bind `x` if enabled
* only show explore in panel menu if enabled
Access is restricted via not showing in the following places:
* hide from sidemenu
* hide from panel header menu
* disable keybinding `x`
Also adds a `roles` property to reactContainer routes that will be
checked if `roles` is set, and on failure redirects to `/`.
* time selector for explore section
* mostly ported the angular time selector, but left out the timepicker
(3rd-party angular component)
* can be initialised via url parameters (jump from panels to explore)
* refreshing not implemented for now
* moved the forward/backward nav buttons around the time selector
* moved datasource related functions to panel sub-class
* expand panel template vars for url
* added keybindings for x -> Explore
* url encoding for explore state
* panel container menu gets new Explore entry (between Edit and Share)
* entry only shows if datasource has `supportsExplore` set to true (set
for Prometheus only for now)
* click on Explore entry changes url to `/explore/state` via location provider
* `state` is a JSON representation of the panel queries
* datasources implement `getExploreState()` how to turn a panel config into explore initial
state
* Explore can parse the state and initialize its query expressions
* ReactContainer now forwards route parameters as props to component
* `pluginlist` and `singlestat` panel subclasses needed to be adapted because
`panel_ctrl` now has the location provider as a property already
This resolves issue with alert list panel getting scrollbars
attached to incorrect element. Now the panel content are
rendered correctly and all content are displayed as
expected.