Commit Graph
100 Commits
Author SHA1 Message Date
Josh HuntandAshley Harrison 305209f4be CommandPalette: Render dashboard + nav actions as links (#62315)
* CommandPalette: Render links as links!

* Update public/app/features/commandPalette/KBarResults.tsx

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>

* Apply suggestions from code review

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>

* fix ellipsis showing

---------

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2023-01-27 16:10:05 +00:00
Josh Hunt 960307e938 Search: Remember sorting preference between visits (#62248)
Search: Remember sort option between uses
2023-01-27 11:00:28 +00:00
Josh Hunt 70f109526a Search: Store only search value in state, not the whole selectable value (#62228)
* Search: Store only search value in state, not the whole selectable value

* type sort to undefined-able
2023-01-27 10:50:48 +00:00
Josh Hunt 43828e829b Chore: Script to generate betterer issue summary (#61857)
* wip

* finish script

* limit by message

* fix filter message

* Add template

* improve template

* codeowners devdep
2023-01-26 10:48:33 +00:00
Josh Hunt 32ff95bde3 CommandPalette: Fix feature flag (#62000) 2023-01-24 15:52:12 +01:00
Josh Hunt 88347caf5f Navigation: Open command palette from search box (#61667)
* Reduce size of topnav search 'input' to 1/5th of the width, min width 200px

* Open command palette on topnav search box click

* Rename component

* fix comment

* feature flag the change

* update feature flag description
2023-01-24 12:41:09 +00:00
Josh HuntandLevente Balogh 959c89793f Chore: eslint rule for preventing e2e selectors in aria-label (#59731)
* Create eslint plugin/rule for catching e2e selectors in aria-label

* Add no-aria-label-e2e-selectors to betterer

* chore: skip levitate for the `grafana-eslint-rules` package

* Fix rule

* Add readme

* Add Apache 2 license

* Typecheck using @typescript-eslint/utils

* actually export the rule

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
2023-01-18 15:02:35 +00:00
Josh Hunt daf171820c CommandPalette: Improve section header styling (#61584)
* Add border between command palette sections

* make breadcrumbs secondary text color

* Improve comments
2023-01-17 17:34:40 +01:00
Josh Hunt 665f85cd7e CommandPalette: Minor usability improvements (#61567) 2023-01-16 18:33:46 +00:00
Josh Hunt 9b10f6c7dd CommandPalette: Fix long dashboard names freezing the browser (#61278)
* CommandPalette: Use custom useMatches to avoid perf issues with long names

* wip start to multi search

* use search permutations, and do substring match if search is over 25 chars

* update ufuzzy

* don't permute query if greater than 5 words
2023-01-13 14:16:16 +00:00
Josh Hunt 5d725d22ad CommandPalette: Search for dashboards using API (#61090)
* CommandPalette: Search for dashboards using API

* Fix ordering of dashboards

* Put recent + search dashboards in root list, refactor actions into hook

* limit recent dashboards to 5

* search debounce to 200ms

* update priorities

* extract i18n
2023-01-10 14:59:32 +00:00
Josh Hunt 0aeee7f265 Chore: Automatically add crowdin PRs to User Essentials board (#60912)
* Chore: Automatically add crowdin PRs to User Essentials board

* ci
2023-01-04 15:47:45 +00:00
Josh Hunt a26d4c90b2 I18N: Fail i18n:extract on warnings + update strings (#60949)
* I18N: Fail i18n:extract on warnings

* I18N: Fix onboarding page title

* extract all strings

* move t reassign outside of function
2023-01-04 15:28:07 +00:00
Josh Hunt 51f5334748 Chore: Update typescript to 4.9.3 (#60538)
* Update typescript to 4.9.3

* Update from typescript changes
2022-12-21 10:25:29 +00:00
Josh Hunt ecf83a6df9 Search: Fix report search usage from throwing in console (#60382) 2022-12-15 13:58:20 +00:00
Josh Hunt 258696409d Dashboards: Fix 'Make Editable' button not working in Dashboard Settings (#60306)
* Dashboards: Fix 'Make Editable' button not working in Dashboard Settings

* comment
2022-12-14 14:24:09 +00:00
Josh Hunt af719888d6 Chore: Remove any type assertion in PanelQueryRunner (#60096) 2022-12-14 14:07:22 +00:00
Josh Hunt 495fceeeef Dashboards: Wrap MakeEditable in the new Page layout (#60311)
Wrap MakeEditable in the new Page layout
2022-12-14 13:32:29 +00:00
Josh Hunt 9a41277ecd Dashboards: Show error when data source is missing (#60099)
Return caught exceptions to panel as error state
2022-12-14 12:37:31 +00:00
Josh Hunt 45d1cfa172 Datasources Fix formatting for SQL data sources permissions disclaimer (#60155)
Chore: Fix formatting for sql datasources permissions disclaimer
2022-12-12 14:56:30 +00:00
Josh Hunt 6280780e0c TimeRangePicker: Fix recent ranges not showing all items (#59836)
* Fix not all recently used time ranges showing

* Refactor time picker history to store simpler json objects

* Don't store duplicate items

* update todo tests:

* Add tests for TimePickerWithHistory

* better fix for focus scope issues in test
2022-12-09 11:28:57 +00:00
Josh Hunt 93eb8cb51d CommandPalette: Add actions for entire Nav tree (#58138)
* wip for exposing full nav tree in command palatte

* Expose whole nav tree in command palette

* give search an icon

* comments

* remove unused index variable

* navigate to parents

* include image icons

* comment
2022-11-30 12:34:25 -05:00
Josh Hunt b2fdf46820 Docs: Minor improvements to Preferences documentation (#59498)
Small improvements to Preferences documentation
2022-11-29 17:21:07 +00:00
37c14bd6bd Internationalization: Preferences documentation (#59203)
* I18n: Preferences documentation

* Update docs/sources/setup-grafana/configure-grafana/_index.md

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>

* Update docs/sources/administration/organization-preferences/index.md

Co-authored-by: Ursula Kallio <ursula.kallio@grafana.com>

* remove api spec

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
Co-authored-by: Ursula Kallio <ursula.kallio@grafana.com>
2022-11-29 14:02:11 +00:00
Josh Hunt b0e886840d Internationalization: Add language preference analytics (#59230)
* Report change languange

* clean defaults.ini

* Add language to rudderstand user identify call

* undo changes not intended
2022-11-28 07:11:55 -05:00
Josh Hunt 2d8910d9de Chore: gitignore storage.json (#59225) 2022-11-23 09:31:40 -05:00
Josh Hunt ba0ac08465 Internationalization: Enable internationalization by default (#59204)
* Enable internationalization feature flag by default

* Change i18n feature to beta

* Set i18n feature flag to stable

* update features
2022-11-23 14:23:26 +00:00
Josh Hunt f180bb46f8 I18n: Translate Dashboard Starred notification (#59138) 2022-11-23 13:12:33 +01:00
Josh Hunt c02f2321c1 I18n: Fix variables not interpolating with pseudo localisation (#59145)
* I18n: Don't pseudolocalise string variables

* clean up
2022-11-23 10:32:20 +00:00
Josh Hunt 460be70261 Internationalization: Change locale preference to language (#58359)
* backend locale -> language

* frontend locale -> language

* sample.ini and tests

* fix few last locale -> language

* fix few last locale -> language
2022-11-22 12:18:34 +00:00
Josh Hunt b1ffe18599 Chore: Fix some as HTMLElement type assertions (#58667) 2022-11-21 13:05:55 +00:00
Josh HuntandAshley Harrison 5978dc138e Nav: Split Admin into three sections for new IA (#58229)
* start to split admin into two sections

* most of new admin nav implemented

* landing pages

* hide admin for non-admins

* update admin redirects if not topnav

* clean up

* updated IA for admin (still WIP)

* move plugin pages into correct admin sections

* fix backend unit test

* move correlations into the correct section

* add translations for admin sections

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2022-11-18 15:11:59 +00:00
Josh Hunt d4e3d47f56 Chore: Disable dashboard-time-zone e2e tests (#58320) 2022-11-07 06:37:47 -05:00
Josh Hunt 9ff2765bb9 Auth: Check for OrgUsersAdd on frontend to display pending invites (#58217) 2022-11-04 11:14:59 +00:00
Josh HuntandAshley Harrison 2de6cd0692 Chore: Stories for Select performance (#57965)
* user essentials mob! 🔱

* user essentials mob! 🔱

lastFile:packages/grafana-ui/src/components/Select/SelectPerf.story.internal.tsx

* user essentials mob! 🔱

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2022-11-01 11:51:53 +00:00
Josh Hunt fd5c147574 Chore: Update footer changelog link to github (#57871) 2022-10-31 07:34:21 -04:00
Josh Hunt e417387bc7 I18n: Add German (#57397) 2022-10-21 11:47:17 +01:00
Josh Hunt fc75076b72 I18n: Show languages in local names (#57367)
* I18n: Show languages in local names

* fixed test
2022-10-21 05:29:03 -04:00
Josh Hunt 8cebaf345d User: Fix externalUserId not being populated (#57341) 2022-10-20 18:12:53 +01:00
Josh Hunt 4b68918b0b I18n: Update crowdin config and codeowners (#57264)
* update config and codeowners for i18n

* update codeowners
2022-10-20 14:59:02 +01:00
Josh HuntandSofia Papagiannaki 2e16d5499e Dashboard: Add dashboard validation warning to save drawer (#55732)
* add api route for validating a dashboard json

* add feature flag for showDashboardValidationWarnings

* tidy up

* comments and messages

* swagger specs

* fix typo

* more swagger

* tests!

* tidy test a little bit

* no more ioutil

* api will return different status code depending on validation error

* clean up

* handle 4xx errors

* remove console.log

* fix backend tests

* tidy up

* Swagger: Exclude alpha endpoints

Co-authored-by: Sofia Papagiannaki <1632407+papagian@users.noreply.github.com>
2022-10-14 09:51:05 -04:00
Josh Hunt 8e512de308 I18n: update contributing docs (#56860)
* update contrib i18n docs

* update contrib i18n docs

* remove lingui references, rearrage plain js usage
2022-10-14 11:55:15 +01:00
Josh Hunt b7d969baf1 I18n: Improve tooling (#56731)
* Delete en-US.json before extracting strings so it's always up to date

* Add 'comment' to message jsons

* Enable Pseudo-locale option only in dev mode

* don't load english messages

* fix package.json

* fix
2022-10-12 07:51:16 -04:00
Josh Hunt 719769ee7c I18n: Add Chinese (Simplified) (#56739)
* Prevent _old.json files from being created

* Add contrib docs for adding new locale

* add chinese (simplified)
2022-10-12 06:12:46 -04:00
Josh Hunt 6969354490 Chore: remove i18n console log (#56691) 2022-10-11 07:22:48 -04:00
d52ab5de2e EchoSrv: Remove $.ajax for loading scripts (#56678)
* user essentials mob! 🔱

lastFile:public/app/core/services/echo/backends/analytics/RudderstackBackend.ts

* user essentials mob! 🔱

lastFile:public/app/core/services/echo/backends/analytics/ApplicationInsightsBackend.ts

* user essentials mob! 🔱

Co-authored-by: Joao Silva <joao.silva@grafana.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2022-10-11 11:11:23 +01:00
Josh Hunt 680dfde90d I18n: Update crowdin config for i18next json files (#56640) 2022-10-10 14:02:25 +01:00
Josh Hunt d405f3a877 GrafanaUI: InputGroup: Fix invalid children borders (#56169)
* GrafanaUI: InputGroup: Fix invalid children borders

* tidy story

* zindex priority stack

* clarify comment

* fix inputgroup children type
2022-10-10 06:43:29 -04:00
Josh Hunt 891f9c00a1 I18n: Add lint rule to enforce correct i18n imports (#56487)
* I18n: Add lint rule to enforce correct i18n imports

* ignore in gui wrapper
2022-10-07 11:46:28 +01:00
Josh Hunt 5361efc225 I18n: Migrate to I18next (#55845)
* Switch from lingui from i18next

* Change lingui messages to i18next messages

* Change lingui messages to i18next messages (grafana-ui)

* Init i18n for tests
2022-10-06 16:34:04 +01:00
Josh Hunt 80065c47ab Chore: Updating swagger spec (#56094) 2022-09-30 09:15:09 -04:00
Josh Hunt 615d86d902 Docs: Clarify contributions for translations (#55574)
* Docs: Clarify contributions for translations

* add comment to messages.po files
2022-09-27 10:21:23 -04:00
Josh HuntandSofia Papagiannaki 00a90d3255 Chore: Regen swagger spec (#55750)
* Chore: Regen swagger spec

* Regenerate swagger after enteprise fix

Co-authored-by: Sofia Papagiannaki <1632407+papagian@users.noreply.github.com>
2022-09-26 12:37:27 -04:00
Josh Hunt 4e65f131d9 Chore: Update betterer results for elasticsearch (#55682) 2022-09-23 09:46:24 -04:00
Josh HuntandChristopher Moyer e3e954cbba Docs: Fix decimals: auto docs for panel edit (#55477)
* Docs: Fix decimals: auto docs for panel edit

* Update docs/sources/panels/configure-standard-options/index.md

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
2022-09-21 12:56:04 +01:00
Josh Hunt 070d44802f Chore: Type Rudderstack and AppInsights window APIs (#55162)
* Chore: Type Rudderstack and AppInsights window APIs

* remove rudder sdk to dev deps
2022-09-20 10:06:31 -04:00
d014a3a09b Echo: Add support for Google Analytics 4 (#55446)
* user essentials mob! 🔱

lastFile:public/app/core/services/echo/backends/analytics/GA4Backend.ts

* user essentials mob! 🔱

* user essentials mob! 🔱

lastFile:public/app/core/services/echo/backends/analytics/GA4Backend.ts

* user essentials mob! 🔱

lastFile:public/app/core/services/echo/backends/analytics/GA4Backend.ts

* user essentials mob! 🔱

lastFile:public/app/app.ts

* user essentials mob! 🔱

Co-authored-by: eledobleefe <laura.fernandez@grafana.com>
Co-authored-by: Leodegario Pasakdal <leodegario.pasakdal@grafana.com>
2022-09-20 03:13:14 -07:00
Josh Hunt 139705611a Chore: Remove remaining IconName type assertions (#54658)
* Chore: Remove remaining IconName type assertions

* fix lints
2022-09-06 09:15:36 +01:00
Josh Hunt 6b197f3fa9 Chore: Use react-highlight-words types (#54627) 2022-09-02 16:36:44 +01:00
Josh Hunt 3cf8e9c72e Chore: Remove grafana-ui IconName type assertions (#54623) 2022-09-02 11:31:16 +01:00
Josh Hunt fd7a30c0a9 Fix: Restore Grafana and Dashboard data source icons (#54580) 2022-09-01 09:46:06 -04:00
Josh Hunt c3633feea8 Chore: Remove Dashboard IconName type assertions (#54573)
* Chore: Remove Dashboard IconName type assertions

* fix lint
2022-09-01 13:26:28 +01:00
Josh Hunt caa0c91b1c Chore: Remove Nav + story IconName type assertions (#54572)
* Chore: Remove some IconName type assertions

* fix actually importing the function

* fix lint

* fix lint
2022-09-01 13:23:41 +01:00
Josh Hunt f15ce633c9 Navigation: Don't round app plugin icon images (#54543)
* Navigation: Don't round app plugin icon images

* round icon
2022-09-01 10:28:50 +01:00
Josh Hunt ebbeed8ad7 I18n: Use locale preference (#53293) 2022-08-26 10:27:14 +01:00
Josh Hunt 2b17e5354a Chore: Remove needless eslint ignore comment from variable utils (#54050) 2022-08-22 16:50:24 +01:00
Josh Hunt 9db9ebce02 Typed variables pt6: Clean up and test variable type guards (take 2) (#54025)
* Add fixture-factories for all variable types

* clean up variable guards

* add tests for isMulti, hasCurrent, and hasOptions variable type guards

* create VariableSupport type to try and work around ts wonkiness
2022-08-22 14:45:40 +01:00
Josh Hunt 44ea98b24f Chore: Ignore type assertions in __mocks__ (#53593) 2022-08-11 14:06:15 +00:00
Josh Hunt 081d6e9d3e Typed variables pt5: Remove generics from getInstanceState (#53018)
* wip

* make diff easier to read

* Update template_srv getVariables to return new TypedVariableModel

* update VariableType to use the type from TypedVariableModel

* tidy things up

* Chore: Use type-accurate mock variables in tests

* Chore: Type VariableState to use TypedVariableModel

* fix typo

* remove type assertion from template_srv.getVariables

* use typescript/no-redeclare for compatibility with ts overloads

* remove generics from getVariable() and overload it to only return undefined based on arguments

* update usages of getVariable()

* Remove generic from getInstanceState

* update usages of getInstanceState

* fix lint
2022-08-10 16:06:49 +01:00
Josh Hunt aee2856907 Fix: correct bold, italics, and code color in Panel tooltips (#53380) 2022-08-08 07:10:42 -04:00
Josh Hunt fbc48d68f1 E2E: Make Cypress recordings higher res + quality (#53342) 2022-08-08 09:54:00 +03:00
Josh Hunt 4b4d546e32 Typed variables pt4: Remove generics from getVariable (#53017)
* wip

* make diff easier to read

* Update template_srv getVariables to return new TypedVariableModel

* update VariableType to use the type from TypedVariableModel

* tidy things up

* Chore: Use type-accurate mock variables in tests

* Chore: Type VariableState to use TypedVariableModel

* fix typo

* remove type assertion from template_srv.getVariables

* use typescript/no-redeclare for compatibility with ts overloads

* remove generics from getVariable() and overload it to only return undefined based on arguments

* update usages of getVariable()

* Fix Interval variable options picker not working
2022-08-05 13:44:52 +01:00
Josh Hunt c7d3fec515 Typed variables pt3: Type VariableState with TypedVariableModel (#53015)
* wip

* make diff easier to read

* Update template_srv getVariables to return new TypedVariableModel

* update VariableType to use the type from TypedVariableModel

* tidy things up

* Chore: Use type-accurate mock variables in tests

* Chore: Type VariableState to use TypedVariableModel

* fix typo

* remove type assertion from template_srv.getVariables

* undo whatever changes i did to swagger spec
2022-08-03 12:38:59 +01:00
Josh Hunt 8f81c4d2ce Chore: reformat swagger specs, again (#53205) 2022-08-03 12:18:52 +01:00
Josh Hunt 805203dba9 Chore: Prettier ignore api-merged & api-spec swagger api specs (#53170)
* Prettier ignore api-merged & api-spec swagger api specs

* add enterprise
2022-08-03 11:41:31 +01:00
Josh Hunt 1a683e53c5 Typed variables pt2: Use type-accurate mock variables in tests (#52987)
* wip

* make diff easier to read

* Update template_srv getVariables to return new TypedVariableModel

* update VariableType to use the type from TypedVariableModel

* tidy things up

* Chore: Use type-accurate mock variables in tests

* make createBaseVariableModel take the variable type
2022-08-02 14:47:41 +01:00
Josh Hunt 4323e12588 I18n: Add X-Crowdin-SourceKey to messages.po files (#53102)
* add X-Crowdin-SourceKey to messages.po files

* remove previous fake translation
2022-08-02 06:54:24 -04:00
Josh Hunt 1cadccf137 Add crowdin config (#53096) 2022-08-02 05:15:37 -04:00
Josh Hunt eaf6aea98f Typed variables pt1: Use discriminated union for variable model (#52981)
* wip

* make diff easier to read

* Update template_srv getVariables to return new TypedVariableModel

* update VariableType to use the type from TypedVariableModel

* tidy things up
2022-08-02 10:15:25 +01:00
Josh Hunt 96564be396 GrafanaUI: Improved ClipboardButton success state (#52665)
* Add new pill-shaped Indicator component

* Use indicator for clipboard button success

* show just check icon during success state

* expose Indicator

* move animation and positioning into Indicator component

* update stories

* update stories
2022-08-01 10:46:29 +01:00
Josh Hunt 583490678b update e2e docs to remove aria-label mentions (#52999) 2022-07-29 16:42:53 +01:00
06d78ea904 Dashboards: Disable variable pickers for snapshots (#52827)
* user essentials mob! 🔱

lastFile:public/app/features/variables/textbox/TextBoxVariablePicker.tsx

* user essentials mob! 🔱

* user essentials mob! 🔱

lastFile:public/app/features/variables/adhoc/picker/AdHocFilter.tsx

* finish up disabling variables in snapshots

* remove accident

* use theme.spacing instead of the v1 shim

Co-authored-by: Joao Silva <joao.silva@grafana.com>
Co-authored-by: Leodegario Pasakdal <leodegario.pasakdal@grafana.com>
2022-07-29 16:29:55 +01:00
Josh Hunt b223c65a6c Chore: remove unnessisary type assertion from GrafanaContext (#52979) 2022-07-29 11:48:52 +01:00
Josh Hunt 972105cc52 I18n: Wrap event-based modals with I18nProvider (#52720) 2022-07-25 08:44:11 -04:00
Josh Hunt 9f81b3dcc6 I18n: Change locale format to IETF language tag (#52596)
* I18n: Change locale format to our agreed format

* fix test

* Build lingui messages files before ci tests
2022-07-22 10:50:00 -04:00
Josh Hunt 1ee21b81d1 GrafanaUI: Improve ClipboardButton story (#52656)
* GrafanaUI: Improve ClipboardButton story

* GrafanaUI: Improve ClipboardButton story
2022-07-22 15:23:08 +01:00
Josh Hunt 62a3f2ed32 Chore: Align on 'internationalization' for feature name (#52585)
* rename internationalization docs

* Move localisation.tsx to internationalization/index.tsx
2022-07-21 06:31:08 -04:00
Josh Hunt cabdfb4811 Chore: Remove any that was introduced in a test (#52203) 2022-07-14 09:35:12 +00:00
Josh Hunt 15d9cf2139 Chore: Set codeowner for betterer results file (#51971)
* Update CODEOWNERS

* Update CODEOWNERS

* Update CODEOWNERS
2022-07-08 09:38:19 -04:00
Josh Hunt 0c88850070 Chore: Sync betterer results (#51963) 2022-07-08 14:19:17 +01:00
Josh Hunt ffd9d9d0c5 Chore: Refactor logs_model to clean up types (#51201)
* Chore: Minor refector of logs_model to clean up types

* undo a change i didn't commit to

* use isObservable instead

* fix type
2022-07-06 08:49:45 +02:00
Josh Hunt 78ee9ffa37 Chore: Remove CI stats that are also reported by betterer (#51318)
* Chore: Remove CI stats that are reported by betterer

* update betterer results
2022-06-23 14:20:45 +02:00
Josh Hunt 7cee620fbb Chore: Use @types/webpack-env to type require.context (#51196) 2022-06-22 12:38:47 +01:00
Josh Hunt 8fa951df04 Type window.nonce (#51200) 2022-06-22 09:28:05 +01:00
Josh Hunt 26f6b91fd9 Chore: Type GA and Rudderstack analytics config (#51197)
* Chore: Type GA and Rudderstack analytics config

* rely on implicit unknown
2022-06-22 09:27:55 +01:00
Josh Hunt 24bdda72fb Barchart: Fix warning not showing (#51190) 2022-06-21 17:45:37 -05:00
Josh Hunt 357b859fa7 Remove any generics from configureMockStore in tests (#51179) 2022-06-21 17:48:52 +01:00
Josh Hunt 98132fc7dc Remove as any from requireActual usage (#51182) 2022-06-21 17:48:38 +01:00
Josh Hunt bc7ed4baab Chore: use jest.mocked in favor of type assertions/any (#51156)
* use jest.mocked instead of yucky any

* remove more anys in favor of jest.mocked

* fix stray unused variables
2022-06-21 13:47:33 +01:00
Josh Hunt dcf786f3a9 I18n: Add default locale server config option (#51035)
* I18n: Set default locale in server config and expose in grafanaBootData

* put default locale behind feature flag

* update tests now that default locale is behind feature flag

* little bit of PR feedback

* update sample.ini
2022-06-21 11:12:49 +01:00