Commit Graph

145 Commits

Author SHA1 Message Date
Marcus Andersson
f1529997f2
Explore: Make toolbar action extendable by plugins (#65524)
* Cleaned up solution and starting to make it work properly.

* will disable add button if no queries available.

* Changed so 'add to dashboard' is registered as an extension in explore.

* moved utility function to utils

* hides button if insufficent permissions.

* Fixed ts issue.

* cleaned up the code and change to using the 'getPluginLinkExtensions'

* Added values to explore context.

* truncating title in menu.

* added tests to verify explore extension point.

* fixed failing tests in explore.

* made excludeModal optional.

* removed temporary fix to force old button.

* reverted generated files.

* fixed according to feedback.

* Update public/app/features/explore/extensions/ToolbarExtensionPoint.test.tsx

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>

* Update public/app/features/explore/extensions/ToolbarExtensionPoint.test.tsx

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>

* added tests suggested in reviews.

* fixed failing tests after sync with main.

* replaced exploreId type with stirng.

* cleaned up code a bit more.

---------

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
2023-06-28 15:42:41 +02:00
Ryan McKinley
698b07518a
Dashboards: Support an auto refresh interval that is based on the query range (#70479) 2023-06-26 19:46:23 +03:00
Zoltán Bedi
6fbc0b9b9c
Chore: Add tracking for dashboard load (#70057)
* Chore: Add tracking for dashboard load

* Address review comments
2023-06-23 14:14:06 +02:00
Ashley Harrison
13e3308959
Chore: some type fixes (#69860)
* some type fixes

* restore empty object

* undo 1 fix for now

* commit betterer update

* explicitly type slug and uid as string | undefined
2023-06-20 17:13:49 +01:00
Levente Balogh
7b2bd48677
Plugin Extensions: Custom limits for extensions-per-plugin (#69430)
* feat(plugins): remove global limit on extensions per placement

* feat: add a way to limit extension per plugin at the getter

* test(plugins): fix failing getPluginExtensions test

* refactor(panelmenu): put back limit of 2 extensions per plugin

* tests: add a test for checking all extensions are returned by default

---------

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
2023-06-02 11:09:25 +02:00
Haris Rozajac
3fd04edd81
Dashboards: Remove Explore option from panel menu when panel's datasource uid is "-- Dashboard --" (#69017)
* Remove Explore option from panel menu when panel's datasource uid is "-- Dashboard --"

* Use the constant SHARED_DASHBOARD_QUERY
2023-05-26 08:01:54 -06:00
Ryan McKinley
e7da2a179e
Schema: Add schema for role+access policies (#68047) 2023-05-24 10:31:57 -07:00
Alexa V
1016c81744
Dashboard: Fix panel description event triggering every time panel is rendered (#68791) 2023-05-22 15:58:42 +02:00
Marcus Andersson
58aa098ed7
Extensions: Moved the "Extensions" menu item so the "More..." is displayed last in the panel menu. (#68372)
Moved the extensions before the more option.
2023-05-15 09:01:05 +02:00
Ben Sully
e7a67e749c
Plugins: Pass panel data in plugin extension context (#67509)
* Plugins: Pass panel data in plugin extension context

Similar to https://github.com/grafana/grafana/pull/65861, this passes
the panel's data as part of the context object used when configuring
extension links.

This is useful if the plugin wants to conditionally show the link
depending on the presence or absence of certain features in the
data. For example in the ML plugin we only want to offer Outlier
Detection links for a query if the query returned more than 3 series.

* Update getPanelMenu extension test to include data object
2023-05-12 14:12:00 +02:00
Marcus Andersson
5605d2f4a5
PluginExtensions: Expose scopedVars via the context to plugins that extends the dashboard panel menu (#67917)
* Exposes the scoped vars to UI extensions via context.

* reverted the interpolation when running a query via the query runner.

* adding scoped vars to test.#
2023-05-11 12:58:19 +02:00
Alexa V
b4a7427f31
[Chore] Refactor Panel Menu Rudderstack events and add missing instrumentation (#66850) 2023-04-28 12:19:39 +02:00
Ryan McKinley
8352e716dd
ArrayDataFrame: Convert to a simple utility function rather than dynamically loaded values (#67427) 2023-04-27 12:38:19 -07:00
kay delaney
2dc5872bd6
New Dashboard: Fix "build a dashboard" when empty dash page feature is enabled (#66816)
* New Dashboard: Fix "build a dashboard" when used with empty dash page feature

Closes #66659
2023-04-27 11:11:19 +01:00
Juan Cabanas
47aa8c7654
PublicDashboards: HoverWidget in panel fix (#66685)
Hover widget modified for public dashboards.
2023-04-26 09:06:38 -03:00
Alexa V
2a67b8ad32
Panel Header Fix: Implement new Panel Header on Angular Panels (#66826)
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2023-04-25 18:16:46 +02:00
Polina Boneva
fe23c76250
Dashboard: New panel in a dashboard is not deleted after "Discard"-ing changes in Panel Edit (#66476)
* add isNew notPersistedProperty to PanelModel

* if panel is newly created and user "Discard"s it, the panel is removed entirely

* add Todo's for when we remove the emptyDashboardPage FF

* add isNew to new panel after file dropping on dashboard page

* handle the "Apply" case

* CSV file dropping is not relevant to a new panel bc it doesnt open edit page
2023-04-25 17:18:58 +03:00
Marcus Andersson
c8ecd0679b
PluginExtensions: Adding full targets to the panel menu context (#65861)
* Making sure we add the whole query to the dashboard panel context.

* Adding some more tests.

* Synced with main.
2023-04-04 07:17:10 +02:00
Levente Balogh
1380fa54d6
UI Extensions: Rename placement to extensionPointId (#65841)
* UI Extensions: Rename `placement` to `extensionPointId`

* Fix tests.

* Fix conflicts and review notes

* Remove `placement` from some other places
2023-04-03 18:59:54 +03:00
Marcus Andersson
8b738d770c
PluginExtensions: Added onClick to link as a replacement for the command type (#65837)
* Added onClick to the link and made path optional.

* Added type to the import.

* revert(plugin-extensions): put back isPromise utility function

* Minor update to the isPromise function.

* added onClick in the panel menu item.

---------

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
2023-04-03 17:27:55 +02:00
Jack Westbrook
30b5b8d984
Plugins: Hide extensions menu when editing a panel (#65840)
Plugins: Hide extensions menu when editing a panel
2023-04-03 18:00:21 +03:00
Levente Balogh
34f3878d26
UI extensions: Refactor the registry and remove the "command" type (#65327)
* Wip

* Wip

* Wip

* Wip

* Wip
2023-04-03 10:42:15 +02:00
Alexa V
c03bf7d8ad
New Panel Header: Fix when clicking submenu item the parent menu item onClick get's triggered (#65691) 2023-03-31 16:35:34 +02:00
Polina Boneva
b9fb23502c
Dashboard: Add new visualization/row/library panel/pasted panel is now a dropdown menu (#65361)
* Empty Dashboard state has its own CTA items and its own separate box to choose a library panel to create

* show empty dashboard screen if no panels

* add feature flag for empty dashboard redesign

* only show empty dashboard redesign if FF

* add-new-panel button is a dropdown with options: visualization, row, import, paste

* fix onPasteCopiedPanel types

* do not create new panel to new dashboard if emptyDashboardPage FF true

* ToolbarButton does not allow rendering of Dropdown's overlay - switch to Button

* remove panel-add icon's default size of xl

* separate components for add new panel from dash navigation bar
2023-03-30 13:50:35 +03:00
Polina Boneva
221c5efedc
Dashboard: Empty/No Panels dashboard with a new design (#65161)
* Empty Dashboard state has its own CTA items and its own separate box to choose a library panel to create

* show empty dashboard screen if no panels

* start page for empty dashboard

* add feature flag for empty dashboard redesign

* only show empty dashboard redesign if FF
2023-03-28 12:42:23 +03:00
Ryan McKinley
a0d440fb03
Dashboards: Show copy menu item to editors (regardless of dashboard edit state) (#64826) 2023-03-21 07:15:45 -07:00
Jack Westbrook
595518ec12
Plugin Extensions: Move PanelMenu links into extensions submenu (#64599)
* feat(pluginextensions): move panel menu links into an extensions submenu

* refactor(pluginextensions): move extensions submenu above more... submenu

* test(panelmenu): fix failing tests after moving extensions out of more

* fix: fix rebase issues

---------

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
2023-03-17 11:09:23 +01:00
Alexa V
fef0ee913c
Panel Header: Add CancelQuery option to panel header (#64796)
Co-authored-by: Ivan Ortega <ivanortegaalba@gmail.com>
2023-03-16 13:56:58 +01:00
Levente Balogh
79152969f3
Extensions: Expose an enum for available placements (#64586)
* feat: expose an enum type for extension placements

* fix: export the enum properly
2023-03-10 13:55:38 +01:00
Ivan Ortega Alba
f1a17d54cd
PanelHeader: Add analytics (#64533) 2023-03-10 12:56:41 +01:00
Marcus Andersson
b63c56903d
Plugins: Extend panel menu with commands from plugins (#63802)
* feat(plugins): introduce dashboard panel menu placement for adding menu items

* test: add test for getPanelMenu()

* added an unique identifier for each extension.

* added context to getPluginExtensions.

* wip

* Wip

* wiwip

* Wip

* feat: WWWIIIIPPPP 🧨

* Wip

* Renamed some of the types to align a bit better.

* added limit to how many extensions a plugin can register per placement.

* decreased number of items to 2

* will trim the lenght of titles to max 25 chars.

* wrapping configure function with error handling.

* added error handling for all scenarios.

* moved extension menu items to the bottom of the more sub menu.

* added tests for configuring the title.

* minor refactorings.

* changed so you need to specify the full path in package.json.

* wip

* removed unused type.

* big refactor to make things simpler and to centralize all configure error/validation handling.

* added missing import.

* fixed failing tests.

* fixed tests.

* revert(extensions): remove static extensions config in favour of registering via AppPlugin APIs

* removed the compose that didn't work for some reason.

* added tests just to verify that validation and error handling is tied together in configuration function.

* adding some more values to the context.

* draft validation.

* added missing tests for getPanelMenu.

* added more tests.

* refactor(extensions): move logic for validating extension link config to function

* Fixed ts errors.

* Started to add structure for supporting commands.

* fixed tests.

* adding commands to the registry

* tests: group test cases in describe blocks

* tests: add a little bit more refactoring to the tests

* tests: add a test case for checking correct placements

* feat: first version of the command handler

* feat: register panel menu items with commands

* refactor: make the 'configure' function not optional on `PluginExtensionRegistryItem`

* Wip

* Wip

* Wip

* added test to verify the default configure function.

* added some more tests to verify that commands have the proper error handling for its configure function.

* tests: fix TS errors in tests

* tests: add auxiliary functions

* refactor: small refactoring in tests

* refactor: refactoring tests for registryFactory

* refactor: refactoring tests for registryFactory

* refactor: refactoring tests for registryFactory

* refactor: refactoring tests for registryFactory

* refactor: refactoring tests for registryFactory

* refactor: refactoring tests for registryFactory

* refactor: refactoring tests for registryFactory

* refactor: refactoring tests for registryFactory

* draft of wrapping command handler with error handling.

* refactor: refactoring tests for registryFactory

* added test for edge case.

* replaced the registry item with a configure function.

* renamed the configure function type.

* refactoring of the registryfactory.

* added tests for handler error handling.

* fixed issue with assert function.

* added comment about the limited type.

* Update public/app/features/plugins/extensions/errorHandling.test.ts

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>

* Update public/app/features/plugins/extensions/errorHandling.test.ts

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>

* Update public/app/features/plugins/extensions/errorHandling.test.ts

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>

* added missing tests.

---------

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
2023-03-08 14:23:29 +01:00
Jack Westbrook
f82c57f281
Fix: Prevent freezing dashboard time range (#64212)
fix(extensions): create new object to prevent freezing dashboard time range
2023-03-06 13:43:03 +01:00
Jack Westbrook
8c8f584b41
Plugins: Extend panel menu with links from plugins (#63089)
* feat(plugins): introduce dashboard panel menu placement for adding menu items

* test: add test for getPanelMenu()

* added an unique identifier for each extension.

* added context to getPluginExtensions.

* wip

* Wip

* wiwip

* Wip

* feat: WWWIIIIPPPP 🧨

* Wip

* Renamed some of the types to align a bit better.

* added limit to how many extensions a plugin can register per placement.

* decreased number of items to 2

* will trim the lenght of titles to max 25 chars.

* wrapping configure function with error handling.

* added error handling for all scenarios.

* moved extension menu items to the bottom of the more sub menu.

* added tests for configuring the title.

* minor refactorings.

* changed so you need to specify the full path in package.json.

* wip

* removed unused type.

* big refactor to make things simpler and to centralize all configure error/validation handling.

* added missing import.

* fixed failing tests.

* fixed tests.

* revert(extensions): remove static extensions config in favour of registering via AppPlugin APIs

* removed the compose that didn't work for some reason.

* added tests just to verify that validation and error handling is tied together in configuration function.

* adding some more values to the context.

* draft validation.

* added missing tests for getPanelMenu.

* added more tests.

* refactor(extensions): move logic for validating extension link config to function

* Fixed ts errors.

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

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>

* Update packages/grafana-runtime/src/services/pluginExtensions/extensions.test.ts

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>

* refactor(extensions): rename limiter -> pluginPlacementCount

* refactor(getpanelmenu): remove redundant continue statement

---------

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
2023-03-02 15:42:00 +01: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
TaitChan
a1d33c63c8
Internationalization: Translate page headers and Search dashboard actions (#60727)
* Fix: PageHeader & PageHeaderTabs & NavBarItem & DashboardActions & PanelMenu is displayed in default_language (#60719)

* I18N: update strings (#60719)

Co-authored-by: TaitChan <1441645821@qq.coom>
2023-01-13 14:33:42 +00:00
Polina Boneva
84eb275c8d
PanelChrome: Menu is wrapped in a render prop for full outside control (#60537)
* setup menu as a render prop sent down from PanelStateWrapper to PanelChrome

* let the Dropdown take care of opening the menu in PanelChrome

* menu and leftItems are on the right side of the header together

* add storybook examples with menu

* menu does not need to be a callback because it's opened in a Dropdown anyway

* pass down to getPanelMenu whether or not data is streaming atm

* stop loading data as well as streaming from menu

* override menu's style where needed

* reduce snapshot matching in tests
2023-01-12 11:10:09 +02:00
Dominik Prokop
c3c4a57c79
grafana/data: Move getPanelOptionsWithDefaults from core (#60813)
* grafana/data: Move getPanelOptionsWithDefaults from core

* Add internal comments
2022-12-29 05:48:22 -08:00
Dominik Prokop
78d7f11b8e
grafana/data: Move data frames processing functions from core (#60795) 2022-12-28 07:59:45 -08:00
sam boyer
f86abf096d
schema: Use generated dashboard model in frontend (#55769)
Co-authored-by: Ivan Ortega <ivanortegaalba@gmail.com>
Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: polinaboneva <polina.boneva@grafana.com>
2022-12-20 15:04:14 +01:00
renovate[bot]
e84a01e870
Update jest monorepo to v29 (#58261)
* Update jest monorepo to v29

* update snapshots + wrap test in act

* fix linting errors: jest.mocked now defaults to deep mocking

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2022-11-24 14:00:41 +00:00
Leo
27b6b3b3bd
Folder: Replace folderId with folderUid (#58393)
* support folderuid in FolderPicker

* support folderuid in unified alerting

* support folderuid when returning to view mode after editing a panel

* support folderuid when preselecting the folderpicker in dashboard general settings

* support folderuid when saving dashboard

* support folderuid when pre-selecting folderpicker in dashboard form

* support folderuid in routes when loading a dashboard

* support folderuid when saving dashboard json

* support folderuid when validating new dashboard name

* support folderuid when moving dashboard to another folder

* support folderuid on dashboard action buttons

* support folderuid when creating a new dashboard on an empty folder

* support folderuid when showing library panel modal

* support folderuid when saving library panel

* support folderuid when importing dashboard

* fixed broken tests

* use folderuid when importing dashboards

* remove commented line

* fix typo when comparing uid values
2022-11-17 09:22:57 +01:00
Laura Fernández
f2cb248d93
Internationalization: Translate 'Hide / show legend' of PanelHeaderMenuItem (#58800) 2022-11-16 13:06:04 +01:00
Torkel Ödegaard
d7f9093ccd
LibrayPanels: Fix unlinking libray panel (#57825) 2022-11-02 11:38:48 +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
juanicabanas
c7419de2e5
PublicDashboard: Add RTK Query with loading and error state. Add MSW dependency for testing. (#55518)
PublicDashboard: Add RTK Query with loading and error state. Add MSW dependency for testing.
2022-09-22 09:35:04 -03:00
Ryan McKinley
0c4d181d1e
SupportSnapshots: Rename to "Get help" (#55206) 2022-09-16 08:51:14 -07:00
juanicabanas
1e06b0170b
PublicDashboards: UI improvements (#55130)
* Public dashboard modal UI modifications
2022-09-14 14:35:46 -03:00
Torkel Ödegaard
ab045184e4
PanelMenu: Remove hide legend action as it was showing on all panel types (#54876)
* PanelMenu: Remove hide legend action

* Fix test

* Updated
2022-09-13 10:19:59 +02:00
Ryan McKinley
4125dd57ee
Panels: Add panel debug support helper (#54678) 2022-09-09 14:35:52 -07:00
Alyssa Bull
6ec9a7682d
Various Panels: Add ability to toggle legend with keyboard shortcut (#52241) 2022-07-27 13:39:55 -06:00