* Part1: Unicons implementation (#23197)
* Create a new Icon component
* Update icons in main sidebar
* Update icons in Useful links and in react components on main site
* Update icons in Useful links and in main top navigation
* Adjust sizing
* Update panel navigation and timepicker
* Update icons in Panel menu
* NewPanelEditor: Fixed so that test alert rule works in new edit mode (#23179)
* Update icons in add panel widget
* Resolve merge conflict
* Fix part of the test errors and type errors
* Fix storybook errors
* Update getAvailableIcons import in storybook knobs
* Fix import path
* Fix SyntaxError: Cannot use import statement outside a module in test environment error
* Remove dynamic imports
* Remove types as using @ts-ignore
* Update snapshot test
* Add @iconscout/react-unicons to the shouldExclude list as it is blundled with es2015 syntax
* Remove color prop from icon, remove color implemetation in mono icons
* Update navbar styling
* Move toPascalCase to utils/string
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Resolve type errors resulted from merge
* Part2: Unicons implementation (#23266)
* Create a new Icon component
* Update icons in main sidebar
* Update icons in Useful links and in react components on main site
* Update icons in Useful links and in main top navigation
* Adjust sizing
* Update panel navigation and timepicker
* Update icons in Panel menu
* Update icons in add panel widget
* Resolve merge conflict
* Fix part of the test errors and type errors
* Fix storybook errors
* Update getAvailableIcons import in storybook knobs
* Fix import path
* Fix SyntaxError: Cannot use import statement outside a module in test environment error
* Remove dynamic imports
* Remove types as using @ts-ignore
* Update snapshot test
* Add @iconscout/react-unicons to the shouldExclude list as it is blundled with es2015 syntax
* Implment icons in Tabs
* Implement icons in search items and empty list
* Update buttons
* Update button-related snapshot tests
* Update icons in modals and page headers
* Create anfular wrapper and update all icons on search screen
* Update sizing, remove colors, update snapshot tests
* Remove color prop from icon, remove color implemetation in mono icons
* Remove color props from monochrome icons
* Complete update of icons for search screen
* Update icons for infor tooltips, playlist, permissions
* Support temporarly font awesome icons used in enterprise grafana
* Part1: Unicons implementation (#23197)
* Create a new Icon component
* Update icons in main sidebar
* Update icons in Useful links and in react components on main site
* Update icons in Useful links and in main top navigation
* Adjust sizing
* Update panel navigation and timepicker
* Update icons in Panel menu
* NewPanelEditor: Fixed so that test alert rule works in new edit mode (#23179)
* Update icons in add panel widget
* Resolve merge conflict
* Fix part of the test errors and type errors
* Fix storybook errors
* Update getAvailableIcons import in storybook knobs
* Fix import path
* Fix SyntaxError: Cannot use import statement outside a module in test environment error
* Remove dynamic imports
* Remove types as using @ts-ignore
* Update snapshot test
* Add @iconscout/react-unicons to the shouldExclude list as it is blundled with es2015 syntax
* Remove color prop from icon, remove color implemetation in mono icons
* Update navbar styling
* Move toPascalCase to utils/string
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Icons update
* Add optional chaining to for isFontAwesome variable
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Part3: Unicons implementation (#23356)
* Create a new Icon component
* Update icons in main sidebar
* Update icons in Useful links and in react components on main site
* Update icons in Useful links and in main top navigation
* Adjust sizing
* Update panel navigation and timepicker
* Update icons in Panel menu
* Update icons in add panel widget
* Resolve merge conflict
* Fix part of the test errors and type errors
* Fix storybook errors
* Update getAvailableIcons import in storybook knobs
* Fix import path
* Fix SyntaxError: Cannot use import statement outside a module in test environment error
* Remove dynamic imports
* Remove types as using @ts-ignore
* Update snapshot test
* Add @iconscout/react-unicons to the shouldExclude list as it is blundled with es2015 syntax
* Implment icons in Tabs
* Implement icons in search items and empty list
* Update buttons
* Update button-related snapshot tests
* Update icons in modals and page headers
* Create anfular wrapper and update all icons on search screen
* Update sizing, remove colors, update snapshot tests
* Remove color prop from icon, remove color implemetation in mono icons
* Remove color props from monochrome icons
* Complete update of icons for search screen
* Update icons for infor tooltips, playlist, permissions
* Support temporarly font awesome icons used in enterprise grafana
* Part1: Unicons implementation (#23197)
* Create a new Icon component
* Update icons in main sidebar
* Update icons in Useful links and in react components on main site
* Update icons in Useful links and in main top navigation
* Adjust sizing
* Update panel navigation and timepicker
* Update icons in Panel menu
* NewPanelEditor: Fixed so that test alert rule works in new edit mode (#23179)
* Update icons in add panel widget
* Resolve merge conflict
* Fix part of the test errors and type errors
* Fix storybook errors
* Update getAvailableIcons import in storybook knobs
* Fix import path
* Fix SyntaxError: Cannot use import statement outside a module in test environment error
* Remove dynamic imports
* Remove types as using @ts-ignore
* Update snapshot test
* Add @iconscout/react-unicons to the shouldExclude list as it is blundled with es2015 syntax
* Remove color prop from icon, remove color implemetation in mono icons
* Update navbar styling
* Move toPascalCase to utils/string
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Update icons in Explore
* Update icons in alerting
* Update + and x buttons
* Update icons in configurations and settings
* Update close icons
* Update icons in rich history
* Update alert messages
* Add optional chaining to for isFontAwesome variable
* Remove icon mock, set up jest.config
* Fix navbar plus icon
* Fir enable-bacground to enableBackgournd
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Merge remote branch origin master to icons-unicons
* Revert "Merge remote branch origin master to icons-unicons"
This reverts commit 3f25d50a39.
* Size-up dashnav icons
* Fix alerting icons, panel headers, update tests
* Fix typecheck error
* Adjustments - add panel icon, spacing
* Set TerserPlugin sourceMap to false to prevent running out of memory when publishing storybook
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
* Utils: Use 's' as default for unit-less intervals
If the user specifies a string that is a unit-less number, it is
assumed that they meant seconds.
Fixes#22362
* Rephrase tooltip for better line break position
* Export other components as Legacy
* More Select Legacy
* Add namespacing to more files
* Export new elements
* Move Legacy Select folder
* Let's not forget the scss file
* Move new Select folder
* Move new Select from Forms namespace
* Little oopsie
* Fix errors
* Fix merge issues
* 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>
* Explore: turns off actions execution on blur for Loki
* Explore: turns off actions execution on blur for Prometheus
* Explore: updates snapshots for Loki & Prometheus after turning off onBlur
* Explore: adds QueryRowErrors component
* Explore: updates QueryRow to use QueryRowErrors component
* Explore: updates PromQueryField to remove error render
* Explore: updates Elastic query field to remove error render
* Explore: updates LokiQueryFieldForm to remove error render
* Explore: updates QueryRow component - brings back passing errors down
* Explore: removes QueryRowErrors component
* Explore: updates ErrorContainer component - moves out data filtering
* Explore: updates QueryRow component - changes QueryRowErrors to ErrorContainer
* Explore: updates Explore component - adds error filtering for ErrorContainer
* Explore: updates ErrorContainer and adds a basic test for it
* Explore: updates Explore component props name and adds a basic render test
* Explore: adds snapshots for Explore and ErrorContainer
* Explore: adds a test for error render
* Explore: adds a comment to Explore component explaining the way we filter non-query-row-specific errors
* Explore: adds getFirstNonQueryRowSpecificError method to explore utilities
* Explore: extracts getFirstNonQueryRowSpecificError method and slightly refactors Explore component
* Explore: updates Explore component tests to cover non-query-row-specific errors
* Loki, Prometheus: Fix syntax to not highlight # in quotes as a comment in queryField
* Loki, Prometheus: Fix syntax to not highlight # in quotes as a comment in queryField
* Fix regex
* PromQL, LogQL: Update syntax
* LogQL, PromQL highlighting: Add tests
* Make $__range more precise in Prometheus
It is now always equivalent to `${__range_s}s`, rather than rounding
down to an integer multiple of the biggest possible unit. For example,
a range of 47 hours is now represented as `169200s` rather than `1d`.
Closes#21689.
* Update a unit test to match new __range calc
* Chore: Remove angular dependency from backendSrv
* Refactor: Naive soultion for logging out unauthorized users
* Refactor: Restructures to different streams
* Refactor: Restructures datasourceRequest
* Refactor: Flipped back if statement
* Refactor: Extracted getFromFetchStream
* Refactor: Extracts toFailureStream operation
* Refactor: Fixes issue when options.params contains arrays
* Refactor: Fixes broken test (but we need a lot more)
* Refactor: Adds explaining comments
* Refactor: Adds latest RxJs version so cancellations work
* Refactor: Cleans up the takeUntil code
* Refactor: Adds tests for request function
* Refactor: Separates into smaller functions
* Refactor: Adds last error tests
* Started to changed so we require getBackendSrv from the @grafana-runtime when applicable.
* Using the getBackendSrv from @grafana/runtime.
* Changed so we use the getBackendSrv from the @grafana-runtime when possible.
* Fixed so Server Admin -> Orgs works again.
* Removed unused dependency.
* Fixed digest issues on the Server Admin -> Users page.
* Fix: Fixes digest problems in Playlists
* Fix: Fixes digest issues in VersionHistory
* Tests: Fixes broken tests
* Fix: Fixes digest issues in Alerting => Notification channels
* Fixed digest issues on the Intive page.
* Fixed so we run digest after password reset email sent.
* Fixed digest issue when trying to sign up account.
* Fixed so the Server Admin -> Edit Org works with backendSrv
* Fixed so Server Admin -> Users works with backend srv.
* Fixed digest issues in Server Admin -> Orgs
* Fix: Fixes digest issues in DashList plugin
* Fixed digest issues on Server Admin -> users.
* Fix: Fixes digest issues with Snapshots
* Fixed digest issue when deleting a user.
* Fix: Fixes digest issues with dashLink
* Chore: Changes RxJs version to 6.5.4 which includes the same cancellation fix
* Fix: Fixes digest issue when toggling folder in manage dashboards
* Fix: Fixes bug in executeInOrder
* Fix: Fixes digest issue with CreateFolderCtrl and FolderDashboardsCtrl
* Fix: Fixes tslint error in test
* Refactor: Changes default behaviour for emitted messages as before migration
* Fix: Fixes various digest issues when saving, starring or deleting dashboards
* Fix: Fixes digest issues with FolderPickerCtrl
* Fixed digest issue.
* Fixed digest issues.
* Fixed issues with angular digest.
* Removed the this.digest pattern.
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
Co-authored-by: Marcus Andersson <systemvetaren@gmail.com>
* Rename old cascader
* Change name of old cascader
* Add basic cascader without search
* Add basic cascader without search
* Flatten options to make it searchable
* Add regex search and make backspace work
* Add barebone search without styles
* Add SearchResult list
* Add search navigation
* Rewrite of cascader and add some things to SelectBase
* Make SelectBase controlllable
* Cleanup
* Add initial value functionality
* Add onblur to hand caret direction
* New storyboom format for ButtonCascader
* Add knobs to story
* Add story and docs for UnitPicker
* Make UnitPicker use Cascader
* Fix backspace issue and empty value
* Fix backspace issue for real
* Remove unused code
* Fix focus issue
* Change children to items and remove ButtonCascaderProps
* Remove local CascaderOption
* Fix failed test
* Revert UnitPicker changes and change format for ButtonCascader
* Fix failing tests
* Prometheus: user metrics metadata to inform query hints
- no longer analyse datapoints
- either use metrics metadata to determine metrics type or use metric
name suffix
- removed testcases based on datapoints
* Added hint certainty and tests
* 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 data source: Update tooltip for _Scrape interval_
The old tool tip was plainly wrong. The globally configured scrape
interval is not necessarily the most used scrape interval, so the new
wording is describing what actually matters. The evaluation interval
wasn't even mentioned before. And finally, the configured value is
not strictly a lower limit for the step query parameter as it can be
overridden by the panel option _Min time interval_.
I plan to explain the overriding intricacies in the tool tip for _Min
time interval_.
Signed-off-by: beorn7 <beorn@grafana.com>
* Improve tooltip for _Min step_
The previous tool tip was mostly addressing aspects that are not
specific to _Min step_ (and might be more appropriate to be added to
the _Min time interval_ tool tip as that setting has a wider
scope). The new version emphasizes the important gotchas: that this is
an _additional_ lower limit, and that it is _not_ multiplied by the
resolution factor.
Signed-off-by: beorn7 <beorn@grafana.com>
* Fixed snapshot
Co-authored-by: David <david.kaltschmidt@gmail.com>
Closes#19598
Fixes bug introduced recently where the new PromQueryEditor did not preserve
the PromContext.Explore set on the query model by PromQueryField which caused
the table to be empty for Prometheus in explore.
Much easier to wrap one's head around it if it is expressed more
directly.
This is not mathematically the same as the previous version involved
more rounding than necessary because of the way the intervalFactor was
handled. I'd argue the new version is better because it gets closer to
the 11,000 points limit and thus approaches better what the user
wanted within the limits of Prometheus.
Note that in practice, the 11,000 points limit should never be of
relevance. (Even a 4k screen doesn't have 11k points on the x axis.)
Signed-off-by: beorn7 <beorn@grafana.com>
* 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
* Chore: Move and wrap Cascader component to @grafana/ui
Closes#19042
* Removes unneeded props from interface and removes rc-trigger
* Removes more unneeded props
As discussed in a UX feedback session, it's annoying that queries are
automatically executed in Explore. This change adds props to override
the blur behavior.
- add `onBlur` to Explore query field props
- Explore's query row will pass down an empty function for onBlur to the
query fields
- pass onBlur through to the QueryField component for Loki and
Prometheus
- add test to QueryField to make sure if onBlur is specified, the
onRunQuery is not executed
* Explore: Remove datasource testing on selector
- datasource testing gets in the way of fast query iteration: switching
between datasources can take seconds
- it should not be explore's duty to test datasources in the first place
- removed the concept of datasourceError in Explore, should not be its
concern
- datasource erorrs will express themselves in query errors just fine
- connection errors are still bubbled up
- removed reconnection logic from explore, should not be its concern
- missing labels in loki are still "visible" via an empty label selector
- Loki and Prometheus treated connection errors differently than other
datasources, making sure to pass through the original error message
* Show datasource error in query field for prom/loki/influx
* Removed connection test case, fixed disabled state
* Fix redirect but adding getExploreState method to graphite
* Explore: Create interpolateVariablesInQueries function for datasources
* Explore: Add interpolateVariablesInQueries method to elasticsearch datasource
* Add interpolateVariablesInQueries function to influx and postgres
* Explore: Add interpolateVariablesInQueries to Mssql and Mysql datasources
* Explore: Add datasources to queries
* Explore: Code formatting
* Prettier formating fix
* Explore: Add rawQuery expanding of variables for influxdb
* Remove console.logs
* Explore: Add rawQuery expanding of multiple variables for influxdb
* Explore: If no queries in Influxdb, return early []
* Explore: Refactor influxDb to follow the code structure
* Loki: Updated cheat sheet with new filter syntax
- updated cheat sheet with new filter syntax
- added user-specific examples from the user's label set
- added link to LogQL docs
- separated styles for examples (clickable) and expressions
* Review feedback
* I needed to learn some rxjs and understand this more, so just playing around
* Updated
* Removed all the complete calls
* Refactoring
* StreamHandler -> observable start
* progress
* simple singal works
* Handle update time range
* added error handling
* wrap old function
* minor changes
* handle data format in the subscribe function
* Use replay subject to return last value to subscribers
* Set loading state after no response in 50ms
* added missing file
* updated comment
* Added cancelation of network requests
* runRequest: Added unit test scenario framework
* Progress on tests
* minor refactor of unit tests
* updated test
* removed some old code
* Shared queries work again, and also became so much simplier
* unified query and observe methods
* implict any fix
* Fixed closed subject issue
* removed comment
* Use last returned data for loading state
* WIP: Explore to runRequest makover step1
* Minor progress
* Minor progress on explore and runRequest
* minor progress
* Things are starting to work in explore
* Updated prometheus to use new observable query response, greatly simplified code
* Revert refId change
* Found better solution for key/refId/requestId problem
* use observable with loki
* tests compile
* fix loki query prep
* Explore: correct first response handling
* Refactorings
* Refactoring
* Explore: Fixes LoadingState and GraphResults between runs (#18986)
* Refactor: Adds state to DataQueryResponse
* Fix: Fixes so we do not empty results before new data arrives
Fixes: #17409
* Transformations work
* observable test data
* remove single() from loki promise
* Fixed comment
* Explore: Fixes failing Loki and Prometheus unit tests (#18995)
* Tests: Makes datasource tests work again
* Fix: Fixes loki datasource so highligthing works
* Chore: Runs Prettier
* Fixed query runner tests
* Delay loading state indication to 200ms
* Fixed test
* fixed unit tests
* Clear cached calcs
* Fixed bug getProcesedDataFrames
* Fix the correct test is a better idea
* Fix: Fixes so queries in Explore are only run if Graph/Table is shown (#19000)
* Fix: Fixes so queries in Explore are only run if Graph/Table is shown
Fixes: #18618
* Refactor: Removes unnecessary condition
* PanelData: provide legacy data only when needed (#19018)
* no legacy
* invert logic... now compiles
* merge getQueryResponseData and getDataRaw
* update comment about query editor
* use single getData() function
* only send legacy when it is used in explore
* pre process rather than post process
* pre process rather than post process
* Minor refactoring
* Add missing tags to test datasource response
* MixedDatasource: Adds query observable pattern to MixedDatasource (#19037)
* start mixed datasource
* Refactor: Refactors into observable parttern
* Tests: Fixes tests
* Tests: Removes console.log
* Refactor: Adds unique requestId
- upgraded rc-cascader (did not fix the alignment issue)
- Safari seems to default to middle alignment, added override to explore
styles
- added empty expand icon property to satisfy API after upgrade
* WIP: Use data frames in explore
* Explore: everything seems to be working again
* Reworked ResultProcessor tests
* Fixed unit test
* Add some typings and comments
* Performance/Webpack: Introduces more aggressive code-splitting and other perf improvements
- Introduces dynamic imports for built-in plugins
- Uses dynamic imports for various packages (rst2html, brace)
- Introduces route-based dynamic imports
- Splits angular and moment into separate bundles
* WIP: inital POC
* Wip: Moving forward
* Wip
* Refactor: Makes loading indicator work for Prometheus
* Refactor: Reverts prom observable queries because they did not work for multiple targets
* Refactor: Transforms all epics into thunks
* Fix: Fixes scanning
* Fix: Fixes so that Instant and TimeSeries Prom query loads in parallel
* Fix: Fixes negation logic error
* Wip: Introduces PanelData as a carries for query responses
* Refactor: Makes errors work again
* Refactor: Simplifies code somewhat and removes comments
* Tests: Fixes broken tests
* Fix query latency
* Remove unused code
* Explore: clear results when you change datasource
* Explore: Clear results on data source change, and fix query hints issue
* Clear results on clear all
* Prometheus: Update logic of when to re-check query hints
* WIP: inital POC
* Wip: Moving forward
* Wip
* Refactor: Makes loading indicator work for Prometheus
* Refactor: Reverts prom observable queries because they did not work for multiple targets
* Refactor: Transforms all epics into thunks
* Fix: Fixes scanning
* Fix: Fixes so that Instant and TimeSeries Prom query loads in parallel
* Fix: Fixes negation logic error
* Propagate errors in stream events, and close streams
* Added prometheus metric labels to data returned for normal time series queries
* Fixed result transformer tests for new return layout with prometheus labels
* Fixed prettier formatting
* Rerun query on input changes
Added "this.onRunQuery" for update of the input fields so that the panel updates when changed
* typo in comment
changed "fullu" to "fully"
* modified to onBlur for legend, interval
legend and interval (min step) now call for query re-run when they go 'onBlur' instead of 'onChange'
* PromQueryEditor: Updated snapshot
* Update datasource.ts
* Update datasource.test.ts
* utcOffset reverse
from moment docs, utcOffset "function returns the real offset from UTC, not the reverse offset"
* add utcOffset() to DateTime interface
method returns the UTC offset as a number of minutes
* Fixed test
* feat: Add new picker to DashNavTimeControls
* chore: noImplicitAny limit reached
* chore: noImplicityAny fix
* chore: Add momentUtc helper to avoid the isUtc conditionals
* chore: Move getRaw from Explore's time picker to grafana/ui utils and rename to getRawRange
* feat: Use helper functions to convert utc to browser time
* fix: Dont Select current value when pressing tab when using Time Picker
* fix: Add tabIndex to time range inputs so tab works smoothly and prevent mouseDown event to propagate to react-select
* fix: Add spacing to custom range labels
* fix: Updated snapshot
* fix: Re-adding getRaw() temporary to fix the build
* fix: Disable scroll event in Popper when we're using the TimePicker so the popup wont "follow" the menu
* fix: Move all "Last xxxx" quick ranges to the menu and show a "UTC" text when applicable
* fix: Add zoom functionality
* feat: Add logic to mark selected option as active
* fix: Add tooltip to zoom button
* fix: lint fix after rebase
* chore: Remove old time picker from DashNav
* TimePicker: minor design update
* chore: Move all time picker quick ranges to the menu
* fix: Remove the popover border-right, since the quick ranges are gone
* chore: Remove function not in use
* Fix: Close time picker on resize event
* Fix: Remove border bottom
* Fix: Use fa icons on prev/next arrows
* Fix: Pass ref from TimePicker to TimePickerOptionGroup so the popover will align as it should
* Fix: time picker ui adjustments to get better touch area on buttons
* Fix: Dont increase line height on large screens
* TimePicker: style updates
* Fix: Add more prominent colors for selected dates and fade out dates in previous/next month
* TimePicker: style updates2
* TimePicker: Big refactorings and style changes
* Removed use of Popper not sure we need that here?
* Made active selected item in the list have the "selected" checkmark
* Changed design of popover
* Changed design of and implementation of the Custom selection in the dropdown it did not feel like a item you
could select like the rest now the list is just a normal list
* TimePicker: Refactoring & style changes
* TimePicker: use same date format everywhere
* TimePicker: Calendar style updates
* TimePicker: fixed unit test
* fixed unit test
* TimeZone: refactoring time zone type
* TimePicker: refactoring
* TimePicker: finally to UTC to work
* TimePicker: better way to handle calendar utc dates
* TimePicker: Fixed tooltip issues
* Updated snapshot
* TimePicker: moved tooltip from DashNavControls into TimePicker
* WIP prometheus editor same in panel
* Dont use panel in plugin editors
* prettiered modified files
* Fix step in external link
* Prevent exiting edit mode when slate suggestions are shown
* Blur behavior and $__interval variable
* Remove unused query controller
* Basic render test
* Chore: Fixes blacklisted import
* Refactor: Adds correct start and end time
* Explore: Prometheus query errors now show
Fixes: #17435
* Explore: Adds test to ensure prometheus query errors are reported
* Explore: removes implicit anys introduced previously
* Chore: Remove implicit anys from ResultProcessor and tests
* Chore: Removes implicit anys for /loki/**/*.ts
* Chore: Removes implicit anys for prometheus/**/*
The range variables get filled with the range from the query options,
not with the range in the timeSrv object. This means that panels that
use a relative time override get the correct values from the __range
variables.
Fixes#17102
This escape is currently not happening which breaks multi-value queries with
'|' characters in the variable value.
Added tests for 'interpolateQueryExpr' which should possibly be private, but is difficult to
test due to TemplateSrv calling it.
Closes#16840
* Refactor: Removes replaceUrl from actions
* Refactor: Moves saveState thunk to epic
* Refactor: Moves thunks to epics
* Wip: removes resulttype and queries once
* Refactor: LiveTailing uses observer in query
* Refactor: Creates epics folder for epics and move back actioncreators
* Tests: Adds tests for epics and reducer
* Fix: Checks for undefined as well
* Refactor: Cleans up previous live tailing implementation
* Chore: merge with master
* Fix: Fixes url issuses and prom graph in Panels
* Refactor: Removes supportsStreaming and adds sockets to DataSourcePluginMeta instead
* Refactor: Changes the way we create TimeSeries
* Refactor: Renames sockets to streaming
* Refactor: Changes the way Explore does incremental updates
* Refactor: Removes unused method
* Refactor: Adds back Loading indication
* fix(explore): Prevent double querying for Prometheus and Loki
- queries were triggered twice because two Enter handlers existed
- removed runner plugin from Loki and Prom query fields (runner plugin
is still being used in azure)
Part of #16995
* Set loki's mtrics capability to false
Loki is not a metrics store. Explore was using the `metrics` field in
the plugin definition to issue a second query run. But Loki shows only
one result viewer.
Fixes#16995
* Wip: Removes queryTransactions from state
* Refactor: Adds back query failures
* Refactor: Moves error parsing to datasources
* Refactor: Adds back hinting for Prometheus
* Refactor: removed commented out code
* Refactor: Adds back QueryStatus
* Refactor: Adds scanning back to Explore
* Fix: Fixes prettier error
* Fix: Makes sure there is an error
* Merge: Merges with master
* Fix: Adds safeStringifyValue to error parsing
* Fix: Fixes table result calculations
* Refactor: Adds ErrorContainer and generic error handling in Explore
* Fix: Fixes so refIds remain consistent
* Refactor: Makes it possible to return result even when there are errors
* Fix: Fixes digest issue with Angular editors
* Refactor: Adds tests for explore utils
* Refactor: Breakes current behaviour of always returning a result even if Query fails
* Fix: Fixes Prettier error
* Fix: Adds back console.log for erroneous querys
* Refactor: Changes console.log to console.error
This fixes a regression introduced by #16724 when datasource is configured
to use HTTP method POST and testing the datasource which results in an
'options.headers is undefined'. Same error probably happens if datasource
is configured to use basic auth and testing datasource.
* wip: began work off removing meta and pluginExports from DataSourceApi interface
* WIP: changing how plugins are exports and loaded
* Down the refactoring rabit hole that keeps expanding
* TestData now returns DataSourcePlugin
* Refactoring: fixed app config page loading, type renamings and more typings
* Refactor: Correct casing on DatasourceStatus => DataSourceStatus
* 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
Fixes#14615.
Removes extra escaping for regex filter values when using ad hoc
filters for Prometheus. The extra escaping causes queries with
regex characters to be invalid.
- future alignment cause issues with rate charts and the display of last
values
- this change modifies the alignment to use the last available aligned
end date and no longer possibly requests data from the future
- click on the name label in a prometheus table was disabled
- it was disabled because every query used to have a metric which is no
longer true
- this change enables it
- since e731c248d7 step calculation for
annotation queries was broken
- this change puts the interval in the correct parameter so it gets
considered in `createQuery`
- added tests
- adds a custom label renderer to Logs viewer in Explore
- labels are no longer treated as strings, they are passed as parsed objects to the log row
- label renderer supports onClick handler for an action
- renamed Explore's `onClickTableCell` to `onClickLabel` and wired up log label renderers
- reuse Prometheus `addLabelToSelector` to modify Logging queries via click on label
- added tests to `addLabelToSelector`, changed to include the surrounding `{}`
- use label render also for common labels in the controls panel
- logging meta data section has now a custom renderer that can render numbers, strings, and labels
- style adjustments
- since the DataQuery rewrite, Explore starts by submitting its queries (Explore cant know if the queries are emtpty)
- The datasource intercepts an empty query and returns an empty list of time series, and also no table for the table query.
- The query hinter then received no series to analyse and was not guarding against this.
- This PR adds this guard.
- Queries in Explore have been string based
- This PR introduces the use of the DataQuery type to denote all queries handled in Explore
- Within Explore all handling of DataQueries is transparent
- Modifying DataQueries is left to the datasource
- Using `target` as variable names for DataQueries to be consistent with the rest of Grafana
Rules expansion (available via query hints in explore) was broken for expressions that contained selectors.
- fix replacing regexp to recognize `{` and `[` as the end of a rule name
- moved logic to language utils
- added tests
Explore is about keeping context between datasources if possible. When
changing from metrics to logging, some of the filtering can be kept to
narrow down logging streams relevant to the metrics.
- adds `importQueries` function in language providers
- query import dependent on origin datasource
- implemented prometheus-to-logging import: keeping label selectors
that are common to both datasources
- added types
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
- when instantiating a datasource, the datasource service checks if the
plugin module exports Explore components, and if so, attaches them to
the datasource
- Explore component makes all major internal pluggable from a datasource
`exploreComponents` property
- Moved Prometheus query field to promehteus datasource and registered
it as an exported Explore component
- Added new Start page for Explore, also exported from the datasource
The grafana_stats.json used the following prometheus query: "increase(grafana_alerting_result_total[1m])" But a metric called "grafana_alerting_result_total" is currently not there anymore. So i changed the query to "increase(grafana_alerting_active_alerts[1m])" and updated the title as well (Before: "Grafana alert results", Now: "Grafana active alerts").
Implements rudimentary support for placeholder values inside a string
with the `PlaceholdersBuffer` class. The latter helps the newly added
sum aggregation query suggestion to automatically focus on the label
so users can easily choose from the available typeahead options.
Related: #13615
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
- extends handlers for panel menu and keypress 'x'
- in a mixed-datasource panel finds first datasource that supports
explore and collects its targets
- passes those targets to the found datasource to be serialized for
explore state
- removed `supportMetrics` and `supportsExplore`
- use datasource metadata instead (set in plugin.json)
- Use angular timeout to wrap url change for explore jump
- Extract getExploreUrl into core/utils/explore
* updated rules for variable name and fixed files that didn't follow new rules
* fixed test so it uses new rule
* made exceptions to rule in interval_variable
- 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
* 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
- 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.
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
* 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.
* 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
* 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
* refactor: tracing service refactoring
* refactor: sqlstore to instance service
* refactor: sqlstore & registory priority
* refactor: sqlstore refactor wip
* sqlstore: progress on getting tests to work again
* sqlstore: progress on refactoring and getting tests working
* sqlstore: connection string fix
* fix: not sure why this test is not working and required changing expires
* fix: updated grafana-cli
* 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
From review feedback:
* s/helper/metadata
* combined positional args to _request into options dict
* metadataRequest reuses _request()
* moved consumption of this.httpMethod into _request, can be overwritten
in options due to spread-after
* When set to `true`, the `silent` option for backend_srv requests
suppresses all event emitters that are triggered when the response is
received.
* Added `helperRequest()` to the Prometheus datasource to support
requests that are not triggered by the user, e.g., for tab completion.
`helperRequest()` sets the `silent` option.
* Migrated all non-timeseries queries of the Prometheus datasource to
use `helperRequest()`.
Fixes#11673
* prometheus ace editor, template variable support
* minor fix
* support [[var]] notation
* don't remove last ] if token type is string
* Revert "don't remove last ] if token type is string"
This reverts commit bce5b2d56e.
* Revert "support [[var]] notation"
This reverts commit 10012f8ffe.
* fix token type and regex
Alerting for prometheus have been depending on the step parameter from each query.
In https://github.com/grafana/grafana/pull/9226 we changed the behavior for step in the
frontend which caused problems for alerting. This commit fixes that by introducing a default
min interval value so alerting always have something to depend on.
closes#9777