Commit Graph

9 Commits

Author SHA1 Message Date
Matias Chomicki b3596e8c72
New Logs Panel: Render new panel using the current visualization (#105968)
Actionlint / Lint GitHub Actions files (push) Waiting to run Details
Backend Code Checks / Validate Backend Configs (push) Waiting to run Details
Backend Unit Tests / Grafana (${{ matrix.shard }}) (1/8) (push) Waiting to run Details
Backend Unit Tests / Grafana (${{ matrix.shard }}) (2/8) (push) Waiting to run Details
Backend Unit Tests / Grafana (${{ matrix.shard }}) (3/8) (push) Waiting to run Details
Backend Unit Tests / Grafana (${{ matrix.shard }}) (4/8) (push) Waiting to run Details
Backend Unit Tests / Grafana (${{ matrix.shard }}) (5/8) (push) Waiting to run Details
Backend Unit Tests / Grafana (${{ matrix.shard }}) (6/8) (push) Waiting to run Details
Backend Unit Tests / Grafana (${{ matrix.shard }}) (7/8) (push) Waiting to run Details
Backend Unit Tests / Grafana (${{ matrix.shard }}) (8/8) (push) Waiting to run Details
Backend Unit Tests / Grafana Enterprise (${{ matrix.shard }}) (1/8) (push) Waiting to run Details
Backend Unit Tests / Grafana Enterprise (${{ matrix.shard }}) (2/8) (push) Waiting to run Details
Backend Unit Tests / Grafana Enterprise (${{ matrix.shard }}) (3/8) (push) Waiting to run Details
Backend Unit Tests / Grafana Enterprise (${{ matrix.shard }}) (4/8) (push) Waiting to run Details
Backend Unit Tests / Grafana Enterprise (${{ matrix.shard }}) (5/8) (push) Waiting to run Details
Backend Unit Tests / Grafana Enterprise (${{ matrix.shard }}) (6/8) (push) Waiting to run Details
Backend Unit Tests / Grafana Enterprise (${{ matrix.shard }}) (7/8) (push) Waiting to run Details
Backend Unit Tests / Grafana Enterprise (${{ matrix.shard }}) (8/8) (push) Waiting to run Details
CodeQL checks / Analyze (actions) (push) Waiting to run Details
CodeQL checks / Analyze (go) (push) Waiting to run Details
CodeQL checks / Analyze (javascript) (push) Waiting to run Details
CodeQL checks / Analyze (python) (push) Waiting to run Details
Lint Frontend / Verify i18n (push) Waiting to run Details
Lint Frontend / Lint (push) Waiting to run Details
Lint Frontend / Typecheck (push) Waiting to run Details
Lint Frontend / Betterer (push) Waiting to run Details
End-to-end tests / Build & Package Grafana (push) Waiting to run Details
End-to-end tests / ${{ matrix.suite }} (dashboards-suite) (push) Blocked by required conditions Details
End-to-end tests / ${{ matrix.suite }} (panels-suite) (push) Blocked by required conditions Details
End-to-end tests / ${{ matrix.suite }} (smoke-tests-suite) (push) Blocked by required conditions Details
End-to-end tests / ${{ matrix.suite }} (various-suite) (push) Blocked by required conditions Details
End-to-end tests / ${{ matrix.suite }} (old arch) (old-arch/dashboards-suite) (push) Blocked by required conditions Details
End-to-end tests / ${{ matrix.suite }} (old arch) (old-arch/panels-suite) (push) Blocked by required conditions Details
End-to-end tests / ${{ matrix.suite }} (old arch) (old-arch/smoke-tests-suite) (push) Blocked by required conditions Details
End-to-end tests / ${{ matrix.suite }} (old arch) (old-arch/various-suite) (push) Blocked by required conditions Details
Frontend tests / Unit tests (${{ matrix.chunk }} / 8) (1) (push) Waiting to run Details
Frontend tests / Unit tests (${{ matrix.chunk }} / 8) (2) (push) Waiting to run Details
Frontend tests / Unit tests (${{ matrix.chunk }} / 8) (3) (push) Waiting to run Details
Frontend tests / Unit tests (${{ matrix.chunk }} / 8) (4) (push) Waiting to run Details
Frontend tests / Unit tests (${{ matrix.chunk }} / 8) (5) (push) Waiting to run Details
Frontend tests / Unit tests (${{ matrix.chunk }} / 8) (6) (push) Waiting to run Details
Frontend tests / Unit tests (${{ matrix.chunk }} / 8) (7) (push) Waiting to run Details
Frontend tests / Unit tests (${{ matrix.chunk }} / 8) (8) (push) Waiting to run Details
Integration Tests / Sqlite (${{ matrix.shard }}) (1/8) (push) Waiting to run Details
Integration Tests / Sqlite (${{ matrix.shard }}) (2/8) (push) Waiting to run Details
Integration Tests / Sqlite (${{ matrix.shard }}) (3/8) (push) Waiting to run Details
Integration Tests / Sqlite (${{ matrix.shard }}) (4/8) (push) Waiting to run Details
Integration Tests / Sqlite (${{ matrix.shard }}) (5/8) (push) Waiting to run Details
Integration Tests / Sqlite (${{ matrix.shard }}) (6/8) (push) Waiting to run Details
Integration Tests / Sqlite (${{ matrix.shard }}) (7/8) (push) Waiting to run Details
Integration Tests / Sqlite (${{ matrix.shard }}) (8/8) (push) Waiting to run Details
Integration Tests / MySQL (${{ matrix.shard }}) (1/8) (push) Waiting to run Details
Integration Tests / MySQL (${{ matrix.shard }}) (2/8) (push) Waiting to run Details
Integration Tests / MySQL (${{ matrix.shard }}) (3/8) (push) Waiting to run Details
Integration Tests / MySQL (${{ matrix.shard }}) (4/8) (push) Waiting to run Details
Integration Tests / MySQL (${{ matrix.shard }}) (5/8) (push) Waiting to run Details
Integration Tests / MySQL (${{ matrix.shard }}) (6/8) (push) Waiting to run Details
Integration Tests / MySQL (${{ matrix.shard }}) (7/8) (push) Waiting to run Details
Integration Tests / MySQL (${{ matrix.shard }}) (8/8) (push) Waiting to run Details
Integration Tests / Postgres (${{ matrix.shard }}) (1/8) (push) Waiting to run Details
Integration Tests / Postgres (${{ matrix.shard }}) (2/8) (push) Waiting to run Details
Integration Tests / Postgres (${{ matrix.shard }}) (3/8) (push) Waiting to run Details
Integration Tests / Postgres (${{ matrix.shard }}) (4/8) (push) Waiting to run Details
Integration Tests / Postgres (${{ matrix.shard }}) (5/8) (push) Waiting to run Details
Integration Tests / Postgres (${{ matrix.shard }}) (6/8) (push) Waiting to run Details
Integration Tests / Postgres (${{ matrix.shard }}) (7/8) (push) Waiting to run Details
Integration Tests / Postgres (${{ matrix.shard }}) (8/8) (push) Waiting to run Details
Reject GitHub secrets / reject-gh-secrets (push) Waiting to run Details
Run dashboard schema v2 e2e / dashboard-schema-v2-e2e (push) Waiting to run Details
Dispatch sync to mirror / dispatch-job (push) Waiting to run Details
publish-kinds-next / main (push) Has been cancelled Details
* LogsPanel: integrate new panel via feature flag

* Log Line: move sampled/errors/deduplication count outside of log line body

* LogList: increase overscan count

* Logs Panel: enable deduplication for infinite scrolling

* Logs Panel: remove margin overflowing drilldown

* Logs Panel: add missing dependency to effect

* Logs Panel: pass missing callback

* Remove console log

* LogLine: show cursor pointer only when interactable

* LogLineDetails: make resize handler more obvious

* LogsPanel: add missing props to from panel

* LogLineMenu: add support for custom items

* LogsPanel: pass custom menu items to LogList

* Fix imports

* Chore: comments and missing argument

* LogLineMenu: pass log to event listener

* LogListContext: filter log details when no longer present in the new response

* chore: log

* LogsPanel: conditionally show options per feature flag status

* LogLine: align logs when some of them are sampled or with errors

* Chore: update tests

* LogLineMenu: test custom options

* LogsSamplePanel: show controls

* LogsPanel: move return after hooks to prevent bugs
2025-06-01 14:29:49 +02:00
Matias Chomicki 9308f86d63
New Logs Panel: Add Log Details support (#105609)
* Log list: add onclick listener

* LogListContext: add basic details support

* LogLineDetails: create component

* Address lint issues

* Log Details: make resizable and store size

* LogListModel: add sampled and error support

* LogDetails: pass more required props

* LogLineContext: add interactive callbacks support

* LogLineDetails: pass interactive callbacks

* LogList: pass displayedFields callbacks

* LogLine: move click listener

* LogLineMenu: support showing details

* LogLine: move onclick listener

* LogListContext: remove displayedFields intermediation

* i18n

* LogListContext: abstract details shown function

* LogLine: visually show expanded lines

* LogDetails: remove min width for labels

* LogLineDetails: add close button

* LogList: add extra wrapper to get width

* LogLineDetails: update logs size on resize

* virtualization: update to new width reference

* LogLine: check overflow on every re-render

* LogList: debug virtualization when resizing

* LogLineDetails: make it scrollable

* LogListContext: make detailsWidth not undefined

* Update tests with new attributes

* LogLine: update collapsed state with container changes

* LogLine: move cursor property to clickable styles

* LogList: fix height recalculation when display options change

* Logs: fix feature toggles support

* Logs: more feature toggles adjustments

* Lint

* LogLine: support duplicates, hasError, and isSampled

* Logs: debug feature flag combinations

* i18n

* Prettier

* New Logs Panel: generate storage key for dashboards

* Explore Logs: fix filtered levels

* Logs Sample: integrate new panel

* LogLine: fix unwrapped logs

* Fix test

* Update test

* Logs panel: update test

* Prettier

* LogLine: update tests

* LogLineMenu: update test

* LogList: update unit test

* processing: update test

* virtualization: update unit test
2025-05-20 20:28:35 +03:00
Matias Chomicki 441e45d88a
New Logs Panel: Handle long lines (#103171)
* LogLine: introduce truncation limit

* Processing: turn LogListModel into a class

* LogLine: introduce collapsed/expanded state and read from model

* Virtualization: correct extra line for controls in size

* LogLine: fix collapsed state initialization

* Add new criteria to define long lines to truncate

* Virtualization: better truncation limit

* Check collapsed state based on container size

* Update function name

* Extract translations

* LogLine: update unit test

* virtualization: add unit test

* processing: update unit test

* Fix focused test

* processing: process fields on demand

* Logs: consider loading state from explore

* LogList: improve resize and recalculation

* chore: build?
2025-05-07 01:26:54 +03:00
Matias Chomicki 06c83f7d4d
New Logs Panel: Add LogListControl component (#102359)
* LogListNavigation: create component

* LogListNavigation: make it optional

* Refactor Navigation into Controls

* Explore Logs: hide old panel options

* LogListControls: add more controls and apply new styles

* LogListControls: update width

* Remove console log

* LogList: wrap component in context

* LogListContext: make it stateful

* LogListControls: connect with context

* LogListContext: sync displayed fields

* LogListContext: add syntax highlighting control

* LogLine: improve color with highlighting off

* LogListControls: improve button styles

* LogListControls: add sort order option

* LogListControls: add dedup strategy

* LogListContext: sync prop changes with state

* LogList: add option change callback

* LogListContext: sync external changes only when showControls is disabled

* LogListContext: unify sync effect

* LogListControls: improve buttons active css

* LogListContext: add optional storage support

* LogList: make syntaxHighlighting and read from store or default to true

* LogsPanel: add support for new options

* Generated file

* Update tests

* New Logs Panel: add showControls option

* LogList: make eventBus optional

* LogsPanel: expose syntaxHighlighting

* LogsPanel: expose grammar to plugins

* Remove incorrect legacy file

* LogListControls: allow options change with controls enabled in panel editor

* LogLine: apply no-highlighting class to ansi wrapper

* LogListControls: add frontend level filtering

* LogList: filter by filterLevels

* LogListControls: allow filterLevels in dashboards

* LogLine: update unit tests

* LogLineMenu: update unit test

* LogListControls: add unit test

* Revert

* LogList: add unit test

* LogList: add onLogRowHover support

* LogList: test hover events

* LogsPanel: add unit test

* LogLine: use theme color for errors

* LogLine: minor tweak to hover state

* Chore: fix test case name

* LogListControls: add border

* LogListControls: prevent default on wrap toggle click

* LogLine: switch info and debug colors

* ContentOutline + LogControls: sync displayed levels and minor outline improvements

* LogListContext: sync with external filterLevel changes

* Logs: work with arrays of LogLevel and not plain strings

* Fix type

* LogListControl: increase controls size
2025-04-04 14:53:12 +02:00
Matias Chomicki b63b4596a0
New Logs Panel: Log line tokenization and syntax highlighting (#101401)
* Logs: preprocess and highlight with Prism

* Processing: highlight logs on demand

* LogList: reset sizes when wrap changes

* Extend base grammar to support numbers, dates, strings, and fields

* Refactor grammar

* LogList: fix size recalculation after logs update

* LogLine: add ansi support

* Processing: Use raw instead of entry

* Capitalize level

* Remove colors from timestamps

* added highlight colors

* Fix oopsies

* LogLine: Remove repeated css attribute

* Log grammar: update log token string

* Formatting

* LogLine: fix underflow detection

* Grammar: fine tune, add durations

* LogLine: change rgba colors to theme colors

* Update tests

* Grammar: add uids

* LogLine: dont render empty logLevel when logs are wrapped

* Virtualization: fix calculation when level is unknown

* Remove console log

* Chore: fix log line message

* LogLine: remove opacity change on hover

* LogLine: tweak colors and highlight urls

* Tweak colors, remove numbers

* Remove unnecessary selector

* Fix imports

* Chore: move dimensions code to virtualization

* processing: add unit tests

* Revert change

* Grammar: add unit tests

* Remove stale assertion

* LogLine: define critical color

* Fix alpha dependency

---------

Co-authored-by: Joan <zizzpudding@gmail.com>
Co-authored-by: Joan Wortman <joanwortman@Joans-MacBook-Air-2.local>
2025-03-26 12:48:26 +01:00
Matias Chomicki d78c646f93
New Logs Panel: Log line menu (#101060)
* Create LogLineMenu component

* Fine tune icon width

* LogLineMenu: Add placeholder options

* utils: create reusable handleOpenLogsContextClick

* LogLineMenu: add callbacks to menu items

* LogListContext: create component

* LogList: use log list context to connect menu callbacks

* LogLine: add pinned style

* Remove unused imports

* LogLine: add unit test

* LogLine: add menu test case

* LogLineMenu: add unit test

* LogLineMessage: add unit test

* LogListContext: add unit test

* Remove unused code

* Extract translations

* Fix handleOpenLogsContextClick

* Chore: memoize styles

* Virtualization: update node used for underflow detection

* Use useStyles2 instead of manually memoizing

* Virtualization: export getter instead of variable

* Open context: move stopPropagation to the old panel code

* Logs: add new container class
2025-02-27 18:34:02 +02:00
Matias Chomicki 03dcd25a32
New Logs Panel: Displayed fields support (#100643)
* LogList: add displayedFields and getFieldLinks props

* Render displayed fields

* LogLine: rename function

* Refactor log dimensions

* Generate styles in parent component

* Log List: implement tabular unwrapped logs

* Rename class

* Log line: center fields

* Parametrize field gap

* Virtualization: update measurement to support displayed fields

* Shorten visible level

* Do not calculate dimensions when logs are wrapped

* Logs Navigation: fix width when flag is enabled

* Pass styles to LogLineMessage

* Formatting

* Fix unwrapped logs when showTime is off

* LogLine: update css selectors for fields
2025-02-27 12:31:55 +02:00
Matias Chomicki b814f1628f
New Logs Panel: Add infinite scrolling support (#99773)
* Create Infinite Scroll wrapper component

* Logs list: refactor event subscriber

* Infinitely load logs

* Move renderer to Infinite Scroll component

* Implement infinite scroll state

* Switch internal implementation to use the existing infinite scrolling component logic

* Integrate with logs panel

* Move scrolling management to infinite scrolling component

* LogList: change subscription dependency to prevent unnecessary runs

* Infinite scroll: remove autoscrolling

* Logs Panel: fix dependencies to prevent re-renders on refresh

* Infinite scroll: introduce pre-scroll state

* LogList: expose initial log position prop

* Infinite scroll: less work on scroll and autoscroll behavior

* Remove console

* Fix imports

* Add infinite scroll translations

* Fix imports

* Add visual delimiter for new pages and increase gap

* Remove log

* Chore: rename interface to LogListModel

* Hover: decrease opacity

* Fix no-logs state

* Prettier

* Infinite scroll: move scroll delimiter

* Load more message: make it clickable
2025-02-14 13:52:34 +02:00
Matias Chomicki ff926c5ac5
Logs Panel: Base elements for the new visualization (#99084)
* Create base components

* Create measurement service

* Add container for list

* Use measurement to render virtualized log lines

* Match rendered styles in 2d context for measuring

* Improve virtualization initialization and handle resize

* Introduce log line processing

* Virtualization: fix measurement of lines with line endings

* Virtualization: include scrollbar width in calculation

* Remove logs

* Virtualization: optimize text measurement

* Add support for forceEscape

* Log line: properly style wrapped/unwrapped lines

* Virtualization: handle possible overflows

* Improve overflow handling

* LogList: remove scroll position ref

* Remove logs

* Remove log

* Add top/bottom navigation buttons

* Add timestamp to pre-processing

* Add showtime support

* Fix imports

* Chore: simplify dedup

* Show level

* Refactor measurement and measure level and timestamp

* Virtualization: skip unnecessary measurements

* Improve measurements to minimize overflow chance

* Introduce logline colors

* Update palette

* Remove pretiffying

* Add comment

* Remove unused variable

* Add color for info level

* Fix dependencies

* Refactor overflow to account for smaller estimations

* Debounce resizing

* Fix imports

* Further optimize height calculation

* Remove outline

* Unused import

* Use less under/overflow method

* Respond to height changes

* Refactor size adjustment to account for layout changes

* Add Logs Panel support

* Add margin bottom to log lines

* Remove unused option

* LogList: container div should never be null

Bad API design

* Log List: make app not undefined and update containerElement usages

* New Logs Panel: Create as new visualization (#99427)

* Logs Panel: clean up old panel

* Logs Panel New: create as new visualization

* Plugin: mark as alpha

* Logs panel new: hold container in a state variable

* Logs panel: fix no data state

* Create newLogsPanel feature flag

* Logs: use new feature flag

* Prettier

* Add new panel to code owners

* Logs Navigation: add translations

* Address betterer issues

* Fix import

* Extract translations

* Update virtualization.ts

* Virtualization: add DOM fallback for text measurement

* Run gen-cue

* plugins_integration_test: add logs-new to expected plugins
2025-02-04 18:40:17 +01:00