Commit Graph
100 Commits
Author SHA1 Message Date
David 6316d637f1 Explore: Apply tab completion suggestion on Enter (#12904)
- if the suggestions menu is open, apply the selected item on Enter
- if not open, run the queries
2018-08-20 19:22:55 +02:00
David 1c185ef8d8 Add commit to external stylesheet url (#12902)
- currently only the release is used as a fingerprint which produces
  caching issues for all lastest master builds
- also add build commit to url fingerprint
- make bra also watch go html template files
2018-08-13 15:40:52 +02:00
David Kaltschmidt 978e89657e Explore: Fix label filtering for rate queries
- exclude `]` from match expression for selector injection to ignore
  range vectors like `[10m]`
2018-08-13 12:53:12 +02:00
David Kaltschmidt 0f5945c557 Explore: still show rate hint if query is complex
- action hint currently only works for very simple queries
- show a hint w/o action otherwise
2018-08-10 15:29:21 +02:00
David Kaltschmidt a0fbe3c296 Explore: Filter out existing labels in label suggestions
- a valid selector returns all possible labels from the series API
- we only want to suggest the label keys that are not part of the
  selector yet
2018-08-10 14:45:09 +02:00
David Kaltschmidt e832f91fb6 Fix initial state in split explore
- remove `edited` from query state to reset queries
- clear more properties in state
2018-08-10 13:37:15 +02:00
David b9f4666821 Merge pull request #12846 from grafana/davkal/explore-rules-expansion
Explore: expand recording rules for queries
2018-08-09 14:34:08 +02:00
David 1c63f7a61f Update NOTICE.md 2018-08-09 10:51:04 +02:00
David Kaltschmidt 9d66eeb10c Fix padding for metrics chooser in explore 2018-08-09 10:21:54 +02:00
David Kaltschmidt 128a5d98e1 Explore: expand recording rules for queries
- 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
2018-08-08 16:56:21 +02:00
David c1b9bbc2cf Explore: Query hints for prometheus (#12833)
* 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
2018-08-08 17:50:30 +03:00
David 91d04b87ad Merge pull request #12821 from grafana/davkal/explore-query-ux
Explore: prometheus query helpers
2018-08-07 17:56:08 +02:00
David Kaltschmidt 2961c3b3b9 Review feedback
- use color variables for cascader styles
- fix Table value type
2018-08-07 17:42:00 +02:00
David Kaltschmidt 642374de25 Explore: Metrics chooser for prometheus
- 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
2018-08-07 13:43:32 +02:00
David Kaltschmidt 307248f713 Add clear row button
- clears the content of a query row
2018-08-07 13:43:32 +02:00
David Kaltschmidt 00f04f4ea0 Add clear button to Explore
- 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
2018-08-07 13:42:32 +02:00
David f43735ac25 Merge pull request #12813 from grafana/davkal/explore-empty-results
Explore: show message if queries did not return data
2018-08-07 13:40:32 +02:00
David Kaltschmidt f1c1633d15 Explore: show message if queries did not return data
- every result viewer displays a message that it received an empty data
  set
2018-08-07 13:03:33 +02:00
David 0f94d2f5f1 Fix closing parens completion for prometheus queries in Explore (#12810)
- 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
2018-08-07 13:34:12 +03:00
David 34761205fd Merge pull request #12799 from grafana/davkal/explore-history
Explore: Add history to query fields
2018-08-06 17:46:15 +02:00
David Kaltschmidt cda3b01781 Reversed history direction for explore
- _.reverse() was modifying state.history
2018-08-06 14:45:03 +02:00
David Kaltschmidt eaff7b0f68 Explore: Add history to query fields
- 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
2018-08-06 14:45:03 +02:00
David 5da3584dd4 Explore: facetting for label completion (#12786)
* 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
2018-08-06 15:36:02 +03:00
David Kaltschmidt c900a30106 renamed slate unit tests to .jest.ts 2018-08-03 13:09:05 +02:00
David bda49fcaa2 Add click on explore table cell to add filter to query (#12729)
* 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
2018-08-03 11:20:13 +03:00
David 7699451d94 Refactor Explore query field (#12643)
* 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
2018-07-26 15:04:12 +03:00
David 1db2e869c5 Merge pull request #12718 from grafana/davkal/ts-options
Add tslib to TS compiler
2018-07-26 10:41:14 +02:00
David Kaltschmidt 84e431d377 Add tslib to TS compiler
- using tslib reduces bundle sizes
- add compiler option for easier default imports of CJS modules
- remove double entry of fork-ts-checker-plugin
- speed up hot reload by using exprimental ts-loader API
2018-07-25 17:06:44 +02:00
David 4d722b2177 Merge pull request #12675 from grafana/davkal/logging-datasource
Datasource for Grafana logging platform
2018-07-23 18:11:11 +02:00
David 76bc02b3fa Update CHANGELOG.md
Added #12597
2018-07-23 14:58:11 +02:00
David b09a7c5dd6 Merge pull request #12597 from dehrax/7664-query-var
Interval and range in query template variable
2018-07-23 14:48:49 +02:00
David Kaltschmidt 3297ae462d Datasource for Grafana logging platform
- 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`.
2018-07-20 17:07:17 +02:00
David bfd05ba6ec Merge pull request #12617 from grafana/davkal/prometheus-value-formatting
Make prometheus value formatting more robust
2018-07-18 17:11:16 +02:00
David Kaltschmidt 3ab5ab3674 Fix label suggestions in Explore query field
- In 0425b477 the labels suggestions were refactored and a typo broke
  the look up for available lables of a metric
2018-07-18 13:20:18 +02:00
David 21e5d61de6 Merge pull request #12631 from grafana/davkal/explore-url-encoding
Use url params for explore state
2018-07-17 16:49:13 +02:00
David 5c6adbbada Merge pull request #12630 from grafana/davkal/explore-empty-error
Dont parse empty explore state from url
2018-07-17 16:48:23 +02:00
David b526150578 Merge pull request #12634 from grafana/davkal/explore-step
Explore: calculate query interval based on available width
2018-07-17 16:36:51 +02:00
David Kaltschmidt 02427ef88d Explore: calculate query interval based on available width
- 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
2018-07-17 15:13:44 +02:00
David Kaltschmidt c6e9ffb168 Use url params for explore state
- putting state in the path components led to 400 on reload
- use `/explore?state=JSON` instead
2018-07-17 12:56:05 +02:00
David Kaltschmidt f67b27e009 Dont parse empty explore state from url
- only parse url state if there is any
- prevents parse exception in the console on empty explore state
2018-07-17 12:24:04 +02:00
David Kaltschmidt 1f74b298c4 Remove string casting for template variables in prometheus 2018-07-16 13:02:36 +02:00
David Kaltschmidt 1efe34e6cf Make prometheus value formatting more robust
- prometheus datasources passes its own interpolator function to the
  template server
- that function relies on incoming values being strings
- some template variables may be non-strings, e.g., `__interval_ms`,
  which throws an error

This PR makes this more robust.
2018-07-16 12:40:55 +02:00
David a13b4f2b3f Merge pull request #12596 from grafana/davkal/explore-datasource-selector
Explore Datasource selector
2018-07-16 11:13:29 +02:00
David Kaltschmidt eb2abe800b Reverted $q to Promise migration in datasource_srv 2018-07-13 22:28:14 +02:00
David Kaltschmidt 390090da05 Set datasource in deep links to Explore 2018-07-13 09:45:56 +02:00
David Kaltschmidt d06b26de26 Explore Datasource selector
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
2018-07-13 09:09:36 +02:00
David 64c77febef Merge pull request #12586 from dehrax/12075-iframe-scroll
Prevent scroll on focus for iframe
2018-07-12 16:10:06 +02:00
David 030d06331f Merge pull request #12585 from grafana/davkal/fix-plugin-css-loader-2
Fix freezing browser when loading plugin
2018-07-12 14:51:45 +02:00
David Kaltschmidt 81e62e1051 Fix freezing browser when loading plugin
- broken since 4d2dd2209
- `*` was previously working as a path matcher, but freezes browser when
  used with new cache-busting plugin loader
- changed matcher to be `/*`
2018-07-12 13:16:41 +02:00
David 4d2dd22095 Fix css loading in plugins (#12573)
- allow css loader to be imported again (wasnt prefixed by plugin)
2018-07-11 03:29:19 -07:00
David 9595f992b9 Merge pull request #12496 from dehrax/12224-prostgres-ds
Karma to Jest: 3 data sources
2018-07-10 11:13:44 +02:00
David 25bcdbcab1 Merge pull request #12284 from grafana/davkal/queryfield-refactor
Query field refactorings to support external plugins
2018-07-09 11:29:59 +02:00
David Kaltschmidt 7ddcaf22d5 Fix datasource sorting with template variables
- fixes sorting when template variables are present
- simplified existing test cases
- added test to cover variable usage in datasource service
2018-07-06 15:32:08 +02:00
David 0d1f7c8782 Fix bar width issue in aligned prometheus queries (#12483)
* Fix bar width issue in aligned prometheus queries

This was broken because null values were filled in with unaligned times.

* use aligned times for result transformation
* add tests

An earlier version of this fix aligned the times again in the transformer, but
I think it's safe to only deal with aligned times in the response.

* Fixed prometheus heatmap tranformer test

The interval needs to be 1 to prevent step alignment.
2018-07-02 11:04:36 -07:00
David Kaltschmidt d5196ab322 remove internal influx ifql datasource 2018-06-14 20:42:33 +01:00
David Kaltschmidt a9e1e5f346 Fix queryfield wrapper css 2018-06-14 16:20:48 +01:00
David Kaltschmidt bbe6ab5096 Fix Queryfield metrics field missing 2018-06-14 16:20:33 +01:00
David Kaltschmidt b2f497b100 batch DOM reads from query field typeahead 2018-06-14 16:20:21 +01:00
David Kaltschmidt 73ddf2c3ed hint support for typeahead 2018-06-14 16:20:09 +01:00
David Kaltschmidt 2ebda4bf4d Make suggestions an object 2018-06-14 16:19:55 +01:00
David Kaltschmidt 4113f7db47 Trigger typeahead on Ctrl-Space 2018-06-14 16:19:43 +01:00
David Kaltschmidt 0425b47791 refactor Explore query field 2018-06-14 16:19:29 +01:00
David Kaltschmidt 5ec7d60e5f Removed papaparse from external plugin exports 2018-06-14 13:22:16 +01:00
David Kaltschmidt eb686c06f2 Expose react and slate to external plugins
Experimental support for react in external plugins

- react
- slate (editor)
- papaparse (csv parsing)
- prismjs (syntax highlighting)

This is needed for new external datasource plugins like Flux
2018-06-14 12:32:57 +01:00
David Kaltschmidt ab76864e61 hot-fix ifql testdatasource() 2018-06-08 14:56:48 +02:00
David 82ae7c6eee Merge pull request #12167 from grafana/davkal/ifql-helpers
Query helpers, Annotations, and Template Variables for IFQL datasource
2018-06-07 10:24:21 +02:00
David Kaltschmidt cdba2bd184 Annotations support for ifql datasource 2018-06-06 16:11:40 +02:00
David Kaltschmidt 2c86484e54 Template variable support for ifql datasource
* Implements findMetricQuery()
* Macros for template queries: measurements(), tags(), tag_values(),
 field_keys()
* Tests for macro expansion
2018-06-06 14:11:48 +02:00
David Kaltschmidt 3bd58446d6 Fix metrics panel test by adding config mock 2018-06-06 11:15:24 +02:00
David Kaltschmidt 661503f828 Respect explore settings in config ini
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
2018-06-06 10:50:47 +02:00
David Kaltschmidt 56fc82151b Add .html to webpack.hot resolve extensions 2018-06-06 09:12:06 +02:00
David Kaltschmidt d7379912c1 Query helpers for IFQL datasource
* raw CSV preview next to query field (query inspector is not that
 useful here)
* added result table and record counts
2018-06-05 17:15:35 +02:00
David 45a156577c Merge pull request #12143 from grafana/davkal/ifql-datasource
InfluxDB IFQL datasource (beta)
2018-06-05 14:23:21 +02:00
David Kaltschmidt 64f5874778 Remove round-robin urls in ifql DS 2018-06-05 13:49:35 +02:00
David Kaltschmidt 1d587450b3 IFQL range variable expansion 2018-06-05 13:42:32 +02:00
David 95aef8241c Merge pull request #12146 from grafana/12144-new-variable-save
added if to check if new variable has been added
2018-06-04 17:26:48 +02:00
David b5c53aae97 Merge pull request #12108 from grafana/davkal/12001-explore-permissions
Restrict Explore UI to Editor and Admin roles
2018-06-04 16:01:39 +02:00
David Kaltschmidt 08ee1da6b1 InfluxDB IFQL datasource 2018-06-04 12:24:47 +02:00
David 13a9701581 Update CHANGELOG.md
- added Prometheus query date alignment
2018-06-01 10:13:48 +02:00
David Kaltschmidt 0c45ee63a9 Guard /explore by editor role on the backend 2018-05-31 11:26:24 +02:00
David Kaltschmidt 827fb7e8de Fix karma tests that rely on MetricsPanelCtrl 2018-05-30 15:24:47 +02:00
David Kaltschmidt 7224ca6c62 Fix panel menu test 2018-05-30 13:24:09 +02:00
David Kaltschmidt f69654fcd5 Restrict Explore UI to Editor and Admin roles
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 `/`.
2018-05-30 13:13:29 +02:00
David 7a3c1e162c Merge pull request #11942 from grafana/davkal/design-integration
Explore: Time selector, split view, design integration
2018-05-30 12:27:24 +02:00
David Kaltschmidt ac1dda3b3a Fix CSS to hide grid controls in fullscreen/low-activity views
* there was a comma missing to hide the handles, fixed now
* added new styles to hide header interaction in full screen panels
2018-05-30 12:07:51 +02:00
David 40844614bf Merge pull request #12096 from grafana/davkal/11446-fix-systemjs-cachebust
Fix cache busting for systemjs imports for plugins
2018-05-30 10:05:46 +02:00
David 9b9e3962c5 Merge pull request #12072 from grafana/davkal/12024-fix-alignment
Changed Prometheus interval-alignment to cover whole panel range
2018-05-29 15:03:06 +02:00
David c67d72db63 Merge pull request #12041 from grafana/davkal/11931-table-docs
Document table row merge for multiple queries
2018-05-29 12:08:55 +02:00
David Kaltschmidt 8bcd55d221 Fix cache busting for systemjs imports for plugins
* everything imported via systemjs in the path `plugin/` will get a
 timestamp appended for cache busting
* timestamp is set once on page load
* plugin css loader gets cache buster too
2018-05-29 12:01:10 +02:00
David Kaltschmidt 6d8d6cdb57 Fix sourcemaps for webpack hot config 2018-05-28 20:32:33 +02:00
David Kaltschmidt ebe8e62bd5 Split webpack dev config into dev and hot
Motivation:

* too many conditionals for config, better to be explicit
* different priorities: faster build for hot mode
* working SCSS sources for styles in hot mode

The biggest differences:

* removed linter from TS loader in hot (should be editor or precommit
 or responsibility)
* simplified styles loading
* hot needs more extensions to resolve
* removed commons chunking for hot
* removed devServer from dev

Reduced HMR time from 8s to 4s on my machine.
2018-05-28 13:49:15 +02:00
David ced8c5f0e4 Upgrade webpack loaders (#12081)
* upgrade all webpack loaders to recent version
* keep TS loader at 4.0.0 (5.0.0 requires webpack 4)
* remove unused json-loader
2018-05-28 13:46:57 +02:00
David Kaltschmidt 750ea9bbdd Changed Prometheus interval-alignment to cover whole panel range
* the existing query date alignment shifts the range forward to match
a multiple epoch of the interval, but keeps the range length the same,
the result is that the start date is shifted forward as well, leaving a
gap in the graph (or a zero-line when null-as-zero was set, issue #12024)
* this pr extends the aligned range to cover the original start date as
well
2018-05-25 16:46:38 +02:00
David Kaltschmidt 27e7a28b37 Review feedback (heading, typos)
* iff and therefor
* mention merge in heading
* add note about checking query inspector
2018-05-25 14:47:46 +02:00
David Kaltschmidt 448b1cbc15 Integrated dark theme for explore UI 2018-05-25 12:51:27 +02:00
David Kaltschmidt f5e351af8b Explore split view
* 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
2018-05-24 10:55:01 +02:00
David Kaltschmidt 23c9da6162 Fixed custom dates for react timepicker
* added jest tests for timepicker component
2018-05-24 10:55:01 +02:00
David Kaltschmidt eadaff6191 Explore: Design integration
* 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
2018-05-24 10:55:00 +02:00
David Kaltschmidt 0d3f24ce54 Explore: time selector
* 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
2018-05-24 10:55:00 +02:00
David Kaltschmidt 61b296afad Document table row merge for multiple queries
* added section to table feature docs
* marked as 5.0+ feature
* concrete examples of what works and the limits
2018-05-23 17:08:54 +02:00