Commit Graph
100 Commits
Author SHA1 Message Date
155e38edfe Plugin Extensions: Add prop types to component extensions (#84295)
* feat: make it possible to specify prop types for component extensions

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

* chore: adapted test case

* chore: update betterer

* feat: update types for configureComponentExtension()

* fix: remove type specifics for `configureExtensionComponent`

* Update betterer config

---------

Co-authored-by: Darren Janeczek <38694490+darrenjaneczek@users.noreply.github.com>
Co-authored-by: Darren Janeczek <darren.janeczek@grafana.com>
2024-03-18 15:14:51 +02:00
Levente Balogh fdd2c1c59e Plugins Catalog: Fix plugin details page initial flickering (#83896)
fix: wait for the local and remote fetches to fulfill
2024-03-05 14:23:29 +01:00
Levente BaloghandIsabel Matwawana 1cec975a66 Docs: Update "What's new in G10?" (#83467)
* docs: add info about the react-router migration into v10 what's new

* fix: linting issue

* Update docs/sources/whatsnew/whats-new-in-v10-0.md

Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>

* docs: update linting

---------

Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
2024-03-01 11:13:16 +01:00
Levente Balogh f394e8333e Chore: remove the dataConnectionsConsole feature toggle (#83661)
chore: remove `dataConnectionsConsole` feature toggle
2024-02-29 10:29:41 +01:00
Levente Balogh ebdffe21e6 Plugins: Suppress 403 preloading errors (#79154)
* fix: stop displaying error alerts when plugins cannot be loaded

* fix: only hide the error if it is a 403 error

* fix: revert unnecessary object spreading
2023-12-07 11:47:12 +01:00
Levente Balogh 503176603f Plugins: Support markdown in custom plugin deprecation messages (#78251)
* feat: support markdown in custom deprecation messages

* fix: use a div wrapper for rendered markdown

* feat: update the default deprecation message
2023-11-22 14:20:58 +02:00
Levente Balogh 12c245720c Plugins: Share plugin context with the component-type extensions (#78111)
feat: wrap component type extension with plugin context
2023-11-20 14:43:11 +02:00
Levente Balogh ea12eecac5 Plugins: Keep working when there is no internet access (#77978)
* fix: make connections and plugins-catalog work when GCOM is not available

* fix: remove unused import
2023-11-14 09:49:14 +02:00
Levente Balogh ea2b493937 Plugins: Share the plugin context with apps and ui-extensions (#77933)
* feat: share the plugin context with app plugins

* feat: share the plugin context ui-extension modals

* feat: pre-fetch the app plugin settings

* feat: expose more utility hooks for plugins

* fix: use `location.pathname` directly

Previously it was referenced by `pluginRoot.props.path`, which stops
working in case the `pluginRoot` element is wrapped with anything.
2023-11-14 08:35:40 +01:00
Levente Balogh 0081d6baf3 UI Extensions: Allow React.memo() objects as component extensions (#76098)
fix: support the sandbox with component ui extensions
2023-10-06 10:00:09 +02:00
Levente BaloghandJack Westbrook e7c1e5e4c9 Plugins: Display custom deprecation message if available (#75942)
* feat: display the deprecation context for a plugin if it is available

* Update public/app/features/plugins/admin/components/PluginDetailsDeprecatedWarning.tsx

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>

* feat: only extend the basic message with custom context

---------

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
2023-10-04 14:30:03 +02:00
Levente Balogh 163b0d182b Connections: Make the "Add new Connection" page work without internet access (#75272)
* fix: make the "Add new Connection" page work without internet access

* feat: update error message

* fix: update the API url in the error log
2023-09-27 15:04:23 +02:00
Levente Balogh 99be6fb747 Connections: Display the type of the datasource (#74808)
fix: display the name of the datasource plugin
2023-09-13 13:29:11 +02:00
Levente BaloghandMarcus Andersson 2fac3bd41e Plugins: Show deprecated plugins (#74598)
* feat: add a `isDeprecated` field to `CatalogPlugin`

* tests: update the tests for merging local & remote

* feat: display a deprecated badge in the plugins list

* feat: show a deprecated warning if the plugin is deprecated

* Fix linting issues

* Review notes

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>

* refactor: remove `isDeprecated` from the details (it's already in the main CatalogPlugin object)

* refactor: use an enum for remote statuses

---------

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
2023-09-12 12:49:10 +02:00
Levente Balogh 9c83dd43d9 Plugins: Group tests (#74667)
refactor: group plugin-details page tests together
2023-09-12 08:10:18 +02:00
Levente Balogh 324b33146a Datasources: Pass down the edit-form errors (#69830)
feat: pass the error to the event handler
2023-07-13 11:31:02 +02:00
Levente BaloghandJack Westbrook 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
Levente Balogh d25cea90b0 Datasources: Make the datasources config extendable by plugins (#68064)
* feat: add a new UI extension type: component

* fix: remove reference to not existing type

* chore: update betterer results

* review: use a single type notation in import

* review: stop exporting `PluginExtensionBase`

* refactor: make extension config types more explicit

By using some repetition now these types are much easier to oversee.

* feat: add a new extension point to the datasources config

* fix: export tcontext type from grafana-data

* chore: update betterer results

* chore: fix tests

* feat: extend the context shared with extensions

* feat: stop omitting jsonData props & update context type

* tests: update tests
2023-06-02 11:01:36 +02:00
Levente Balogh a91033c025 Plugins: Add a new UI Extension type (#68600)
* feat: add a new UI extension type: component

* tests: add tests for checking if it is a react component

* fix: remove reference to not existing type

* chore: update betterer results

* review: remove unnecessary override function for components

* review: use a single type notation in import

* review: stop exporting `PluginExtensionBase`

* refactor: make extension config types more explicit

By using some repetition now these types are much easier to oversee.
2023-05-31 09:26:37 +02:00
Levente Balogh dce01441fc EchoSrv: Capture early events (#67977)
* feat: catch any events that were reported before the EchoSrv got initialised

* fix: add events to the new echo service

* chore: update comment

* refactor: use `instanceof` to check if it is a FakeEchoSrv
2023-05-30 10:15:47 +02:00
Levente BaloghandLeon Sorokin fa6afc7ea4 ZoomPlugin: Remove the timeRange prop (#69148)
* fix: remove a breaking change

---------

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2023-05-26 11:52:09 -05:00
Levente Balogh 6a995d526a Datasources: Extend optional reporting (#69061)
* feat: add default properties to the `reportInteraction()`

* chore: add more tracking events to the ds-config page

* refactor: adding the `path` to the `meta` instaed
2023-05-26 10:22:07 +02:00
Levente Balogh 21459c7c97 Connections: Show core datasource plugins as well (#67815)
fix: add a new hook & selector that can show core plugins by default
2023-05-05 09:38:18 +02:00
Levente Balogh 61e3bbb858 React Router: start migrating to v6 (#66921)
Chore: add the react-router-compat package
2023-04-27 07:18:38 +02:00
Levente Balogh 652fd8889e Chore: Remove accidental console.log statements (#66725)
chore: remove accidental console.log statements
2023-04-18 09:59:11 +02:00
Levente Balogh c22c31ed13 Plugins: Fix plugin catalog filtering (#66663)
* fix: make the filters work together

* tests: add more tests
2023-04-18 09:15:35 +03:00
086d8b7363 Migration Docs: Restructure plugin migration docs (#64900)
* initial restructuring

* add weights for ordering

* fix links

* remove aliases, add script

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
Co-authored-by: David Harris <david.harris@grafana.com>

* make pretty

* use correct link for angular to react guide

* refactor: move the migration guide to /Developers

* Revert "refactor: move the migration guide to /Developers"

This reverts commit 8f31af8dfd.

* fix: only redirect if the URL-hash has a valid redirect

* fix: use a rel-ref for the Angular-React migration guide link

* fix: update the hash redirects

---------

Co-authored-by: David Harris <david.harris@grafana.com>
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2023-04-17 11:43:01 +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
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
Levente Balogh 788e4a7f19 Extensions: Simplify the configure() function (#64958)
refactor: stop passing the extension to the `configure()` function
2023-03-20 10:41:15 +01:00
Levente Balogh 1c6357637d FE Style Guide: Update component definition (#64869)
* chore: update our FE styleguide related to React.FC

* fix: typo
2023-03-16 09:57:29 +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
Levente Balogh 36b1104949 EventBus: Expose from app.ts (#64137)
refactor: expose the event bus from the app.ts
2023-03-09 11:57:20 +01:00
Levente Balogh a186f036dd Chore: Assign ownership to the Connections feature (#64427)
* chore: assign the plugins platform team as the owner for the data-connections feature

* chore: remove the toggle from the list of unassigned features
2023-03-08 11:23:20 -05:00
Levente Balogh d44dc0f100 Plugins: Allow command extensions to open modals (#64029)
feat: make it possible to open modals from commands
2023-03-08 15:44:48 +01:00
Levente Balogh fc6a4eee61 Datasources: Add optional tracking for datasources list viewed (#62949)
chore: add optional tracking for datasources list viewed
2023-02-06 14:57:55 +01:00
Levente Balogh e3512ddd7e Datasources: Fix tracking event name (#62940)
fix: fix typo in event name
2023-02-06 12:15:44 +01:00
Levente Balogh f815c690d7 Connections: Fix redirection when creating new DS (#62938)
fix: redirect to connections when creating a new DS from the catalog
2023-02-06 11:24:04 +01:00
Levente Balogh b32c1022c5 Datasources: Add more optional UI tracking (#62785)
* chore: add more optional UI tracking for datasources

* tests: fix the tests by wrapping them in a router
2023-02-03 09:47:42 +01:00
Levente Balogh 48e0ab2142 Plugins: Case-sensitive routes for standalone pages (#62779)
* feat: extend the RouteDescription witha `sensitive` property

* feat: use case-sensitive routes for custom plugin standalone pages

* fix: hcheck for `/a/` instead of `/a`
2023-02-03 09:01:34 +01:00
Levente Balogh cf650c9349 Connections: Fix route-guards (#62771)
* fix: use case-sensitive routes for Connections

The reason to do this is to have the backend route-guards work properly.
(The backend route guards are case-sensitive, thus if the FE would serve
the case-insensitive version, then the backend route guards could be bypassed.)

* tests: update the tests
2023-02-03 09:00:30 +01:00
Levente Balogh de97ac7128 Datasources: Rename a UI tracking event property (#62788)
refactor: rename the the `editLink` property to `path`
2023-02-03 09:00:04 +01:00
Levente Balogh f985f02584 Plugins: Track plugin install and uninstall events (#62300)
* chore: track plugin install and uninstall events

* chore: pass the type of the plugin to the tracking as well
2023-02-01 10:58:25 +01:00
Levente Balogh 9b2abe7613 Datasources: Extend properties for the datasource-test tracking event (#62292)
chore: extend properties for the test datasource tracking event
2023-01-30 08:29:13 +01:00
Levente Balogh 9453bec819 FileDropzone: Revert introducing a new prop (#62324) 2023-01-27 16:40:54 +01:00
Levente Balogh 83ff974b86 Datasources: Add the props for the "add datasource" event (#62227)
chore: pass editLink to the add datasource user event
2023-01-27 10:47:18 +01:00
Levente Balogh 995e2715ad Navigation: Fix finding the active nav item for plugins (#62123)
fix: look for the active page under children first
2023-01-26 14:10:09 +00:00
Levente Balogh cc502bbfbd Connections: update the style of the cards (#61989) 2023-01-24 16:22:46 +01:00
Levente Balogh 4def287e62 Connections: Show the Dashboards tab under DataSource settings (#61841)
* fix: use the correct URL for editing datasource dashboards

* feat: show the Datasource/Dashboards page under Connections as well

* refactor: remove unnecessary `useNavModel()` utility

* feat: add a utility for creating the nav-model for DS settings tabs

* refactor: use nav-model crating utility in Edit Datasource
2023-01-23 13:25:42 +01:00
Levente Balogh 9d4e940097 Connections: Don't use gridSize directly in styling (#61684)
refactor: don't use gridSize directly
2023-01-20 09:01:51 +01:00
Levente Balogh 4ef82dc73f Connections: Show a "No access" modal if the user has no permissions (#61397)
* feat: add a new modal for displaying no-access info

* feat(CardGrid): add an onClick handler for items

* feat: open a no-access modal when clicking on a connection in the catlog

* feat: update permissions

Open a "No access" modal when the user clicks a connection type but has no permissions creating a datasource out of it

* test: add tests for opening the No Access modal

* test: fix the user permissions in tests

* Wip

* Revert "Wip"

This reverts commit 7f080c7f77.
2023-01-18 15:34:23 +01:00
Levente Balogh 29119a7d08 UI/Alert: Infer the role property based on the severity (#61242)
* feat(UI/Alert): add two new optional properties: 'ariaLabel' and 'role'

* docs(UI/Alert): add some docs to the props

* feat: infer the role based on the severity

* fix: stop overriding props

* fix: fix a test depending on the wrong alert role
2023-01-18 10:16:41 +01:00
Levente Balogh b8aaf85fdc Levitate: Only run against the main branch (#61401)
chore: only run Levitate against the main branch
2023-01-13 09:43:09 +01:00
Levente Balogh 8b290bba55 Connections: Update redirect alert message (#61152)
* fix(Alert): don't add padding to content when there is no title

* Feat(Connections): update the style and wording of the redirect alert

* fix(UI/Alert): more resilient check for has title
2023-01-11 11:41:19 +01:00
Levente Balogh 6b2394eff1 Connections: Make "Connect data" a section title (#61144)
* Wip

* Fix: change tests to cater for the new scenario

* feat(Connections): redirect to "Your connections / Datasources" if cannot admin plugins
2023-01-11 11:40:21 +01:00
Levente Balogh fc0e3d6c14 Connections: use the "adjust-circle" icon as a logo (#61046)
* feat: add a new icon called 'adjust-circle'

* feat(Connetions): use the `adjust-circle` logo
2023-01-06 07:31:49 +01:00
Levente Balogh 689f30623a Levitate: Fix typo in CI workflow scripts (#60438)
Fix: Typo in a Levitate CI script
2022-12-16 05:21:46 -05:00
Levente BaloghandJack Westbrook 778fb07464 Plugins: Make the Plugin Details page reusable (#58741)
* refactor(PluginDetails): use react-router hooks instead of props

* Wip

* refactor: remove unnecessary constant

* feat: use the original plugin details page under connections

* chore: use better wording in the not-found warning

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>

* chore: use the renderer utility everywhere in the test

* chore: don't show a title while loading a plugin

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
2022-11-29 13:45:03 +01:00
Levente Balogh c093a471e6 AppRootPage: Fix passing the queryParams (#58912)
* fix(AppRootPage): push the query params properly

* refactor: remove unnecessary changes in AppRootPage

* refactor(AppRootPage): use existing utility function
2022-11-17 10:09:06 -05:00
Levente Balogh 4ee83a5f2b AppRootPage: Render app plugins without pages (#58776)
fix: render app plugins that don't have a page in includes
2022-11-16 11:49:34 +01:00
Levente Balogh 181640b080 Connections: Support standalone plugin pages (#57772)
* feat(Connections): create sub-pages wrapped by `<Page>`

* feat(Connections): rename the Connections page and update routes

* feat(Connections): use new url for editing datasources

* refactor(Connections): remove unused tab components

* feat(Connections): update routes and nav titles

* tests: fix tests for Connections

* tests: fix typo in backend tests
2022-11-10 11:14:23 +01:00
Levente Balogh bfd14709c9 Levitate: Only run workflows when the NPM packages change (#58206)
* chore: only run Levitate when our NPM packages have changes

* chore: show the Levitate workflow as passed even if it was skipped
2022-11-08 14:26:31 +01:00
Levente BaloghandMarcus Andersson eb3ee35e1c Frontend Routing: Always render standalone plugin pages using the <AppRootPage> (#57771)
* chore: fix go lint issues

* feat(Routing): route standalone plugin pages to the `AppRoutePage`

* feat(plugin.json): introduce a new field called `isCorePage` for `includes`

* chore: add explanatory comments for types

* refactor(AppRootPage): receive the `pluginId` and `pluginSection` through the props

Now we are able to receive these as props as the pluginId is defined on navLinks
that are registered by plugins.

* chore: update teests for AppRootPage

* fix: remove rebase issue

* tests(applinks): add a test for checking isCorePage plugin page setting

* refactor(applinks): update tests to use FindById() and be more resilient to changes

* fix: Go lint issues

* refactor(routes): use cleaner types when working with plugin nav nodes

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>

* chore: fix linting issues

* t: remove `isCorePage` field from includes

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
2022-11-07 15:19:31 +01:00
376f4b0cc7 Navigation: Add pluginId to standalone plugin page NavLinks (#57769)
* feat(Navigation): add `pluginId` to NavLink and override sibling navlinks with the same URL

* test replacing page from plugin

* chore: fix go lint issues

* fix(NavLink): change `PluginId` to `PluginID`

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

* fix(NavLink): make the `PluginId` -> `PluginID` change everywhere

* chore(navModel.ts): update explanatory comment for `pluginId`

Co-authored-by: Miklós Tolnai <miklos.tolnai@grafana.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2022-11-03 21:19:42 +01:00
Levente BaloghandTorkel Ödegaard 55187ebc48 Navtree: Make it possible to configure standalone plugin pages (#56393)
* feat: make it possible to register standalone app plugin pages under different sections

* refactor(sample.ini): use "admin" instead of "starred" section in the INI

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

* feat(defaults.ini): add app navigation settings to the defaults.ini as well

* fix: use the correct key in the tests

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2022-10-06 12:57:03 +02:00
Levente Balogh ae5e8bc53b refactor: rename Data Connections to Connections (#56353) 2022-10-05 09:56:58 +02:00
Levente Balogh cc6fae18db BackendSrv: Make it possible to pass options to .get|post|patch... methods (#51316)
* feat: make it possible to pass in `options` to `.get()`, `.post()`, etc methods

* feat(Datasource): make it possible to specify `optinos` for `getResource()` and `postResource()`

* fix(BackendSrv): use partial `BackendSrvRequest`

* feat(Datasource): make it possible to set `options` for resource requests

* refactor(BackendSrv): remove internal usage of `.request()`

* fix(GettingStarted): remove unnecessary import

* fix: fix type issues by typing the delete dashboard response

* refactor: use more strict types for `params`

By reusing the type of `BackendSrvRequest.params`

* refactor: make the options paramater partial

* fix: extract `data` from the fetch response

* docs: update the deprecation notice or `BackendSrv.request()`

* refactor: use `.request()` as if it was private

* refactor: remove unnecessary change
2022-10-04 10:40:21 +02:00
Levente Balogh d7556bd189 fix: use type instead of uid to get datasource metadata (#53543) 2022-08-11 07:24:39 +02:00
Levente Balogh 2bf37a0d35 Data Connections: Remove the placeholder for Recorded Queries (#53230)
* feat(Data Connections): remove the Recorded Queries tab

* chore: remove the Recorded Queries from the nav
2022-08-04 06:39:06 +00:00
Levente BaloghandJack Westbrook a1c565dec9 Data Connections: Add data sources (#52436)
* feat: show data-sources under the data-connections page

* refactor: add a constant for data-sources routes

* refactor: add a context that holds the currently active data-sources routes

* refactor: use the data-sources routes constant wherever possible

* refactor: use the data-sources routes context wherever possible

* feat(data-connections): add edit and new pages

* feat(data-connections): set the the custom routes via the context provider

* fix(data-connections): set the active tab properly

We needed to update the routes to match with the ones on the backend ("data-sources" vs "datasources"),
and we also needed to check if it is the default tab, in which case we would like to highlight the Datasources tab.

* tests: fix tests for Data Connections page

* fix: address rebase issues

* tests: find button based on role and text

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>

* fix: add missing closing ) paren in tests

* refactor: use implicit return types for components

* tests: change role from "button" to "link"

* refactor: stop using unnecessary wrapper components

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
2022-07-25 14:29:21 +02:00
Levente BaloghandRyan McKinley d6d49d8ba3 DataSources: refactor datasource pages to be reusable (#51874)
* refactor: move utility functions out of the redux actions

* refactor: move password handlers to the feature root

* refactor: move API related functions to an api.ts

* refactor: move components under a /components folder

* refactor: move page containers under a /pages folder and extract components

* refactor: update mocks to be easier to reuse

* refactor: move tests into a state/tests/ subfolder

* refactor: expose 'initialState' for plugins

* refactor: move generic types to the root folder of the feature

* refactor: import path fixe

* refactor: update import paths for app routes

* chore: update betterer

* refactor: fix type errors due to changed mock functions

* chore: fix mocking context_srv in tests

* refactor: udpate imports to be more concise

* fix: update failing test because of mocks

* refactor: use the new `navId` prop where we can

* fix: use UID instead ID in datasource edit links

* fix:clean up Redux state when unmounting the edit page

* refactor: use `uid` instead of `id`

* refactor: always fetch the plugin details when editing a datasource

The deleted lines could provide performance benefits, although they also make the
implementation more prone to errors. (Mostly because we are storing the information
about the currently loaded plugin in a single field, and it was not validating if it
is for the latest one).

We are planning to introduce some kind of caching, but first we would like to clean up
the underlying state a bit (plugins & datasources.

* fix: add missing dispatch() wrapper for update datasource callback

* refactor: prefer using absolute import paths

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>

* fix: ESLINT import order issue

* refactor: put test files next to their files

* refactor: use implicit return types for components

* fix: remove caching from datasource fetching

I have introduced a cache to only fetch data-sources once, however as we
are missing a good logic for updating the instances in the Redux store
when they change (create, update, delete), this approach is not keeping the UI in sync.
Due to this reason I have removed the caching for now, and will reintroduce it once we have a
more robust client-side state logic.

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2022-07-20 09:25:09 +02:00
Levente Balogh 99de3313f7 Datasources: Refactor the list page (#51438)
* refactor(Data Sources): rename file to follow naming convention

* refactor: use react-redux hooks for interacting with the store

* tests: update data-sources list related test files

* refactor: extract datasource list page contents

* refactor: pass dataSources to the DataSourcesList as a prop

* refactor: use proper typing for navIndex mocks
2022-07-07 11:15:34 +02:00
Levente Balogh b184280cb3 fix: set base-path manually (#50773)
In case we didn't set a `basePath`, `<AppPluginLoader>` would always use the current path as a `basePath`.
This can get problematic in case the Cloud Onboarding app tries to handle it's own sub-routes.
2022-06-14 14:29:55 +02:00
Levente Balogh 2a72dff356 Data Connections: make sub-routes work (#50754)
* fix(Data Connections): make sub-routes work

* test(Data Connections): add basic tests for sub-urls
2022-06-14 11:10:20 +02:00
Levente Balogh 9a85a2e441 Data Connections: Create a new top-level page (#50018)
* Feature Flags: introduce a flag for enabling the Data Connections page

* Feature Flags: generate schemas

* Navigation: add navigation weight for the Data Connections page

* NavLink: add a comment pointing out where icon names can be looked up

* NavTree: add a new page called Data Connections

* fix(Api): prefix the navigation IDs with the parent ("data-connections")

* feat(Frontend): add a basic page with four tabs

* feat(Plugins): add a hook for importing an app plugin

* feat(Plugins): add a component for loading app plugins anywhere

* feat(Data Connections): load the cloud-onboarding app under the "Cloud onboarding" tab

* feat(Data Connections): generate a proper nav model to highlight active tabs

* test(Data Connections): add tests

* refactor(Data Connections): update temporary text content

This is only used as a placeholder until the tabs are under development.

* refactor(Data Cnnnections): move /pages to /tabs

* refactor(Data Connections): remove the `types.ts` file as it is not referenced by any module

* feat(Data Connections): only register routes if feature is enabled
2022-06-10 12:13:31 +02:00
Levente Balogh e452785291 docs: clarify how PR titles should be formatted (#49682) 2022-06-01 10:44:38 +02:00
Levente Balogh 84b7efb393 fix: only "swallow" the json() parsing error if the response is empty (#47493) 2022-05-26 13:01:53 +02:00
Levente Balogh 5283a8b13d Levitate: use a custom breaking change label (#48494)
* chore: temporarily rename the breaking-change label assigned by Levitate

* chore: use 'levitate breaking change' as a label
2022-04-29 14:44:50 +02:00
Levente Balogh c331af93b9 Plugins: allow using both Function and Class components for app plugins (#46148)
* fix: make it possible to use both class and functional components for plugins

* fix: accept both class and functional components as plugin root pages

* refactor: import types by name

* refactor: use `ComponentType`
2022-03-04 09:52:59 +01:00
Levente Balogh 47d1d83673 feat: add a new <SecretInput> component (#46073) 2022-03-02 14:53:34 +01:00
Levente Balogh 0dfde923e3 fix: fix link pointing to breaking changes guideline (#45662) 2022-02-21 12:49:25 +01:00
Levente Balogh 1e21184f65 Fix: JSON parsing in backend_srv (#45598)
* fix(plugins/state): console log errors during install / uninstall

* fix(backend_srv): catch JSON parse errors

Sometimes it can happen that a backend API responses says that it's
returning with a JSON content-type, however it actually returns an invalid
JSON (e.g. an empty body) - in which case the backendSrv() request errors out.
2022-02-18 16:06:37 +01:00
Levente Balogh 27ee091d49 Chore: fix Levitate reporting issues with missing PR numbers (#45381)
* chore: persist the PR number in the Levitate workflow artifact

This is going to be used later in the reporting workflow, as for
3rd party (fork) PRs Github doesn't correctly populate the `workflow_run` context (the PR number is missing from it).

* chore: use the PR number from the artifact for Levitate reporting
2022-02-15 11:10:44 +01:00
Levente Balogh 4aca996c55 fix: use the a PAT instead of the GITHUB_TOKEN (#45376) 2022-02-15 11:06:23 +01:00
Levente BaloghandJack Westbrook 5e9faec428 Chore: guideline for dealing with breaking changes (#45128)
* Wip

* docs: add the first version of the breaking-changes guidelines

* chore: add a graphic about the CI workflow

* docs: add information about the CI workflow

* docs: add TOC to the breaking changes guideline

* chore: add a link in the comment to the guideline

* docs: fine-tune the style of the last paragraph

* docs: fix the way we reference `deprecationWarning()`

* fix: Prettier issues

* fix: fix Prettier issues

* docs: update the wording in the guide

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>

* docs: update the wording in the guide

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>

* docs: update the wording in the guide

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>

* docs: update the wording in the guide

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>

* docs: update the wording in the guide

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>

* docs: fix typo in the guideline

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>

* docs: fix typo in the guideline

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>

* docs: fix typo in the guideline

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>

* docs: update the wording in the guide

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>

* docs: update the wording in the guide

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>

* docs: update the wording in the guide

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>

* fix: fix prettier issues

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
2022-02-11 09:29:57 +01:00
Levente Balogh fba9c0be53 chore(levitate-reporting): update the variables sent to Slack (#45122)
The previously used `.url` property was actually giving back a link to the API,
which is not the most suitable thing for us.
2022-02-09 10:08:22 +00:00
Levente Balogh ffee50b57c chore: send a notification to Slack when there is a breaking change (#44699)
We would like this to have a bit better chance for helping out with
breaking changes in the beginning and also to have a historical overview
of what happened.
2022-02-08 11:20:11 +01:00
Levente Balogh c31585c246 feat: use the latest version of @grafana/levitate (#44656) 2022-02-01 09:18:21 +01:00
Levente Balogh 1f4d53805c fix: backport @grafana/levitate to 0.2.0 (#44543) 2022-01-27 16:38:12 +01:00
Levente Balogh aeddfb0506 Github Actions: another fix for the levitate workflow (#43742)
* fix: add col number to the link to work correctly

If we don't provide the position in a #step:{line}:{column} format
then the Github UI won't take us to the correct step.

* fix: escape the backtick ("`") characters properly
2022-01-06 12:02:45 +01:00
Levente Balogh ef35fd4069 Github Actions: another fix for the levitate workflow (#43659)
* chore: link to the actual workflow step

* chore: make the "Detect" workflow fail if there were any breaking changes

* chore: stop making the reporting workflow fail on breaking changes

* fix: fix typo (`mesage` -> `message`)
2022-01-04 13:54:38 +01:00
Levente Balogh 00c356f55f fix: checkout the repo to have the helper scripts available (#43646) 2022-01-04 11:08:08 +01:00
Levente Balogh 1e3cf75862 Github Actions: update the reporting for the levitate workflow (#43621)
* chore: stop checking out the repo and use the `unzip` command

* refactor: remove deprecated workflow script

* refactor: add whitespace around template variable
2022-01-04 10:23:28 +01:00
Levente BaloghandMarcus Andersson 8ed5b95f42 Chore: change triggering of the detect-breaking-changes Github flow (#43188)
* chore: only run the breaking-changes flow on pull requests

* chore: run the detect-breaking-changes flow on opening a PR

* chore: use

* Wip

* Wip

* Wip

* Wip

* Wip

* Wip

* Wip

* Wip

* Wip

* Wip

* Wip

* Wip

* Wip

* Wip

* Wip

* Wip

* Wip

* trying to get workflow split running.

* trying to trigger workflow.

* trying to trigger.

* Splits levitate job into two workflows.

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
2022-01-03 12:48:12 +01:00
Levente Balogh 3f554f58bd Detecting breaking changes (#42934)
* chore: add a script for detecting breaking changes

* chore: add a temporary binary for POC3

* chore: add a Github Action workflow for detecting breaking changes

* chore: remove unused variables from the script

* chore: rename the POC3 executable script

* chore: add a label if there is a breaking change

* chore: remove "breaking change" label if all is passing

* chore: rename steps

* fix: only remove the label if there were no breaking changes

* chore: jump to the correct step

* chore: skip `@grafana/toolkit`

* chore: add a message for opening links in a new tab

* chore: update comment message

* chore: use Node 16 for the breaking changes workflow

* chore: install Yarn separately

* chore: use @grafana/levitate

* refactor: remove the unused levitate.js bundle

* fix: handle error when trying to remove a label that does not exist

* chore: delete the comment if there are no breaking changes

* chore: add reviewers automatically

* fix: use double-quote in shell script

* TEMPORARY: introduce a breaking change in `@grafana/data`

* fix: use correct line number for the breaking changes

* Revert "TEMPORARY: introduce a breaking change in `@grafana/data`"

This reverts commit 986ac9ab82.

* chore: remove unnecessary line from .eslintignore
2021-12-15 17:07:11 +01:00
Levente Balogh d862d210e4 chore(latest.json): update the testing version (#42352) 2021-11-26 11:23:13 +01:00
Levente Balogh 35c2c95fdc Plugins: remove deprecated code (components) (#41686)
* refactor(plugins): use routes specific to the new plugins/admin

* refactor(plugins): remove unused pages (PluginList, PluginItem)

* refactor(plugins): remove PluginPage

* refactor(plugins): remove UpdatePluginModal

* refactor(plugins): move AppConfigWrapper under plugins/admin

* refactor(plugins): move PluginDashboards under plugins/admin

* refactor(plugins): rename the "specs" folder to "tests"

* refactor(plugins): move test files to /tests folder

* refactor(plugins): move AppRootPage into a /components folder

* refactor(plugins): move PluginsErrorsInfo into a /plugins folder

* refactor(plugins): move PluginSettingsCache into a /components folder

* refactor(plugins): move PluginStateInfo into a /plugins folder

* refactor(plugins): move AppRootPage.test.tsx next to the tested component

* refactor(plugins): remove old snapshot tests

* fix(plugins): fix tests

* refactor(plugins/admin): move & rename PluginSettingsCache

* fix(plugins): fix a few rebase issues

* Plugins: remove deprecated code (state handling) (#41739)

* refactor(plugins): use the plugins/admin reducer only

* refactor(plugins): remove tests for the deprecated plugins reducer

* refactor(plugins): remove tests for the deprecated plugins selectors

* refactor(plugins/state): add a short comment note to selectors

* feat(plugins/state): add a selector for selecting errors

* feat(plugins/state): add a hook for getting plugin errors

* refactor(plugins): udpate the PluginsErrorsInfo component to use the new state selectors

* refactor(plugins/state): remove the old (deprecated) selectors

* refactor(plugins/state): use the new actions under /admin

* refactor(plugins/state): remove old (deprecated) reducers and actions

* refactor(plugins): update component definition

* fix(plugins): remove unnecessary {children} prop for PluginsErrorsInfo

* Plugins: show / hide install controls based on the `pluginAdminEnabled` flag (#41749)

* docs(plugins): update documentation for the `plugin_admin_enabled` flag

* refactor(InstallControls): move the main component to a named module

* feat(plugins): use the `pluginAdminEnable` flag to hide / show install controls in the UI

* test(plugins): add tests for enabling/disabling install controls
2021-11-19 13:42:26 +01:00
Levente Balogh d6e253b771 chore(CODEOWNERS): remove references on "@grafana/plugins-platform" (#41949) 2021-11-19 13:09:14 +01:00
Levente Balogh 9c2a947605 Plugins Catalog: add support for enable/disable app plugins (#41801)
* refactor(plugins): add empty line between methods

* feat(api): add an API function for updating plugin settings

* feat(plugins): add a "getting started" guide for enabling / disabling app plugins

* test(plugins/admin): add tests for enable/disable functionality

* refactor(plugins/admin): update the name of the test cases

Now that we have multiple type of post-installation steps it probably makes sense.
2021-11-18 13:34:44 +01:00
Levente Balogh 4219e4f107 Plugins Catalog: hide plugins based on the Grafana config (#41679)
* refactor(pkg/api/frontendsettings): group plugin catalog settings

* feat(plugins/admin): add a default config value for `pluginCatalogHiddenPlugins`

* chore(grafana/config): add type for `pluginCatalogHiddenPlugins`

* feat(plugins/admin): hide plugins from the catalog based on the grafana config

* fix(plugins/admin): fix a rebase typo

* fix(plugins/admin): remove unnecessary filtering
2021-11-15 15:51:16 +01:00