* Fuzzy search prototype
* Aggregate filter and sorting functions for auto-complete suggestions
* Add a test for fuzzy search
* Simplify setting fuzzy search information
* Rename SimpleHighlighter
* Test PartialHighlighter
* Add PartialHighlighter snapshot
* Simplify PartialHighlighter
* Revert env change
* Clean up the code
* Add fuzzy search for labels
* Bring back backwards compatiblity
* Expose search function type only
* Update docs
* Covert snapshot test to assertions
* Fix docs
* Fix language provider test
* Add a test for autocomplete logic
* Clean up
* Mock Editor functions
* Add fuzzy search to Prometheus labels
* Add docs about backwards compatibility
* Simplify main fuzzy search loop
* WIP, works but need to do more testing
* Update solution
* Fix autocomplete with metrics
* Update public/app/plugins/datasource/prometheus/language_provider.ts
* Update public/app/plugins/datasource/prometheus/language_provider.ts
* Change test for new functionality
* Prometheus: Add metadata for summary metrics
- summary metrics don't have metadata available from the metadata API,
so Grafana can help and just add it
- given a summary metric `foo`, we add metadata info for `foo_sum` and
`foo_count`
- with tests
* Update public/app/plugins/datasource/prometheus/language_utils.ts
Co-authored-by: gotjosh <josue@grafana.com>
Co-authored-by: gotjosh <josue@grafana.com>
* Prometheus: Add off switch for metric/label name lookup
This will help users with amounts of metric name
data that is too much for a browser to handle.
Autocomplete will be disabled and metrics chooser hidden,
since obviously both rely on this data.
Fixes#22702
* Use onUpdateDatasourceJsonDataOptionChecked
... from `@grafana/data`. Refactor naming to faciliate its
use and stick with prop names as passed down from
`ConfigEditor`.
PLUS:
- Rephrase switch label, add a tooltip and reduce the
size of the to what "Custom query parameters" originally
was.
- Change `languageProvider` type in `PromQueryField`.
* Put language provider back in
Functions and history still work, even when metrics
lookup gets disabled.
Also: Rewording of setting.
* Display a message when lookup got disabled manually
* Call property for setting disableMetricsLookup
* Show disabled metrics chooser instead of warning
* Fixing issue 16090 where Grafana uses illegal characters in requests to Prometheus
* Rebase with Grafana and Merge branch 'master' of https://github.com/BhartiAgrawalNvidia/grafana into fix-16090
# Conflicts:
# public/app/plugins/datasource/prometheus/language_provider.ts
* Rebase with Grafana and Merge branch 'master' of https://github.com/BhartiAgrawalNvidia/grafana into fix-16090
# Conflicts:
# public/app/plugins/datasource/prometheus/language_provider.ts
* Use querystring to escape the url
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
* Prometheus: Disable suggestions at beginning of value
- fixed comparison operator regex
- no longer suggest anything at beginning of label value
* Detect cursor in front of label values
* Loki: fix filter expression suggestions
- dont suggest term completion items in filter expression
- allow at least one character before suggesting term items
- keep logql expression when switching between Metrics/Logs mode
- show only history by default in completion items
* Clear results when changing mode
- `unless`, `or` and `and` are binary operators
- if they appear in a query the query was broken up so the suggestor
only works on the current term
- this change fixes the splitter logic to make sure those keywords are
not inside a word
* Prometheus: Display HELP and TYPE of metrics if available
- Prometheus recently added a metadata API around HELP and TYPE of
metrics
- request metadata when datasource instance is created
- use metadata to show help and type in typeahead suggestions and in
metrics selector as tooltip
* Fix types
* Prometheus: disable dynamic label lookup on big datasources
- when a prometheus datasource has more than 10000 metrics, label lookup
for the query field is disabled
- installations of that size have slow typehead lookup times and make
the editor sluggish
* Raise dynamic lookup threshold to 10000 metrics
* Run start tasks again
* Style: made outlined buttons and used it in Alert component
* Refactor: clean up state on load data source failure
* Refactor: test data source thunk created
* Refactor: move logic to changeDatasource and call that from intialize
* Refactor: move load explore datasources to own thunk
* Refactor: move logic to updateDatasourceInstanceAction
* Tests: reducer tests
* Test(Explore): Added tests and made thunkTester async
* Fix(Explore): Fixed so that we do not render StartPage if there is no StartPage
* Fix(Explore): Missed type in merge
* Refactor: Thunktester did not fail tests on async failures and prevented queires from running on datasource failures
* Feat: Fadein error alert to prevent flickering
* Feat: Refresh labels after reconnect
* Refactor: Move useLokiForceLabels into useLokiLabels from PR comments
* Feat: adds refresh metrics to Prometheus languageprovider
* Style: removes padding for connected datasources
* Chore: remove implicit anys
Tab completion gets in the way when constructing a query from the inside
out:
```
up| => |up => sum(|up)
```
At that point the language provider will not suggest anything.
In aggregation contexts using the alternate syntax form, labels will
precede metrics. A cursor at the label position cannot provide
meaningful suggestions unless a metric is specified. In the latter case,
no suggestions are presented at all.
Related: #13690
- changed `start()` to return promise on main language feature task
- promise resolves to list of secondary tasks
- speeds up time to interaction of metric selector
- lazy loading of certain metric selector and log label selector items
- loading indication of metric and log label selectors
this is a fix-up PR that cleans up Explore Logging after the recent
restructuring.
- log results need to be merged since query transactions have been
introduced
- logging DS has its own language provider, query field, and start page
(some of them based on prometheus components)
- added loader animation to log viewer
- removed logging logic from prometheus components
No label suggestions were being returned for multi-line aggregation
contexts because the parsed selector string does not see the full
context before a `by` or `without` clause.
This solution stitches together all text nodes that comprise the query
editor to ensure the selector has sufficient context to generate
suggestions.
Also, an additional workaround has been included to ensure range vector
syntax does not disrupt label suggestions in aggregation contexts.
Related: #12890