Commit Graph
100 Commits
Author SHA1 Message Date
Matias Chomicki 97cb92eb1e Logs: Added multi-line display control to the "wrap lines" option (#88144)
* LogRowMessage: strip new lines when wrapping is disabled

* LogRowMessage: prevent conflicts between failed json parsing and unwrapping

* LogRowMessage: expand multi-line unwrapped logs when opening details

* Add unit test

* Prettier

* chore: update comment
2024-05-28 11:59:11 +03:00
Matias Chomicki 82796fad98 Elasticsearch: queries no longer executed on-change (#87652)
* Elasticsearch: queries no longer executed on-change

* Elasticsearch: run query if it was previously undefined
2024-05-16 19:09:50 +03:00
Matias Chomicki f1e8d2645f Loki: update HorizontalGroup deprecation (#86995)
* Loki: update HorizontalGroup deprecation

* Update betterer
2024-04-29 13:14:06 +01:00
Matias Chomicki aa73140564 Loki: Add label filters after label_format if present (#86124)
* Loki ad-hoc filters: add filters after label_format

* Chore: add comment explaining rationale

* Formatting

* Formatting
2024-04-19 17:31:38 +02:00
Matias Chomicki 99f34cb1ed Common labels/displayed fields: Show label names with values (#86345)
* LogLabels: create specialized component for arrays of labels

* Logs: sort displayed fields when assigning to state

* LogsMetaRow: fix types and use specialized components

* LogLabels: show label and value

* LogsPanel: update common labels

* LogsMetaRow: use LogsLabelsList

* Update unit tests

* Formatting

* Update betterer

* Prettier

* Logs panel: update test

* LogLabels: add actual tooltip

* Logs: remove sorting of displayed fields
2024-04-18 16:25:58 +02:00
Matias ChomickiandSven Grossmann ec43edd8a1 Loki/Prometheus Query Editor: Disabled cmd/ctrl+f keybinding within the editor (#86418)
* Prom: disable cmd f within the editor

* Loki: disable cmd f within the editor

* Update public/app/plugins/datasource/loki/components/monaco-query-field/MonacoQueryField.tsx

Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>

* Monaco: upgrade to 0.34.1

* Loki/Prometheus: allow native search to be displayed

* Formatting

* Monaco: upgrade to 0.34.1

https://github.com/microsoft/monaco-editor/issues/102#issuecomment-1282897640

---------

Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>
2024-04-17 16:38:43 +02:00
Matias Chomicki 7e8e7429ec Popover menu: remove selectionchange listener (#84832) 2024-03-20 17:48:33 +02:00
Matias Chomicki 3e97999ac5 LogRowMessageDisplayedFields: increase rendering performance (#84407)
* getAllFields: refactor for improved performance

* LogRowMessageDisplayedFields: refactor line construction for performance

* AsyncIconButton: refactor to prevent infinite loops
2024-03-18 13:24:06 +01:00
Matias Chomicki bba1b12448 Logs popover: allow click listeners to run before closing the menu (#84583)
* Logs popover: allow click listeners to run before closing the menu

* Decrease buffer time
2024-03-15 17:24:41 +02:00
Matias Chomicki 15a641a509 Infinite Scroll: wait for users to reach the top before triggering new requests (#84318)
* Infinite Scroll: wait for users to reach the top before triggering new requests

* Prettier

* Infinite Scroll: control top scrolling via prop

* Prettier
2024-03-15 13:52:55 +01:00
Matias Chomicki a89f1c2200 Popover Menu: fix issue hiding menu behind scrollable container (#84311)
* PopoverMenu: change position to fixed

* PopoverMenu: close on empty selectionchange

* Popover Menu: do not let menu overflow the window dimensions

* Prettier
2024-03-13 13:41:18 +02:00
Matias Chomicki fb172b1b33 Explore logs: remove exploreScrollableLogsContainer and track scroll to top (#84291)
* exploreScrollableLogsContainer: remove

* LogsNavigation: track scroll to top clicks

* Add missing dependency to the effect
2024-03-12 15:53:13 +01:00
Matias Chomicki c9593531ef Loki query builder: force click in e2e test (#82051) 2024-02-09 20:48:10 +02:00
Matias Chomicki c87e4eb724 Log rows: add re-renders test cases (#81566)
* Log rows: add re-renders test cases

* Logs panel: add re-render test cases

* Logs panel: update setup and properly trigger rerenders
2024-02-05 17:20:50 +02:00
Matias Chomicki e749c2b062 Infinite scroll: implementation clean up (#81725)
* Infinite scroll: clean up for clarity

* Infinite scroll: clean up test

* Formatting

* Infinite scroll: disable by feature flag

* Infinite scroll: improve visibility of the lower loader
2024-02-02 14:45:20 +02:00
Matias Chomicki e0054c06fe DashNav: add missing key (#81626)
* DashNav: add missing key

* DashNav: use more specific key
2024-01-31 13:51:15 +02:00
Matias Chomicki 5c3e211777 combineFrames: add support to merge transformed data frames (#81554)
* combineResponses: account for disordered frames

* tempo: undo change

* Formatting
2024-01-30 14:02:15 +02:00
Matias ChomickiandIvana Huckova 2a734a9e3f Supplementary queries: allow plugin decoupling by allowing providers to return a request instance (#80281)
* Supplementary queries: add support for providers returning a request instance

* Formatting

* DataSourceWithSupplementaryQueriesSupport: update getDataProvider signature

* getLogLevelFromLabels: fix buggy implementation

* getLogLevelFromKey: fix key type

Why number??

* Revert "getLogLevelFromKey: fix key type"

This reverts commit 14a95298a6f803cc3270e0421b2e04dd0d65f131.

* getSupplementaryQueryProvider: remove observable support

* Datasources: remove unnecessary check

The switch is doing the same job

* Supplementary queries: update unit test

* datasource_srv: sync mock with real api

* Formatting

* Supplementary queries: pass targets from getSupplementaryQueryProvider

* LogsVolumeQueryOptions: remove range and make extract level optional

* logsModel: add missing range to test data

* query: sync tests with changes

* Formatting

* DataSourceWithSupplementaryQueriesSupport: update interface with deprecated and new methods

* DataSourceWithSupplementaryQueriesSupport: sync Loki and Elasticsearch

* queryLogsVolume: extractLevel no longer customizable

* Loki: update test

* Supplementary queries: add support for the new method

* hasSupplementaryQuerySupport: update signature

* Formatting

* Betterer

* Query: update test

* Supplementary queries: add test for the legacy API

* Update public/app/features/explore/utils/supplementaryQueries.ts

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>

---------

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2024-01-30 12:36:20 +02:00
Matias Chomicki 5486a111e6 parseSupportingQueryType: add missing case for infinite scroll (#81492) 2024-01-29 18:12:03 +02:00
Matias Chomicki df05c79d91 Infinite scrolling: Add X-Query-Tag header (#81089) 2024-01-29 11:24:05 +01:00
Matias Chomicki e07417dca3 Infinite scroll: share loader with log context + small fixes (#81067)
* Loading indicator: refactor

* Infinite scroll: use ref to keep the last scroll

* Infinite scroll: share loading indicator with log context

* Infinite scrolling: override state

* Infinite scroll: clean up imports and dependency array

* Logs: disable order while loading

* Infinite scroll: update ref before calling shouldLoadMore

* Loading indicator: remove unused export

* Logs order: move disabled prop to inline field

* Formatting

* Update betterer file
2024-01-23 18:52:38 +02:00
Matias Chomicki aa07c4a6b3 Logs permalink: adjust for infinite scrolling (#80808)
* Logs permalink: adjust for infinite scrolling

* Refactor exception

* Formatting
2024-01-23 17:48:50 +01:00
Matias Chomicki 0c9265f59b Infinite scroll: update deduplication method and only run log queries when scrolling (#80821)
* Logs deduplication: replace array lookup with map

* runLoadMoreLogs: only execute log queries

* Formatting

* Rename variable
2024-01-22 13:42:18 +02:00
Matias ChomickiandSven Grossmann 88ee7a1c62 Infinite scroll: exclude visible range from new requests (#80638)
* Infinite scroll: exclude visible range from new requests

* Infinite scroll: revert skipping 1 millisecond on new requests

* Formatting

* Logs models: filter exact duplicates in the response

* mergeDataSeries: do not mutate currentData

* runMoreLogsQueries: return queryResponse while loading

* Infinite scrolling: use special refId for infinite scrolling queries

* Remove log

* Update public/app/features/logs/logsModel.ts

Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>

* combinePanelData: refactor and add unit test

* logsModel: export infinite scroll refid

* Formatting

* logsModel: add deduplication unit test

* Formatting

* findMatchingRow: add unit test

* Fix test title

* Fix imports order

---------

Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>
2024-01-17 21:12:09 +01:00
Matias Chomicki aa670280fc Logs: add infinite scrolling to Explore (#76348)
* Explore: propose action, thunk, and decorators for load more

* LogsContainer: add loadMore method

* Query: remove unused var

* Loading more: use navigation to simulate scrolling

* Explore: figure out data combination

* Fix imports

* Explore: deduplicate results when using query splitting

* LogsNavigation: add scroll behavior

* Remove old code

* Scroll: adjust delta value

* Load more: remove refIds from signature

We can resolve them inside Explore state

* Load more: rename to loadMoreLogs

* Infinite scrolling: use scrollElement to listen to scrolling events

* Explore logs: add fixed height to scrollable logs container

* Logs: make logs container the scrolling element

* Logs: remove dynamic logs container size

It works very well with 1 query, but breaks with more than 1 query or when Logs is not the last rendered panel

* Logs navigation: revert changes

* Infinite scroll: create component

* Infinite scroll: refactor and clean up effect

* Infinite scroll: support oldest first scrolling direction

* Infinite scroll: support loading oldest logs in ascending and descending order

* Infinite scroll: use scroll to top from logs navigation

* Logs: make logs container smaller

* Logs: make container smaller

* State: integrate explore's loading states

* Infinite scroll: add loading to effect dependency array

* Infinite scroll: display message when scroll limit is reached

* Infinite scroll: add support to scroll in both directions

* Infinite scroll: capture wheel events for top scroll

* scrollableLogsContainer: deprecate in favor of logsInfiniteScrolling

* Infinite scroll: implement timerange limits

* Infinite scroll: pass timezone

* Fix unused variables and imports

* Infinite scroll: implement timerange limits for absolute time

* Infinite scroll: fix timerange limits for absolute and relative times

* Infinite scroll: reset out-of-bounds message

* Logs: make container taller

* Line limit: use "displayed" instead of "returned" for infinite scrolling

* Infinite scrolling: disable behavior when there is no scroll

* Remove console log

* Infinite scroll: hide limit reached message when using relative time

* Logs: migrate styles to object notation

* Prettier formatting

* LogsModel: fix import order

* Update betterer.results

* Logs: remove exploreScrollableLogsContainer test

* Infinite scroll: display loader

* Infinite scroll: improve wheel handling

* Explore: unify correlations code

* Explore: move new function to helpers

* Remove comment

* Fix imports

* Formatting

* Query: add missing awaits in unit test

* Logs model: add unit test

* Combine frames: move code to feature/logs

* Explore: move getCorrelations call back to query

It was causing a weird test failure

* Fix imports

* Infinite scroll: parametrize scrolling threshold

* Logs: fix overflow css

* Infinite scroll: add basic unit test

* Infinite scroll: add unit test for absolute time ranges

* Formatting

* Explore query: add custom interaction for scrolling

* Query: move correlations before update time

* Fix import in test

* Update comment

* Remove comment

* Remove comment

* Infinite scroll: report interactions from component

* Fix import order

* Rename action

* Infinite scroll: update limit reached message

* Explore logs: remove type assertion

* Update betterer
2024-01-12 13:22:03 +02:00
Matias Chomicki be12d3919f Logs navigation: fix multiple incorrect calls to addResultsFromCache (#80307)
* Logs container: prevent unnecessary rerenders from arrow functions

* Logs navigation: refactor effects and calls to addResultsToCache

* Logs navigation pages: disable buttons while loading

* Logs navigation: add regression test

* Formatting
2024-01-11 00:52:43 +02:00
Matias Chomicki fb34916d1e Logs navigation: derive current page index (#80167)
* Logs navigation: derive current page index

* Formatting
2024-01-09 11:49:27 +02:00
Matias Chomicki 4950935401 Loki Query Builder: Add parsing support for aggregations with grouping (#80145)
Loki Query Builder: Add parsing support for aggregations with grouping arguments
2024-01-08 17:17:19 +01:00
Matias Chomicki cff1ad4922 Logs popover: enabled by default (#80146) 2024-01-08 17:03:39 +01:00
Matias Chomicki c58ed41d50 Loki Logs volume: Added a query splitting loading indicator to the Logs Volume graph (#79681)
* Logs volume: distinguish annotations from time series frames

* Update unit tests

* Update unit tests

* Formatting
2023-12-19 14:33:18 +02:00
Matias Chomicki 65535a3b3f Loki/Elasticsearch: prevent errors in onDashboardLoadedHandler (#79451)
* Loki: prevent errors in onDashboardLoadedHandler

* Elasticsearch: prevent errors in onDashboardLoadedHandler
2023-12-13 15:37:21 +02:00
Matias Chomicki 24082d61c2 Query splitting: add key to merged response (#78522)
* Query splitting: add key to response

* Query splitting: use queryGroupId as key

* Add unit test
2023-11-30 14:27:44 +02:00
Matias Chomicki 773e0680c5 Loki: Added support for "or" statements in line filters (#78705)
* Lezer: upgrade to 0.2.2

* Operations: update definitions

* Operations: update renderer

* Parsing: parse line filters with or operations

* Parsing: add unit test

* Formatting

* getHighlighterExpressionsFromQuery: add support for or statements

* Operation editor: trim button title if param name is empty

* getHighlighterExpressionsFromQuery: properly handle ip filters
2023-11-29 15:58:32 +01:00
Matias Chomicki 630b8a30be Popover menu: update tracking attributes + move under Explore/logs (#78739)
* Popover menu: update event tracking attributes

* Popover menu: move under explore/loggs

* Popover menu: narrow down support to only Explore app
2023-11-28 15:21:37 +02:00
Matias Chomicki ec7d09b8e0 Popover menu: refactor event tracking (#78733) 2023-11-28 12:44:08 +00:00
Matias Chomicki 5db420619d Logs Popover Menu: close menu on right click (#78674)
LogRows: close menu on right click
2023-11-27 12:36:55 +00:00
Matias Chomicki 02068662c1 Logs: create DataSourceWithQueryModificationSupport + determine popover menu support (#78322)
* DataSourceWithQueryModificationSupportSupport: create interface

* Loki: implement DataSourceWithQueryModificationSupportSupport

* Elasticsearch: implement DataSourceWithQueryModificationSupportSupport

* DataSourceWithQueryModificationSupportSupport: add type guard

* DataSourceWithQueryModificationSupport: rename

* Check for nullish values in guards

* Logs container: replace support map with ds instances map

* Log rows: refactor deselection listener

* Formatting

* Formatting

* DataSourceWithQueryModificationSupport: add missing comment

* Logs container: update method name

* Logs container: check for query modification support

* Create QueryFixType

* QueryFixAction: move back to ds types

* getSupportedQueryModifications: update signature

* getSupportedQueryModifications: update signature
2023-11-23 11:04:23 +01:00
Matias Chomicki d85f03ec26 Loki: Fix conditional for derived fields using regex type (#78464)
Derived fields: fix conditional for regex fields
2023-11-21 14:37:05 +01:00
Matias Chomicki 9cb303c3f7 Log Rows: Added popover menu with filter options when a log line is selected (#75306)
* LogRow: detect text selection

* LogRow: refactor menu as component

* LogRow: add actions to menu

* LogRow: hack menu position

* Remove unsused imports

* LogRowMessage: remove popover code

* PopoverMenu: refactor

* LogRows: implement PopoverMenu at log rows level

* PopoverMenu: implement copy

* PopoverMenu: receive row model

* PopoverMenu: fix onClick capture issue

* Explore: add new filter methods and props for line filters

* PopoverMenu: use new filter props

* Explore: separate toggleable and non toggleable filters

* PopoverMenu: improve copy

* ModifyQuery: extend line filter with value argument

* PopoverMenu: close with escape

* Remove unused import

* Prettier

* PopoverMenu: remove label filter options

* LogRow: rename text selection handling prop

* Update test

* Remove unused import

* Popover menu: add unit test

* LogRows: update unit test

* Log row: hide the log row menu if the user is selecting text

* Log row: dont hide row menu if popover is not in scope

* Log rows: rename state variable

* Popover menu: allow menu to scroll

* Log rows: fix classname prop

* Log rows: close popover if mouse event comes from outside the log rows

* Declare new class using object style

* Fix style declaration

* Logs Popover Menu: add string filtering functions (#76757)

* Loki modifyQuery: add line does not contain query modification

* Elastic modifyQuery: implement line filters

* Modify query: change action name to not be loki specific

* Prettier

* Prettier

* Elastic: escape filter values

* Popover menu: create feature flag

* Log Rows: integrate logsRowsPopoverMenu flag

* Rename feature flag

* Popover menu: track interactions

* Prettier

* logRowsPopoverMenu: update stage

* Popover menu: add ds type to tracking data

* Log rows: move feature flag check

* Improve handle deselection
2023-11-16 11:48:10 +02:00
Matias Chomicki 174c2ab45a Logs infinite scrolling: create feature flag (#77885)
logsInfiniteScrolling: create feature flag
2023-11-09 11:54:03 +01:00
Matias Chomicki 7e1110f1f9 Log Row: memoize row processing (#77716)
* LogRow: memoize row processing

* Rename method
2023-11-06 16:59:48 +02:00
Matias Chomicki 91398a173f Query Validation: accept any parser to validate query and integrate with Prom query editor (#77081)
* Validation: make it generic for any parser

* Prometheus: integrate query validator with editor

* Prom validation: add unit test

* Run prettier
2023-10-31 16:30:02 +01:00
Matias ChomickiandIvana Huckova d7c50eb650 Logs: Deprecated showContextToggle in DataSourceWithLogsContextSupport (#77232)
* Logs: deprecate showContextToggle

* Logs: make row mandatory on showContextToggle prop

* DataSourceWithLogsContextSupport: make showContextToggle optional

* Loki: update test

* Update packages/grafana-data/src/types/logs.ts

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>

* Prettier

* showContextToggle: update deprecation

---------

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2023-10-31 13:37:44 +02:00
Matias Chomicki e5f92c010d Elasticsearch: Add interval type selector to interval field (#76805)
* Elasticsearch: add interval type selector

* Interval type: add tooltip

* DateHistogramSettingsEditor: create unit test

* Elastic histogram settings: refactor showing calendar type

* Update test

* Prettier

* DateHistogramSettingsEditor: change tooltip according to interval type

* Calendar intervals: add comment

* Prettier
2023-10-30 16:30:25 +02:00
Matias Chomicki 564c8cd883 Log Context: Add Log Context support to mixed data sources (#76623)
* LogsContainer: implement data source feature check

* LogsContainer: improve check for normal data source mode

* LogsContainer: use updated reference to data source instance

* Formatting

* LogsContainer: compare uid to constant

* LogsContainer: rename variable
2023-10-30 15:40:17 +02:00
Matias Chomicki 46f331e284 Logs: remove toggleLabelsInLogsUI (#77264)
* toggleLabelsInLogsUI: remove flag

* Remove unused imports

* isFilterLabelActive: refId is not optional

* Revert "isFilterLabelActive: refId is not optional"

This reverts commit 008931b7e9.

* Revert method signature change

* Update tests

* Update tests
2023-10-27 13:00:49 +02:00
Matias ChomickiandIvana Huckova 765defea1e Loki Queries: Query Splitting enabled by default (#75876)
* Loki Query Splitting: enable by default

* Query splitting: add gdev dashboard

* Update testdata file

* Update devenv/dev-dashboards/datasource-loki/loki_query_splitting.json

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>

* Revert "Update testdata file"

This reverts commit 5a891ba1f2.

* Update feature-toggles readme

---------

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2023-10-24 16:09:30 +03:00
Matias Chomicki 4ea4156b08 Elasticsearch: decouple from timeSrv and templateSrv (#76894)
* Elasticsearch: remove timeSrv dependencies

* Elastisearch: decouple from templateSrv

* Prettier

* Elasticsearch: improve typescript in mocks file

* Prettier
2023-10-24 10:25:23 +02:00
Matias Chomicki d4b6fc31ff Elasticsearch: move adhoc filters code to modifyQuery module and refactor (#76529)
* Elasticsearch: move addhoc filters to modifyQuery and refactor

* Elasticsearch: add support for number-value adhoc filters
2023-10-19 11:16:47 +03:00
Matias Chomicki 7da2cc9610 Lezer-logql: upgrade to 0.2.1 (#76693)
* Lezer-logql: upgrade to 0.2.1

* Deps: upgrade lezer-logql
2023-10-17 16:56:29 +02:00
Matias Chomicki 5e37a27d1f Loki Autocomplete: Add more context to comments about situations and completions (#76144)
* Loki completion: add more context to comments

* Improve grammar of comment

* Completions: expand on parser-offering part

* Update public/app/plugins/datasource/loki/components/monaco-query-field/monaco-completion-provider/completions.ts

* Formatting
2023-10-09 13:15:12 +02:00
Matias Chomicki 16d77dda67 Loki Query Autocomplete: better suggestions and insertions for Logfmt (#75561)
* Logfmt autocompletion: better handling of trailing commas

* Situation: refactor getSituation and  getErrorNode

Looking for simplicity, removing redundancy, and looking for a more accurate node resolution

* Autocompletion: refactor logfmt and top level

* Update tests

* Autocompletion: better handling of trailing characters

* Completions: Update data to type changes

* Update log query in test situation

* Format code

* Autocomplete: support offering partial labels

* Completion: expand test cases
2023-10-06 12:23:48 -05:00
Matias Chomicki a3d0dfcbcc Loki: Improve getLogQueryFromMetricsQuery (#75492)
* Query utils: fix bug in getLogQueryFromMetricsQuery function

* Query utils: implement getLogQueryFromMetricsQueryAtPosition

* Loki autocomplete situation: use getLogQueryFromMetricsQueryAtPosition

* Fix typo

* getLogQueryFromMetricsQueryAtPosition: use find instead of filter
2023-09-27 11:39:50 +03:00
Matias Chomicki edbe45efc2 Elasticsearch: HTTP settings migration (#72840)
* Elasticsearch: migrate data source http settings

* Elasticsearch: migrate data source http settings

* Remove test code

* Update unit test

* Connection settings: add url placeholder

* Elasticsearch config editor: improve on-change handling of custom auth

* Config editor: add missing oauthPassThru option
2023-09-26 17:17:17 +02:00
Matias Chomicki 91ed2a6afe Loki Query Editor: Add support for new logfmt features (#74619)
* Loki autocomplete: add IN_LOGFMT situation for log queries

* Loki autocomplete: add IN_LOGFMT situation for metric queries

* Loki autocomplete: improve handling of trailing pipes and spaces

* Loki autocomplete: add logfmt arguments completion

* Loki autocomplete: add flags support to IN_LOGFMT

* Loki autocomplete: extend IN_LOGFMT situation with labels and flag

* Loki autocomplete: return logQuery in IN_LOGFMT situation

* Loki autocomplete: offer label completions when IN_LOGFMT

* Query utils: update parser detection method

* Validation: update test

* Loki autocomplete: improve IN_LOGFMT detection when in metric query

* Loki autocomplete: improve logfmt suggestions

* Loki autocomplete: improve logfmt suggestions in different scenarios

* Loki autocomplete situation: refactor resolvers to support multiple paths

* Situation: add test case

* Loki autocomplete: allow user to use 2 flags

* Situation: change flag to flags

* Remove console log

* Validation: import test parser

* Completions: better handling of trailing comma scenario

* Upgrade lezer-logql

* Revert temporary imports

* Loki Query Builder: Add support for new logfmt features (#74858)

* Query builder: add params to logfmt definition

* Logfmt operation: add default params

* Query builder: update deprecated JsonExpression

* Operation utils: update logfmt renderer

* Query builder: parse LogfmtParser

* Query builder: parse LogfmtExpressionParser

* Remove console log

* Remove unused variable

* Remove extra character from render

* Update unit tests

* Fix unit tests

* Operations: remove restParams from logfmt booleans

* Parsing: group cases

* Formatting

* Formatting

* Update modifyQuery

* LogContextProvider: update with parser changes

* LogContextProvider: remove unnecessary type castings

It takes more energy to write `as unknow as LokiQuery` than to write a refId.

* Formatting

* Situation: use charAt instead of substring with endsWith

* Situation: explain logfmt suggestions

* Logfmt: improve flag suggestions

* Remove console log

* Completions: update test
2023-09-22 12:34:17 +03:00
Matias Chomicki 9ceaeed489 toggleLabelsInLogsUI: enable by default (#74342)
* GA toggleable labels

* Logs integration: update readme with new features

* Build a logs data source: update docs with the new interface

* Plugin docs: update example function signatures and arguments

* Plugin docs: update modifyQuery function names

* Formatting

* Remove character

* Remove `expr` from docs

* Plugin docs: improve code

* Plugin docs: further code improvements
2023-09-06 15:32:48 +02:00
Matias Chomicki 9310bb632e Loki Query Builder: ensure unique ids for labelled fields (#74398)
* Loki Query Builder: ensure unique ids for labelled fields

* Rename refactored argument
2023-09-06 11:25:53 +03:00
Matias Chomicki c3cbe220bb Elasticsearch query editor: ensure unique ids on labelled fields (#74396) 2023-09-06 10:17:11 +02:00
Matias Chomicki 04c44f0a11 Explore Logs: Update log filtering functions to only have effect in the source query (#73626)
* isFilterLabelActive: add row parameter to method signature

* onClickFilter: add row parameter to method signature

* Explore: implement optional row parameter to modify queries

* LogDetails: add integration test with filters and log details row

* Change signature from LogRowModel to string

* Add refid reference to tooltips
2023-09-04 14:30:17 +00:00
Matias Chomicki 3170ed2dcc Loki config: update doc links (#73690) 2023-08-25 15:54:53 +03:00
Matias Chomicki f7355668e7 Query splitting: combine nanos attribute con time fields (#73505) 2023-08-21 14:19:20 +02:00
Matias ChomickiandIvana Huckova 4c37ba494e Elasticsearch: Add missing tooltips to the configuration page (#73552)
* Add missing tooltips

* Update X-Pack tooltip

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>

---------

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2023-08-21 14:13:23 +02:00
Matias Chomicki 48c3dc7203 Logs: Hide filters in log details if the data source doesn't support them (#73230)
* Logs: Hide filters in log details if the data source doesn't support them

* Logs Container: use logsQueries prop

* Log details: add filters visibility test
2023-08-17 17:53:11 +02:00
Matias Chomicki c8a9adf52a Config editor: add url placeholder (#73391) 2023-08-17 14:43:59 +02:00
Matias Chomicki 0fe53fbd1d Log row: split row-highlighting booleans in two (#73330) 2023-08-16 17:51:18 +02:00
Matias Chomicki 7c098c59fd Loki: Migrate HTTP settings to new components (#72831)
* Loki: migrate data source http settings

* Remove unused export

* Update e2e tests

* Update unit test
2023-08-14 14:42:14 +02:00
Matias Chomicki 869d3fc8b1 LogRowMessage: remove hardcoded true from condition (#72976) 2023-08-07 17:41:03 +03:00
Matias Chomicki 9c6a9a3977 Logs: Improved keyboard accessibility of log rows menu (#72686)
* Log Row Menu Cell: improve accessibility

* Explain implementation in comments

* Make onBlur mandatory
2023-08-02 16:36:53 +00:00
Matias Chomicki 0d121bab29 Elasticsearch: Implement modify query using a Lucene parser (#71954)
* Lucene: add dependency

* ModifyQuery: use Lucene parser to detect key:values in queries

* ModifyQuery: use Lucene parser to remove filters

* Remove test code

* Modify query: switch to recursive implementation

* Modify query: implement remove filter

* Update query normalizing function

* FlagElasticToggleableFilters: remove feature flag

* Remove unused feature flag from test

* Elasticsearch: escape quotes in filter values
2023-07-28 14:49:02 +02:00
Matias Chomicki 6f3dfb2d8b Loki Query Splitting: Ignore empty queries like hidden queries (#72376)
Loki query splitting: ignore empty queries like hidden queries
2023-07-26 15:18:55 +01:00
Matias Chomicki ec5650cc82 LogRow: ensure scrollIntoView is called only once with shortlinks (#72291) 2023-07-25 18:00:10 +02:00
Matias ChomickiandSven Grossmann 84f94cdc24 Logs: Show active state of "filter for value" buttons in Logs Details (#70328)
* Datasource test: fix describe nesting

* Parsing: export handleQuotes function

* Modify query: add functions to detect the presence of a label and remove it

* Loki: add support to toggle filters if already present

* Datasource test: fix describe nesting

* Loki: add support to toggle filter out if present

* Remove label: handle escaped values

* Datasource: add test case for escaped label values

* Loki: remove = filter when applying !=

* Remove selector: add support for Selector node being far from Matcher

* Modify query: add unit tests

* Elasticsearch: create modifyQuery for elastic

* Elastic modify query: implement functions

* Elasticsearch: implement modifyQuery functions in datasource

* Elasticsearch: update datasource test

* Loki modify query: check for streamSelectorPositions length

* Elasticsearch query has filter: escape filter value in regex

* Remove unused type

* Modify query: add functions to detect the presence of a label and remove it

* Remove label: handle escaped values

* Logs: create props to check for label filters in the query

* Log Details Row: use label state props to show visual feedback

* Make isCallbacks async

* Explore: add placeholder for checking for filter in query

* Datasource: define new API method

* Inspect query: add base implementation

* Remove isFilterOutLabelActive as it will not be needed

* Check for "isActive" on every render

Otherwise the active state will be out of sync

* Elasticsearch: implement inspectQuery in the datasource

* Logs: update test

* Log details: update test

* Datasources: update tests

* Inspect query: rename to analize query to prevent confusion

* Datasource types: mark method as alpha

* Explore: add comment to log-specific functions

* Remove duplicated code from bad rebase

* Remove label filter: check node type

* getMatchersWithFilter: rename argument

* Fix bad rebase

* Create DataSourceWithQueryManipulationSupport interface

* Implement type guard for DataSourceWithQueryManipulationSupport

* DataSourceWithQueryManipulationSupport: move to logs module

* hasQueryManipulationSupport: change implementation

`modifyQuery` comes from the prototype.

* DataSourceWithQueryManipulationSupport: expand code comments

* AnalyzeQueryOptions: move to logs module

* DataSourceWithQueryManipulationSupport: add support for more return types

* Fix merge error

* Update packages/grafana-data/src/types/logs.ts

Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>

* DatasourceAPI: deprecate modifyQuery

* Explore: refactor isFilterLabelActive

* DataSourceWithQueryModificationSupport: rename interface

* Split interfaces into Analyze and Modify

* Query analysis: better name for interface

* Fix guard

* Create feature flag for active state

* Use new feature flag in Explore

* DataSourceToggleableQueryFiltersSupport: create a specific interface for this feature

* Rename feature flag

* De-deprecate modifyQuery

* DataSourceToggleableQueryFiltersSupport: Rethink types and methods

* Explore: adjust modifyQuery and isFilterLabelActive to new methods

* Loki: implement new interface and revert modifyQuery

* DataSourceToggleableQueryFiltersSupport: better name for arguments

* Elasticsearch: implement new interface and revert modifyQuery

* Loki: better name for arguments

* Explore: document current limitation on isFilterLabelActive

* Explore: place toggleable filters under feature flag

* Loki: add tests for the new methods

* Loki: add legacy modifyQuery tests

* Elasticsearch: add tests for the new methods

* Elasticsearch: add legacy modifyQuery tests

* Toggle filter action: improve type values

* Logs types: update interface description

* DataSourceWithToggleableQueryFiltersSupport: update interface name

* Update feature flag description

* Explore: add todo comment for isFilterLabelActive

---------

Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>
2023-07-24 11:22:47 +03:00
Matias Chomicki c84d689ce0 Loki: Enable Query Splitting by default (#72094)
* lokiQuerySplitting: enable feature flag by default

* Query stats: add special note for stats + splitting
2023-07-21 13:53:10 +02:00
Matias Chomicki 43f4e55a76 LogRowMessageDisplayedFields: sync implementation with LogRowMessage (#71770)
* LogRowMessageDisplayedFields: sync implementation with LogRowMessage

* Add regression test
2023-07-17 18:20:25 +03:00
Matias Chomicki 1f3aa099d5 Log rows performance: Render LogRowMenuCell on demand (#71354)
* Log row menu: refactor visibility

* LogRowMenuCell: display if mouse over or pinned

* LogRowMenuCell: use unique wrapper for all buttons

* Revert to using table row as position reference

* Log row message: update test

* Fix tests

* LogRow: handle mouse over behavior
2023-07-14 14:49:08 +03:00
Matias Chomicki b8fbeb084a Logs: Display log row menu cell on displayed fields (#71300)
* LogRowMenuCell: create component

* LogRowMessage: use new LogRowMenuCell component

* LogRowMessage: turn into functional component

* LogRowMenuCell: memoize component

* LogRowMessage: remove cx

* LogMessage: create component from function

* LogRowMessageDisplayedFields: turn into component

* LogRowMessageDisplayedFields: add LogRowMenuCell

* LogRowMessageDisplayedFields: rename prop and pass missing context prop

* LogRowMessageDisplayedFields: add unit test
2023-07-11 14:50:53 +02:00
Matias Chomicki 92c94710cd Loki/Elasticsearch config: Add DataSourceDescription component (#71206)
* Loki config: add data source description component

* Elastic config: add data source description component
2023-07-07 14:22:52 +01:00
Matias Chomicki 1b80df0168 Loki: add additional settings section (#71035)
* Loki: add additional settings section

* Derived fields: add config subsection

* Query settings: add config subsection

* Loki config: use divider instead of hr

* Derived fields: refactor legacy styles

* Loki config: add divider between derived fields and query settings

* Loki config: create alerting settings for Loki
2023-07-06 10:20:38 +02:00
Matias Chomicki d153fd434a Elasticsearch: add additional settings section (#71037)
* Elasticsearch: add additional settings section

* Remove extra lines

* Elastic config: add divider between name and http settings

* Data links: fix subsection title

* Remove unused import
2023-07-05 10:45:10 +02:00
Matias Chomicki f274484727 Elasticsearch: escape colons in ad hoc filters (#70611)
* Elasticsearch: escape colons in ad hoc filters

* Escape filter: update regex

* Elasticsearch: escape colons from all filters
2023-06-29 16:40:55 +02:00
Matias Chomicki c1ce24c90f Elasticsearch: Put new log details filters behavior behind a feature flag (#70703)
* Elasticsearch: create elasticFiltersToggle feature flag

* Elasticsearch: add new filter behavior behind a feature flag

* Rename feature flag
2023-06-27 10:38:20 +02:00
Matias Chomicki 4c4bd69eb6 Logs: Add toggle behavior support for "filter for" and "filter out" label within Logs Details (#70091)
* Datasource test: fix describe nesting

* Parsing: export handleQuotes function

* Modify query: add functions to detect the presence of a label and remove it

* Loki: add support to toggle filters if already present

* Datasource test: fix describe nesting

* Loki: add support to toggle filter out if present

* Remove label: handle escaped values

* Datasource: add test case for escaped label values

* Loki: remove = filter when applying !=

* Remove selector: add support for Selector node being far from Matcher

* Modify query: add unit tests

* Elasticsearch: create modifyQuery for elastic

* Elastic modify query: implement functions

* Elasticsearch: implement modifyQuery functions in datasource

* Elasticsearch: update datasource test

* Loki modify query: check for streamSelectorPositions length

* Elasticsearch query has filter: escape filter value in regex

* Remove unused type

* Modify query: use query modeller instance from module
2023-06-26 16:45:33 +02:00
Matias Chomicki dbf7ebb923 Elasticsearch: Fix infinite loop when using mixed datasources (#70386)
* Elasticsearch context: do not init query when it is already initialized

* Fix buggy conditional
2023-06-22 12:44:02 +02:00
Matias Chomicki a489135825 Loki Query Utils: Extract and refactor common functionality (#70185)
* Query utils: refactor isQueryPipelineErrorFiltering and getLogQueryFromMetricsQuery

* Query utils: refactor isQueryWithRangeVariable and getHighlighterExpressionsFromQuery

* Get parser: return log expression even if no pipelineExpr is present

* Update tests
2023-06-21 11:59:50 +03:00
Matias Chomicki fd6836e326 Cloud rules: fix hardcoded conditional (#70387) 2023-06-20 16:39:48 +02:00
Matias Chomicki 912c5ccb6a Elasticsearch: fix type-related bug within targetContainsTemplate (#69798)
* Elasticsearch: fix type-related bug within targetContainsTemplate

* Refactor to fix found regression
2023-06-20 15:43:49 +03:00
Matias Chomicki a75752b085 Elasticsearch: remove usages of any (#69575)
* Elasticsearch: remove usages of any

* Elasticsearch: check for filter type when accessing field aggs

* Elasticsearch: use type guards instead of checking types

* Use unknown for isPrimitive function

* Add deprecation notice

* Remove unused type

* Fix bug in "isPrimitive" function

* Remove unused import

* Revert "Fix bug in "isPrimitive" function"

This reverts commit 27f9874cce.
2023-06-19 11:01:08 +02:00
Matias Chomicki 6e2c811fd8 Elasticsearch: Update error message shown when testing the datasource (#70189)
* Elasticsearch: update error message shown when testing the datasource

* Elasticsearch: update successful test message

* Update e2e test
2023-06-16 12:56:34 +02:00
Matias Chomicki 4f40c24dfe Elasticsearch Config: Fix empty settings with expected default values (#69658)
* Elastic details: add missing htmlFor attributes

* Elasticsearch Config: add regression test

* Elasticsearch Config: run options fixer on every change

* Remove unused import
2023-06-08 15:09:35 +02:00
Matias Chomicki e31ea1da9d Query Splitting: Display progress of sub-requests using an annotation frame (#69574)
* Loki Query Splitting: Add and update loading frame to merged response

* Update unit test

* Loki Query Splitting: use data frame constructor function
2023-06-07 13:52:06 +00:00
Matias Chomicki ee0ee70aa1 Loki: Exclude queries using DISTINCT from query splitting (#69377)
* Query utils: add function to identify distinct queries

* Chore: return false when the expected node is found

* Query splitting: exclude distinct queries from splitting

* Group queries excluded from splitting
2023-06-02 12:50:23 +02:00
Matias ChomickiandIvana Huckova 2bfd415c07 Loki Query Splitting: Enable tracking for split queries (#68645)
* Loki datasource: move tracking out of runQuery

* Types: move LokiGroupedRequest to types file

* Tracking: add function to track grouped queries

* Query splitting: add tracking to split queries runner

* Remove unnecessary types

* Add unit test

* Tracking: include test case with hidden query

* Update public/app/plugins/datasource/loki/tracking.ts

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>

* Update public/app/plugins/datasource/loki/tracking.ts

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>

* Update public/app/plugins/datasource/loki/tracking.ts

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>

* Update public/app/plugins/datasource/loki/tracking.ts

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>

* Tracking: add is_split dimension

---------

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2023-05-25 18:39:16 +03:00
Matias Chomicki 9abf8140c7 Loki: Add support for distinct operation in autocomplete and query builder (#69003)
* Loki Autocomplete: add support for suggesting distinct

* Loki query builder: add distinct as format operation

* Remove unused import

* Loki visual query: add support to parse distinct filters

* Query builder: use label param editor for distinct

* Loki Autocomplete: Improve distinct label suggestions

* Query Builder: improve distinct parsing

* Fix tests

* Update tests
2023-05-25 14:22:16 +02:00
Matias Chomicki 7f61cb92bc Logs: Added copy-to-clipboard fallback support and visual feedback after copying (#68874)
* Log row: use clipboard button component for copy log button

* Copy log: adjust button styles to match

* Define line height

* Slightly improve line height
2023-05-23 14:36:05 +02:00
Matias ChomickiandGábor Farkas 9441692fe9 Loki Derived Fields: Refactor legacy form components and add validation (#68015)
* Derived fields: validate duplicated names

* Derived fields: rename prop

* Update tests

* Derived fields: do not validate empty names as repeated

* Derived Field: use non-legacy Field and Input

* Derived Field: integrate name validation

* Derived field: align delete button

* Derived Field: add tooltips

* Derived Field: migrate and style internal link field

* Update tests

* Derived Field: ask user to select data source

Otherwise it's bugged

* Remove unnecessary onchange handler

* Initialize all derived fields attributes

Otherwise we trigger controlled-to-uncontrolled React errors

* Update public/app/plugins/datasource/loki/configuration/DerivedField.tsx

Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>

---------

Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
2023-05-15 13:48:50 +03:00
Matias Chomicki 94a8d15b29 Elasticsearch: Fix derived fields label (#68016)
Elasticsearch: fix derived fields label
2023-05-11 12:51:01 +02:00
Matias Chomicki c11baa3ead Stats Inspector: Prevent long stats from being hidden (#66866)
* Stats Inspector: Prevent stats from being hidden

* Inspect stats: inline container styles
2023-04-20 17:06:47 +02:00
Matias Chomicki 62a87885fc Annotations: fix testid attribute (#66877) 2023-04-19 20:43:46 +00:00
Matias Chomicki b47b8798d3 Logs Context: Always display context toggle (#66379)
* Loki search words: process negative expressions as negative search words

* Revert "Loki search words: process negative expressions as negative search words"

This reverts commit d875b25049.

* Logs Context: always display
2023-04-19 12:03:45 +03:00
Matias Chomickiandbrendamuir d3a1faad1a Loki Config: Add missing section header + minor improvements (#66216)
* Loki config: add missing section title to max lines

* Loki config: minor improvements to datasource test messages

* Chore: remove new line

* Loki: further improve error messages

* Alerting Settings: Add missing tooltip

* Update packages/grafana-ui/src/components/DataSourceSettings/AlertingSettings.tsx

* Update alerting label and tooltip

* Update packages/grafana-ui/src/components/DataSourceSettings/AlertingSettings.tsx

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Alerting settings: Increase label width

* Loki config: update success message

---------

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
2023-04-14 12:39:54 +03:00