Commit Graph
96 Commits
Author SHA1 Message Date
Kristina Demeshchik 00b89b0d29 Dashboards: Fix liveNow not working for panels with time shift (#115902)
* relative time for timeshifts

* remove extra assertion

* absolute time range
2026-01-07 14:24:20 -05:00
Ashley Harrison e317e751d1 Internationalisation: Translate time ranges (#112745)
* translations for time ranges

* provide default single value
2025-10-22 13:17:34 +01:00
Josh Hunt 46adb9a158 AnnoList: Fix annotations not loading when in a repeated row (#111540) 2025-09-24 10:31:19 +00:00
Akhil Singh 113d61c027 I18n: Prevent Intl.DateTimeFormat crash with invalid locales (#110522)
* fix: prevent Intl.DateTimeFormat crash with invalid locales like 'c'

- Add locale validation utilities to prevent crashes when LANG=c is set
- Filter out invalid locales from navigator.languages before creating DateTimeFormat
- Add fallback handling to use browser defaults when all locales are invalid
- Fixes issue #110494 where Grafana crashes with 'RangeError: Incorrect locale information provided'
- Maintains backward compatibility for valid locales

Signed-off-by: Akhil Singh <singhakhil69@gmail.com>

* refactor: simplify locale fix to use direct try-catch approach

- Remove locale-utils.ts and locale-utils.test.ts files
- Use simple try-catch in dates.ts files: try locale, fallback to 'en-US'
- Use Laura's suggested approach in formats.ts with explicit variable declaration
- Remove unused utility exports from index.ts
- Maintains same functionality with cleaner, simpler code
- Avoids adding to public API while still preventing crashes with invalid locales like 'c'

Signed-off-by: Akhil Singh <singhakhil69@gmail.com>

* style: run prettier to fix linting issues

- Format code according to project prettier configuration
- Fixes failing Lint Frontend check

Signed-off-by: Akhil Singh <singhakhil69@gmail.com>

---------

Signed-off-by: Akhil Singh <singhakhil69@gmail.com>
2025-09-11 15:37:17 -04:00
Alikamran RzayevandCopilot be3fa041a5 Dashboards: Conserve timestamp on time range copy-paste across timezones (#109769)
* fix(timepicker): preserve UTC timestamp on copy-paste across timezones

* test: add UTC copy/paste timezone conversion test

* Update packages/grafana-ui/src/components/DateTimePickers/TimeRangePicker/TimeRangeContent.test.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Remove duplicate mockClipboard clear

* Extract utility functions for formatting and converting time ranges

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-29 16:03:34 +02:00
Josh Hunt ba2804bcfe I18n: Use locale-aware date formatting in grafana-data (#108415)
* use intl locale-aware date formatting

* format range for time picker button

* comment

* fix test setup
2025-07-23 09:23:16 +01:00
Ashley Harrison 66323b2a19 Internationalisation: More markup in prometheus/grafana-data (#108378)
* mark up units

* remaining category markup

* prometheus translations...

* load prom resources in core

* more prom markup

* don't load prometheus resources directly in core

* isolate @grafana/data import in jest-setup to prevent side effects in tests

* directly use tz
2025-07-22 17:57:05 +01:00
keerthanamsysandjoshhunt e14c17ef69 TimeZonePicker: Fix incorrect country mapping for Asia/Singapore timezone (#105061)
* Fix incorrect country for Asia/Singapore timezone

* Add test

* link to gh issue

* skip test

---------

Co-authored-by: joshhunt <josh.hunt@grafana.com>
2025-05-08 14:16:18 +01:00
Haris Rozajac 39c33d421b Dashboards: Fix time range bug when use_browser_locale is enabled 2 (#102750)
* revert

* make it work on initial load

* add integration test; cleanup

* fix test

* fix
2025-03-31 07:25:17 -06:00
Haris Rozajac 32756a6c30 Dashboards: Fix time range bug when use_browser_locale is enabled (#102339)
* fix

* update

* fix tests and update
2025-03-18 12:46:22 -06:00
Ashley Harrison 75156324f4 Chore: fix some codeql violations (#101958)
* fix some codeql violations

* just check at start
2025-03-14 13:27:25 +00:00
Leon SorokinandKristina Durivage 59280d5242 Time regions: Add option for cron syntax to support complex schedules (#99548)
Co-authored-by: Kristina Durivage <kristina.durivage@grafana.com>
2025-02-20 14:50:32 -06:00
Sergey Naumovandjoshhunt eb2f8182c0 Dashboards: Allow custom quick time ranges specified in dashboard model (#93724)
* TimeRangePicker: allow to customize quick ranges per dashboard

* TimeRangePicker: show selected custom time range using its name

* rangeutil: add tests for describeTextRange + quickRanges

* Fix up tests, and add an extra case for hidden time ranges

* Don't construct an object to find options, add findRangeInOptions util

* fix type errors detected by TypeScript

---------

Co-authored-by: joshhunt <josh@trtr.co>
2025-02-04 14:36:28 +00:00
Sergej-VlasovandAshley Harrison e7ab142348 Update scenes to v5.35.0 (#98174)
* Update scenes to v5.35.0

* update test to mock console.warn

* use updateLocale

---------

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2024-12-18 14:15:59 +00:00
Oscar Kilhed e3e7086a91 GrafanaData: Add now parameter to dateMath.parse to subsitute now string (#97151)
* Add now parameter to dateMath.parse to subsitute now string

* Create new function, deprecate the old

* Add docstring

* Typo
2024-12-12 11:22:49 +02:00
Jack WestbrookandTom Ratcliffe 8c41137bcf Frontend: Update to Eslint 9 (#94823)
* chore(eslint): bump all eslint related packages to latest

* chore(eslint): update linting scripts work with v9

* chore(eslint): introduce flat config

* chore(eslint): delete legacy configs

* feat(grafana-eslint-rules): update rules to use eslint 9 APIs

* chore(eslint): migrate all nested eslintrc files over to root config

* chore(packages): bump eslint dependencies

* feat(betterer): make it work with eslint 9

* style(grafana-data): remove non-existant ban-types rule from disable declarations

* chore(wip): [wip] link eslint-config-grafana

* chore(packages): add @eslint/compat

* chore(eslint): add compat to testing library and fix alerting rules

* chore(eslint): bump grafana eslint-config to v8

* chore(explore): delete legacy eslint config

* chore: clean codeowners file, remove grafana/eslint-config from e2e plugins

* test(eslint-rules): fix no-border-radius-literal and no-aria-label-e2e-selectors rule tests

* Add .js to prettier checks so new eslint.config.js file isn't missed

* chore(eslint): move emotion/syntax-preference to grafana/defaults

* test(eslint): use core-js structured-clone

* revert(services): undo merge backend-format githook changes

* test(eslint-rules): remove structured-clone polyfill from tests

* chore(eslint): add back public/lib/monaco to ignore list, sort alphabetically

* chore(e2e-plugins): remove eslint config 7 from plugins package.json

---------

Co-authored-by: Tom Ratcliffe <tom.ratcliffe@grafana.com>
2024-11-07 16:31:06 +01:00
Ashley Harrison 0fae3579e8 Chore: improve some types (#95728)
* fix some typings

* fix some more

* more type fixes

* fix some graphite types

* few influx fixes
2024-11-05 09:57:30 +00:00
Bogdan Matei 048ba14c34 Fix relative time range parsing (#95603) 2024-10-30 15:52:19 +02:00
Ashley Harrison 161d452841 Chore: Type improvements (#93267)
* some type fixes + ignore graveyard folder

* few more fixes

* remove comment

* ignore global styles

* few more type fixes
2024-09-13 09:50:55 +01:00
Jack Westbrook 306ae8b4f5 Grafana/data: Remove barrel files part 2 (#89850)
* chore(grafana-data): remove datetime barrel file and update all imports

* chore(grafana-data): remove types barrel file and update imports

* chore(grafana-data): update types imports across package files

* chore(grafana-data): fix erroronous type export definition on OrgRole

* chore(grafana-data): fix errornous re-export type declarations and missing datetime/common exports

* chore(azure-monitor): fix import pointing to nested grafana-data barrel file
2024-07-03 14:14:58 +02:00
kay delaney 2e0175c3eb Dashboards: Change datemath parse logic so parsed dates always take timezone into account (#88182)
* Dashboards: Change datemath parse logic so parsed dates always take timezone into account
2024-06-27 16:17:21 +03:00
Ashley Harrison f1dbe39533 Chore: Improve typings (#88282)
* remove some type assertions

* some more type assertion fixes

* nicer

* shortcircuit while loop when hitting something that isn't an HTMLElement
2024-05-28 13:20:57 +01:00
0793a9033a Update dependency @types/lodash to v4.17.1 (#87419)
* Update dependency @types/lodash to v4.17.1

* fix grafana-data

* simpler grafana-data fix

* simpler code

* commit a betterer crime (it was already doing this implicitly before...)

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2024-05-10 13:56:27 +01:00
Thomas WikmanandAshley Harrison 7fab894e9b DateTimePicker: Alternate timezones now behave correctly (#86750)
* Add failing tests for timezone handling

* Fix `DateTimePicker.tsx` timezone handling

- Resolves `onBlur` issue
- Resolve Calendar and TimeOfDay issues
- Update test to cover different timezone

* Handle `console.warn` in test

* Handle `console.warn` in test #2

* Better handling of invalid date

When parsing date string with `dateTime`, adding a second `formatInput` aids in both parsing the actual string and avoid `console.warn` when `moment` reverts to be using `Date`.

* add more test cases

* Ash/proposed changes (#86854)

* simplify

* only need this change

* formatting

* const > let

* add test to ensure calendar is always showing the matching day

* separate state

* undo story changes

* update util function comments

* fix for selecting date in the calendar

---------

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2024-04-29 10:46:44 +01:00
Ashley Harrison 4b5b738646 Time Zones: Fix relative time when using UTC timezone (#85637)
add UTC case to e2e test + let UTC pass through to moment.tz
2024-04-09 09:54:57 +01:00
renovate[bot]andAshley Harrison 42fe0fdf70 Update dependency date-fns to v3 (#81625)
* Update dependency date-fns to v3

* update imports

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2024-01-31 12:05:38 +00:00
Dominik Prokop 703deeff0b DashboardScene: Add time picker keybindings (#78632)
* grafana/data: Add time range zoom out util

* Add keybindings for time range zoom out

* TimeRangePicker: change the way absolute time range is detected

* Depend on dashboard scene tructure rather

* Revert "grafana/data: Add time range zoom out util"

This reverts commit bc1602db57.

* Lint

* Lint

* dashboardSceneGraph tests
2023-11-27 00:32:23 -08:00
Jack Westbrook 69af9f9ad7 Chore: Update to node 20 (#76097)
* chore(node): update node version to 20

* chore(node): bump to 20.8.0, update drone variables

* chore(drone): update yaml config

* chore(yarn): bump yarn to latest to fix building binaries ERR_IMPORT_ASSERTION_TYPE_MISSING errors

* test(grafana-data): update whitespace in time formats for node 20 (18.13+)

* chore(node): move to LTS 20.8.1

* chore(node): bump to LTS 20.9.0
2023-10-26 09:34:50 +02:00
Dominik Prokop fcfbb3b2ca DateTime: Update toISOString signature (#76824) 2023-10-19 18:25:35 +03:00
Andres Martinez Gotor 0ddc3d4a49 Chore: Fix formatter test (#76689) 2023-10-17 16:42:57 +03:00
Marcus AnderssonandDominik Prokop d18766e88b PluginExtensions: Make sure to pass default timeZone in context (#76513)
* Fixed so we will return default timeZone to extensions if empty is provided.

* Update public/app/features/dashboard/utils/getPanelMenu.test.ts

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>

---------

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2023-10-13 14:43:45 +02:00
Simen Bekkhus 3749c17556 chore: replace Sinon usage with Jest (#75940) 2023-10-04 11:12:30 +01:00
Ashley Harrison ff0642bf6e Chore: Type improvements 🧹 (#75271)
* fix some e2e flows types

* some type fixes

* must... fix... more...

* MOAR

* MOREMOREMORE

* 1 more
2023-09-22 15:06:49 +01:00
Ashley Harrison 0c44a6f9bb Chore: Improve typings 🧹 (#74599)
* various type fixes

* candlestick panel type fixes

* few more fixes

* some fixes

* more :)

* moar!

* undo change to SilencesFilter

* undo change to configureStore
2023-09-13 09:17:07 +01:00
e2724f39d9 Time Range: Using relative time takes timezone into account (#74013)
* account for timezone when using relative times
Co-authored-by: eledobleefe <laura.fernandez@grafana.com>
Co-authored-by: Joao Silva <joao.silva@grafana.com>
Co-authored-by: L-M-K-B <48948963+L-M-K-B@users.noreply.github.com>
Co-authored-by: joshhunt <josh@trtr.co>
Co-authored-by: tskarhed <1438972+tskarhed@users.noreply.github.com>

* keep as it was originally for now

* add e2e test for relative time zone overrides

* empty commit to add coauthors

Co-authored-by: eledobleefe <laura.fernandez@grafana.com>
Co-authored-by: Joao Silva <joao.silva@grafana.com>
Co-authored-by: L-M-K-B <48948963+L-M-K-B@users.noreply.github.com>
Co-authored-by: joshhunt <josh@trtr.co>
Co-authored-by: tskarhed <1438972+tskarhed@users.noreply.github.com>

* fix types

* switch to using table panel in e2e test

* use regex for partial text match

* actually go to the dashboard...

* use include.text

* check for visibility first

* try waiting on backend request to complete

* CI driven development is fun

* make sure we're waiting for both data query calls

* open dashboard instead

* kick drone

* Revert "open dashboard instead"

This reverts commit bab9c77c4d.

* check timezone second

* refactor to avoid detached elements

---------

Co-authored-by: eledobleefe <laura.fernandez@grafana.com>
Co-authored-by: Joao Silva <joao.silva@grafana.com>
Co-authored-by: L-M-K-B <48948963+L-M-K-B@users.noreply.github.com>
Co-authored-by: joshhunt <josh@trtr.co>
Co-authored-by: tskarhed <1438972+tskarhed@users.noreply.github.com>
2023-09-04 10:38:35 +01:00
Torkel Ödegaard f4c127a1d8 DashboardScene: Support panel relative time overrides and timeshift (#62844)
* Things are working

* update

* Added unit tests

* More tests

* minor fix

* Update

* Support hideTimeOverride
2023-09-01 10:21:41 +02:00
Torkel Ödegaard ad00200a39 datemath: Fixes state mutation by parseDateMath function (#74180) 2023-08-31 17:09:59 +02:00
45ff0b5cf6 DatePicker: Fix calendar not showing correct selected range when changing time zones (#73273)
* user essentials mob! 🔱

* user essentials mob! 🔱

lastFile:packages/grafana-ui/src/components/DateTimePickers/TimeRangePicker/CalendarBody.tsx

* user essentials mob! 🔱

lastFile:packages/grafana-ui/src/components/DateTimePickers/TimeRangePicker/CalendarBody.tsx

* user essentials mob! 🔱

* user essentials mob! 🔱

lastFile:e2e/dashboards-suite/dashboard-timepicker.spec.ts

* user essentials mob! 🔱

lastFile:e2e/dashboards-suite/dashboard-timepicker.spec.ts

* user essentials mob! 🔱

* user essentials mob! 🔱

* restore custom.ini

* run betterer + prettier

---------

Co-authored-by: joshhunt <josh@trtr.co>
Co-authored-by: Roxana Turc <anamaria-roxana.turc@grafana.com>
Co-authored-by: Tobias Skarhed <tobias.skarhed@gmail.com>
Co-authored-by: eledobleefe <laura.fernandez@grafana.com>
2023-08-23 12:57:32 +00:00
Sven Grossmann c006ea18fb Loki: Fix validation of step values to also allow e.g. ms values (#73270)
* use go duration validation

* add `isValidGrafanaDuration`

* use `isValidGrafanaDuration`

* improve jsdoc
2023-08-16 17:57:26 +02:00
RoxanaAnamariaTurc eea18d6741 Datetime: Added more tests to the files in the datetime folder (#71731)
* Datetime: Added more tests to the files in the datetime folder

* Updated tests suites according to feedback received

* Corrected the lint error

* Removed repetitive code
2023-07-21 11:24:22 +01:00
Ashley Harrison ab09c9efc7 TimePicker: Fix issue with previous fiscal quarter not parsing correctly (#71083)
* fix issue with previous fiscal quarter not parsing correctly

* add comment
2023-07-05 17:02:28 +01:00
73f1cd7bad TimePicker: Fixes issues with "Recently used absolute ranges" section (#66281)
* TimePicker: Fixes issues with "Recently used absolute ranges" section

Squashed commit of the following:

commit 99d5076ce1fadde1f22ed372f372656b58efa1c4
Author: Joao Silva <joao.silva@grafana.com>
Date:   Tue Apr 11 14:06:27 2023 +0100

    user essentials mob! 🔱

    lastFile:public/app/core/components/TimePicker/TimePickerWithHistory.tsx

commit cad0201df452f956a422b030d5b15e8ba4aed9a9
Author: eledobleefe <laura.fernandez@grafana.com>
Date:   Tue Apr 11 11:44:34 2023 +0200

    user essentials mob! 🔱

    lastFile:public/app/core/components/TimePicker/TimePickerWithHistory.tsx

Co-authored-by: eledobleefe <laura.fernandez@grafana.com>

* TimePicker: Add correct date format

* Add convertRawToRange tests

* Rename test variables

* RTL tests

* Proper RTL tests

* Apply suggestions from code review

Co-authored-by: Joao Silva <100691367+JoaoSilvaGrafana@users.noreply.github.com>

* Remove commented line

* Fix linting

---------

Co-authored-by: eledobleefe <laura.fernandez@grafana.com>
Co-authored-by: Tobias Skarhed <tobias.skarhed@gmail.com>
Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
2023-04-17 17:19:44 +02:00
Ashley Harrison 3a1862f37f TimeSeries: fix time comparer not comparing date strings properly (#64622)
* fix time comparer not comparing times properly

* move isDateTime last as it's probably the most expensive check
2023-03-13 09:31:27 +00:00
Fábio Silva afc9925dbf Alerting: Fix invalid duration that causes Grafana to crash (#63753)
* Alerting: fix invalid alert duration

* Return empty string from intervalToAbbreviatedDurationString

* Alerting: add tests for invalid duration

* tests intervalToAbbreviatedDurationString

* Alerting: add missing isAfter import 

* durationutils.ts
2023-03-01 11:45:41 -10:00
Ashley Harrison f8d89eff56 Chore: fix type errors in tests (#63270)
* fix any's in tests

* fix more any's in tests

* more test type fixes

* fixing any's in tests part 3

* more test type fixes

* fixing test any's p5

* some tidy up

* fix template_srv
2023-02-14 16:46:42 +01:00
Ashley Harrison 9bbc2c4cbb Chore: fix some typings in @grafana/data (#60009)
fix some typings in @grafana/data
2022-12-16 09:59:00 +00:00
Jack Westbrook d87bf30e9e Build: Introduce ESM and Treeshaking to NPM package builds (#51517)
* Revert "Chore: Bump terser to fix security vulnerability (#53052)"

This reverts commit 7ae74d2a18.

* feat: use tsc and rollup directly with esbuild and publishConfig, files props

* refactor(grafana-data): fix isolatedModules re-export type error

* refactor(grafana-data): import paths from src not package name

* refactor(rollup): fix dts output.file

* chore(grafana-schema): delete dashboard_experimental.gen.ts - cannot work with isolatedModules

* refactor(grafana-e2e-selectors): fix export types isolatedModules error

* refactor(grafana-runtime): fix isolatedModules re-export type error

* refactor(grafana-ui): fix isolatedModules re-export type error

* feat(grafana-ui): use named imports for treeshaking

* refactor(grafana-ui): use named imports for treeshaking

* feat: react and react-dom as peerDeps for packages

* feat(grafana-ui): emotion packages as peerDeps

* feat(grafana-e2e): use tsc, rollup, esbuild for bundling

* chore(packages): clean up redundant dependencies

* chore(toolkit): deprecate unused package:build task

* chore(schema): put back dashboard_experimental and exclude to prevent isolatedModules error

* docs(packages): update readme

* chore(storybook): disable isolatedModules for builds

* chore: relax peerDeps for emotion and react

* revert(grafana-ui): put @emotion dependencies back

* refactor: replace relative package imports with package name

* build(packages): set emitDeclaration false for typecheck scripts to work

* test(publicdashboarddatasource): move test next to implementation. try to appease the betterer gods

* chore(storybook): override ts-node config for storybook compilation

* refactor(grafana-data): use ternary so babel doesnt complain about expecting flow types

* chore(toolkit): prefer files and publishConfig package.json props over copying

* build(npm): remove --contents dist arg from publishing commands

* chore(packages): introduce sideEffects prop to package.json to hint package can be treeshaken

* chore(packages): remove redundant index.js files

* feat(packages): set publishConfig.access to public

* feat(packages): use yarn berry and npm for packaging and publishing

* refactor(packages): simplify rollup configs

* chore(schema): add comment explaining need to exclude dashboard_experimental

* revert(toolkit): put back clean to prevent cli failures

* ci(packages): run packages:pack before a canary publish

* chore(gitignore): add npm-artifacts directory to ignore list

* test(publicdashboarddatasource): fix module mocking

* chore(packages): delete package.tgz when running clean

* chore(grafana-data): move dependencies from devDeps to prevent build resolution errors
2022-08-03 15:47:09 +02:00
Ilya StoliarandTorkel Ödegaard d0db3ab306 TimeZone: Remove political reference (#52689)
* Remove political reference

* Name adjustment

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2022-07-24 11:41:18 +02:00
Dan Keder 9595fd6b66 Prometheus: Support 1ms resolution intervals (#44707)
* Prometheus: Support 1ms resolution in time ranges

* UI: Support 1ms resolution in time ranges
2022-06-29 07:39:50 +02:00
Agnès Toulet 99c8ce5ab9 GrafanaData: Fix week start for non-English browsers (#50582)
* grafana-data: Fix start week for non-English browsers

* apply review suggestion
2022-06-14 15:12:52 +02:00