mirror of
https://github.com/grafana/grafana.git
synced 2025-07-28 11:32:36 +08:00
Docs: Plugin doc review changes from chunk 1-B with corrected set of files (#67164)
* Re-pushing doc review changes from 1-B with fewer files Signed-off-by: Joe Perez <joseph.perez@grafana.com> * Fix for URL examples Signed-off-by: Joe Perez <joseph.perez@grafana.com> * Data frames fixes Signed-off-by: Joe Perez <joseph.perez@grafana.com> * Fixes from doc review Signed-off-by: Joe Perez <joseph.perez@grafana.com> * More doc review changes Signed-off-by: Joe Perez <joseph.perez@grafana.com> * Doc fixes Signed-off-by: Joe Perez <joseph.perez@grafana.com> * Doc fix Signed-off-by: Joe Perez <joseph.perez@grafana.com> * Prettier Signed-off-by: Joe Perez <joseph.perez@grafana.com> * Fix migration index Signed-off-by: Joe Perez <joseph.perez@grafana.com> * Fix screenshot Signed-off-by: Joe Perez <joseph.perez@grafana.com> * Doc fixes Signed-off-by: Joe Perez <joseph.perez@grafana.com> * Quick fix Signed-off-by: Joe Perez <joseph.perez@grafana.com> --------- Signed-off-by: Joe Perez <joseph.perez@grafana.com>
This commit is contained in:
@ -13,31 +13,17 @@ weight: 1000
|
||||
|
||||
# Migrate a plugin from AngularJS to React
|
||||
|
||||
If you’re looking to migrate a plugin to the new plugin platform, then we recommend that you release it under a new major version. Consider keeping a release branch for the previous version to be able to roll out patch releases for versions prior to Grafana 7.
|
||||
If you want to migrate a plugin to Grafana's React-based plugin platform, then we recommend that you release it under a new major version. Consider keeping a release branch for the previous version to be able to roll out patch releases for versions prior to Grafana 7.
|
||||
|
||||
While there's no 1-to-1 migration path from an Angular plugin to the new React platform, from early adopters, we’ve learned that one of the easiest ways to migrate is to:
|
||||
While there's no standard migration path from an Angular plugin to the new React platform, we’ve learned that one of the easiest ways to migrate is to:
|
||||
|
||||
1. Create a new branch called `migrate-to-react`.
|
||||
1. Start from scratch with one of the templates provided by Grafana Toolkit.
|
||||
1. Start from scratch with one of the templates provided by the [Create-plugin](https://www.npmjs.com/package/@grafana/create-plugin) tool.
|
||||
1. Move the existing code into the new plugin incrementally, one component at a time.
|
||||
|
||||
## Migrate a panel plugin
|
||||
|
||||
Prior to Grafana 7.0, you would export a MetricsPanelCtrl from module.ts.
|
||||
|
||||
**src/module.ts**
|
||||
|
||||
```ts
|
||||
import { MetricsPanelCtrl } from 'grafana/app/plugins/sdk';
|
||||
|
||||
class MyPanelCtrl extends MetricsPanelCtrl {
|
||||
// ...
|
||||
}
|
||||
|
||||
export { MyPanelCtrl as PanelCtrl };
|
||||
```
|
||||
|
||||
Starting with 7.0, plugins now export a PanelPlugin from module.ts where MyPanel is a React component containing the props from PanelProps.
|
||||
Starting with Grafana 7.0, plugins export a `PanelPlugin` from `module.ts` where `MyPanel`is a React component containing the props from `PanelProps`.
|
||||
|
||||
**src/module.ts**
|
||||
|
||||
@ -64,8 +50,8 @@ export function MyPanel({ options, data, width, height }: Props) {
|
||||
While all plugins are different, we'd like to share a migration process that has worked for some of our users.
|
||||
|
||||
1. Define your configuration model and `ConfigEditor`. For many plugins, the configuration editor is the simplest component so it's a good candidate to start with.
|
||||
1. Implement the `testDatasource()` method on the class that extends `DataSourceApi` using the settings in your configuration model to make sure you can successfully configure and access the external API.
|
||||
1. Implement the `query()` method. At this point, you can hard-code your query, because we haven’t yet implemented the query editor. The `query()` method supports both the new data frame response and the old TimeSeries response, so don’t worry about converting to the new format just yet.
|
||||
1. Implement the `testDatasource()` method on the class that extends `DataSourceApi`. Use the settings in your configuration model to make sure that you can successfully configure and access the external API.
|
||||
1. Implement the `query()` method. At this point, you can hard-code your query, because we haven’t yet implemented the query editor. The `query()` method supports both the new data frame response and the old `TimeSeries` response, so don’t worry about converting to the new format just yet.
|
||||
1. Implement the `QueryEditor`. How much work this requires depends on how complex your query model is.
|
||||
|
||||
By now, you should be able to release your new version.
|
||||
|
Reference in New Issue
Block a user