import { FieldColorModeId, FieldConfigProperty, PanelPlugin } from '@grafana/data'; import { PieChartPanel } from './PieChartPanel'; import { PieChartOptions } from './types'; import { addStandardDataReduceOptions } from '../stat/types'; import { LegendDisplayMode, PieChartType, PieChartLabels, PieChartLegendValues } from '@grafana/ui'; import { PieChartPanelChangedHandler } from './migrations'; export const plugin = new PanelPlugin(PieChartPanel) .setPanelChangeHandler(PieChartPanelChangedHandler) .useFieldConfig({ standardOptions: { [FieldConfigProperty.Color]: { settings: { byValueSupport: false, bySeriesSupport: true, preferThresholdsMode: false, }, defaultValue: { mode: FieldColorModeId.PaletteClassic, }, }, }, }) .setPanelOptions((builder) => { addStandardDataReduceOptions(builder, false); builder .addRadio({ name: 'Piechart type', description: 'How the piechart should be rendered', path: 'pieType', settings: { options: [ { value: PieChartType.Pie, label: 'Pie' }, { value: PieChartType.Donut, label: 'Donut' }, ], }, defaultValue: PieChartType.Pie, }) .addMultiSelect({ name: 'Labels', path: 'displayLabels', description: 'Select the labels to be displayed in the pie chart', settings: { options: [ { value: PieChartLabels.Percent, label: 'Percent' }, { value: PieChartLabels.Name, label: 'Name' }, { value: PieChartLabels.Value, label: 'Value' }, ], }, }) .addRadio({ path: 'legend.displayMode', name: 'Legend mode', description: '', defaultValue: LegendDisplayMode.List, settings: { options: [ { value: LegendDisplayMode.List, label: 'List' }, { value: LegendDisplayMode.Table, label: 'Table' }, { value: LegendDisplayMode.Hidden, label: 'Hidden' }, ], }, }) .addRadio({ path: 'legend.placement', name: 'Legend placement', description: '', defaultValue: 'right', settings: { options: [ { value: 'bottom', label: 'Bottom' }, { value: 'right', label: 'Right' }, ], }, showIf: (c) => c.legend.displayMode !== LegendDisplayMode.Hidden, }) .addMultiSelect({ name: 'Legend values', path: 'legend.values', settings: { options: [ { value: PieChartLegendValues.Percent, label: 'Percent' }, { value: PieChartLegendValues.Value, label: 'Value' }, ], }, showIf: (c) => c.legend.displayMode !== LegendDisplayMode.Hidden, }); });