-
Notifications
You must be signed in to change notification settings - Fork 484
Develop panel plugin
We have created a candlestick1
panel in previous doc, in this doc, let's see some key points in it.
First open index.ts
in DATAV_ROOT/ui/src/views/dashboard/plugins/external/panel/candlestick1
, you shoud see below content:
import { PanelPluginComponents } from "types/plugins/plugin";
import PanelComponent, { mockDataForTestDataDs } from "./Panel";
import PanelEditor from "./Editor";
import OverrideEditor, { OverrideRules, getOverrideTargets } from "./OverrideEditor";
const panelComponents: PanelPluginComponents = {
panel: PanelComponent,
editor: PanelEditor,
overrideEditor: OverrideEditor,
overrideRules: OverrideRules,
getOverrideTargets: getOverrideTargets,
mockDataForTestDataDs: mockDataForTestDataDs
}
export default panelComponents
This file export all the api of candlestick1
plugin that Datav requires, including:
-
panel
: the main panel component, used for render this panel -
editor
: when you open the panel editor, the options pane in the right is rendered with this
![image](https://private-user-images.githubusercontent.com/7036754/270575526-614d901b-06d7-4ffb-977d-a2d639644117.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjEzOTczNDYsIm5iZiI6MTcyMTM5NzA0NiwicGF0aCI6Ii83MDM2NzU0LzI3MDU3NTUyNi02MTRkOTAxYi0wNmQ3LTRmZmItOTc3ZC1hMmQ2Mzk2NDQxMTcucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDcxOSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA3MTlUMTM1MDQ2WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NjJiNTUyNGY3YTdlNmI1ODM5NDdlYjIxYTM4ZGQxZWE3NzBiNWNlMGMzZjg3YjA1MzY3ZWEwNDBhZWNiYjNhZiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.2lyo8BlYeOY-t6m_yOgqqAMB7DaHY8aSSibKDvYRTpI)
As show above, this options editor is rendered by our editor
component, but you should notice that first three sections (Basic Setting
, Built-in plugins
, External plugins
) are common settings, they are not defined in each plugins but in ui/src/views/dashboard/edit-panel/PanelSettings.tsx
.
-
overrideEditor
: This defines the overrides items in the overrides editor for panel
![](https://private-user-images.githubusercontent.com/7036754/270577315-6657936c-c2af-4682-8ccb-293fea8d19de.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjEzOTczNDYsIm5iZiI6MTcyMTM5NzA0NiwicGF0aCI6Ii83MDM2NzU0LzI3MDU3NzMxNS02NjU3OTM2Yy1jMmFmLTQ2ODItOGNjYi0yOTNmZWE4ZDE5ZGUucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDcxOSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA3MTlUMTM1MDQ2WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ZGNhZjY1OGFkOTUzMzg5NmJiY2ZiOWQ3ZGNjMDBlZTE5OGI0ZDdmMWRmNzhjMzIyZTJmZWEyY2Q0MGU2ZmRmNSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.YPMy8qMaC6Tedagsp32qfAWYGakSLT_nTVlBAvV_1H0)
The override editor skeleton is defined in ``ui/src/views/dashboard/edit-panel/PanelOverrides.tsx`
-
overrideRules
: defines the overrides rule names in the overrides editor for panel
![](https://private-user-images.githubusercontent.com/7036754/270578291-34e1124e-2f29-4b99-a325-5d480e91c7cf.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjEzOTczNDYsIm5iZiI6MTcyMTM5NzA0NiwicGF0aCI6Ii83MDM2NzU0LzI3MDU3ODI5MS0zNGUxMTI0ZS0yZjI5LTRiOTktYTMyNS01ZDQ4MGU5MWM3Y2YucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDcxOSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA3MTlUMTM1MDQ2WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NjZmOGRmODk5YjJmYTcxN2Q4NTljYzNhNWZhNjY4NTFkYTYzODMyZWRlNzRiM2MzOTViYTU0YjJmNjU4OTkxNSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.tuLNjUtniCKDyFCCO4Hoarng5InaX0rIuDH5QlYunM0)
-
getOverrideTargets
: defines the overrides target names in the overrides editor for panel
![](https://private-user-images.githubusercontent.com/7036754/270578979-5bc32f10-8832-40e8-8783-d252a847b8df.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjEzOTczNDYsIm5iZiI6MTcyMTM5NzA0NiwicGF0aCI6Ii83MDM2NzU0LzI3MDU3ODk3OS01YmMzMmYxMC04ODMyLTQwZTgtODc4My1kMjUyYTg0N2I4ZGYucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDcxOSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA3MTlUMTM1MDQ2WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NDlmZDliY2M3OTY2M2RjOTU4ZDMwN2MyNGM4ZTBmZTg3NTM4MGUwZjNhODY5N2MwYTA1YjdiMGNhMDA0MDhkYiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.shwWkqkLmFJ-lYMwv76ZwduRQ6inJgBbTA92F-L05e0)
-
mockDataForTestDataDs
: provide mock data for TestData datasource, in most cases this should be SeriesData format, including ourcandlestick1
panel
![](https://private-user-images.githubusercontent.com/7036754/270580252-d8e1afe3-9c83-43db-9173-ad57b2981524.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjEzOTczNDYsIm5iZiI6MTcyMTM5NzA0NiwicGF0aCI6Ii83MDM2NzU0LzI3MDU4MDI1Mi1kOGUxYWZlMy05YzgzLTQzZGItOTE3My1hZDU3YjI5ODE1MjQucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDcxOSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA3MTlUMTM1MDQ2WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9YjdiMjk1NTdmMTVlNGEyZDgzZjNmNDczOWQ3ZGFjMWM3NzUzODY1ZjgwODI0OGZlODJiNzI1ODcyODlmMWVjYyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.PgZq7_MUgEl8x0MwfRA_ZTrzP3j8mUlgpspezMnoTmM)
Sometimes, change an option can not trigger the chart library which panel uses to re-render, so we need a way to rebuild the panel and chart library :
dispatch(PanelForceRebuildEvent + panel.id)
Datav has provide a lot of components for you to use in your own plugins, such as ThresholdEditor, some of them are placed in ui/src/views/dashboard/plugins/components
, and others are defined at ui/src/components
, you can search built-in panels for detail usage.
![image](https://private-user-images.githubusercontent.com/7036754/270588533-0f0ef512-08fe-4882-9c22-82679e72776e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjEzOTczNDYsIm5iZiI6MTcyMTM5NzA0NiwicGF0aCI6Ii83MDM2NzU0LzI3MDU4ODUzMy0wZjBlZjUxMi0wOGZlLTQ4ODItOWMyMi04MjY3OWU3Mjc3NmUucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDcxOSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA3MTlUMTM1MDQ2WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ZTg3NDAxNDAyZjM0YjE0NjEwOTdlOGFhNTI0NDZhMDI5YmU2MDgyNGI1MzU4N2YwMGNjMjMzMjg0YjBmZjVhYSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.ZjdVh2IHVIrycnglXDQPTnEoXl8euYqfjfHIiGh6aYI)
These components can also be used in OverrideEdtiro.