- load recording rules from prometheus
- map rule name to rule query
- query hint to detect recording rules in query
- click on hint fix expands rule name to query
* Explore: Query hints for prometheus
- time series are analyzed on response
- hints are shown per query
- some hints have fixes
- fix rendered as link after hint
- click on fix executes the fix action
* Added tests for determineQueryHints()
* Fix index for rate hints in explore
- load all histogrammable metrics on start, based on `{le!=''}` series
query
- select dropdown shows all those metrics as well as histograms in a
special group
- select a metric will write fill the metric in the query box
- if a histogram is chosen, it will write a complete
`histogram_quantile` query
- added new dependency: rc-cascader
- Clear All button to clear all queries and results
- moved result viewer buttons below query rows to make it more clear
that they govern result options
- position was determined by SPACE, but Prometheus selectors can
contain spaces
- added negative lookahead to check if space is outside a selector
- moved braces plugin into PromQueryField since braces are prom specific
- queries are saved to localstorage history array
- one history per datasource type (plugin ID)
- 100 items kept with timestamps
- history suggestions can be pulled up with Ctrl-SPACE
* Explore: facetting for label completion
- unified metric and non-metric label completion
- label keys and values are now fetched fresh for each valid selector
- complete selector means only values are suggested that are supported
by the selector
- properly implemented metric lookup for selectors (until the first
metric was used which breaks when multiple metrics are present)
- typeahead tests now need a valid selection to demark the cursor
* Fix facetting queries for empty selector
* Add click on explore table cell to add filter to query
- move query state from query row to explore container to be able to set
modified queries
- added TS interface for columns in table model
- plumbing from table cell click to datasource
- add modifyQuery to prometheus datasource
- implement addFilter as addLabelToQuery with tests
* Review feedback
- using airbnb style for Cell declaration
- fixed addLabelToQuery for complex label values
* Refactor Explore query field
- extract typeahead field that only contains logic for the typeahead
mechanics
- renamed QueryField to PromQueryField, a wrapper around TypeaheadField
that deals with Prometheus-specific concepts
- PromQueryField creates a promql typeahead by providing the handlers
for producing suggestions, and for applying suggestions
- The `refresher` promise is needed to trigger a render once an async
action in the wrapper returns.
This is prep work for a composable query field to be used by Explore, as
well as editors in datasource plugins.
* Added typeahead handling tests
- extracted context-to-suggestion logic to make it testable
- kept DOM-dependent parts in main onTypeahead funtion
* simplified error handling in explore query field
* Refactor query suggestions
- use monaco's suggestion types (roughly), see
https://github.com/Microsoft/monaco-editor/blob/f6fb545/monaco.d.ts#L4208
- suggest functions and metrics in empty field (ctrl+space)
- copy and expand prometheus function docs from prometheus datasource
(will be migrated back to the datasource in the future)
* Added prop and state types, removed unused cwrp
* Split up suggestion processing for code readability
- new builtin datasource plugin "Logging" (likely going to be renamed)
- plugin implements no panel ctrls yet, only ships datasource
- new models for logging data as first class citizen (aside from table
and time_series model)
- Logs as new view for Explore
- JSON view for development
Testable only against existing logish deployment.
Then test with queries like `{job="..."} regexp`.
- classic dashboard panels inject a dynamic query interval as part of
the query options. Explore did not have that.
- this PR adds the interval calculation to Explore
- interval based on Explore container's width
- ensure min interval if set in datasource
Adds a datasource selector to the Explore UI. Only datasource plugins
that have `explore: true` in their `plugin.json` can be selected.
- adds datasource selector (based on react-select) to explore UI
- adds getExploreSources to datasource service
- new `explore` flag in datasource plugins model
- Prometheus plugin enabled explore
* Rewriting team pages in react
* teams to react progress
* teams: getting team by id returns same DTO as search, needed for AvatarUrl
* teams: progress on new team pages
* fix: team test
* listing team members and removing team members now works
* teams: team member page now works
* ux: fixed adding team member issue
* refactoring TeamPicker to conform to react coding styles better
* teams: very close to being done with team page rewrite
* minor style tweak
* ux: polish to team pages
* feature: team pages in react & everything working
* fix: removed flickering when changing tabs by always rendering PageHeader
* button to bring a up a duplicate explore area to compare
* side by side rendering of two explore components
* right component has close button
* left component has page title
* style header like other grafana components
* use panel container for graph and same styles for query field
* fix typeahead CSS selector (was created outside of .explore)
* use navbar buttons for +/- of rows
* moved elapsed time under run query button
* fix JS error on multiple timeseries being returned
* fix color for graph lines
* show prometheus query errors
* 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
* adds +/- buttons to query rows in the Explore section
* on Run Query all query expressions are submitted
* `generateQueryKey` and `ensureQueries` are helpers to ensure each
query field has a unique key for react.
* adds `npm start` / `yarn start` script
* starts a webpack-dev-server using the dev config, served on :3333
* hot reloading (HMR) for react/styles, not working for angular code
* new entry `dev.ts` for dynamic imports of CSS theme (ExtractText does
not work with HMR)
* TS loader pipeline moved out of common to add HMR for react
* applied `hot()` to some react containers (that's their new default
export, named exports remains for testing)
* added sections to README
* updated yarn.lock