mirror of
https://github.com/grafana/grafana.git
synced 2025-08-01 12:52:15 +08:00

* auto axis * auto axis * expand everyhting with the same scale/unit * expand everyhting with the same scale/unit
159 lines
4.3 KiB
TypeScript
159 lines
4.3 KiB
TypeScript
import { FieldColorModeId, FieldConfigProperty, PanelPlugin } from '@grafana/data';
|
|
import { LegendDisplayMode } from '@grafana/ui';
|
|
import {
|
|
GraphFieldConfig,
|
|
PointMode,
|
|
GraphMode,
|
|
AxisPlacement,
|
|
graphFieldOptions,
|
|
} from '@grafana/ui/src/components/uPlot/config';
|
|
import { GraphPanel } from './GraphPanel';
|
|
import { Options } from './types';
|
|
|
|
export const plugin = new PanelPlugin<Options, GraphFieldConfig>(GraphPanel)
|
|
.useFieldConfig({
|
|
standardOptions: {
|
|
[FieldConfigProperty.Color]: {
|
|
settings: {
|
|
byValueSupport: false,
|
|
},
|
|
defaultValue: {
|
|
mode: FieldColorModeId.PaletteClassic,
|
|
},
|
|
},
|
|
},
|
|
useCustomConfig: builder => {
|
|
builder
|
|
.addRadio({
|
|
path: 'mode',
|
|
name: 'Display',
|
|
defaultValue: graphFieldOptions.mode[0].value,
|
|
settings: {
|
|
options: graphFieldOptions.mode,
|
|
},
|
|
})
|
|
.addRadio({
|
|
path: 'lineInterpolation',
|
|
name: 'Line interpolation',
|
|
defaultValue: graphFieldOptions.lineInterpolation[0].value,
|
|
settings: {
|
|
options: graphFieldOptions.lineInterpolation,
|
|
},
|
|
showIf: c => c.mode === GraphMode.Line,
|
|
})
|
|
.addSliderInput({
|
|
path: 'lineWidth',
|
|
name: 'Line width',
|
|
defaultValue: 1,
|
|
settings: {
|
|
min: 0,
|
|
max: 10,
|
|
step: 1,
|
|
},
|
|
showIf: c => c.mode !== GraphMode.Points,
|
|
})
|
|
.addSliderInput({
|
|
path: 'fillOpacity',
|
|
name: 'Fill area opacity',
|
|
defaultValue: 0.1,
|
|
settings: {
|
|
min: 0,
|
|
max: 1,
|
|
step: 0.1,
|
|
},
|
|
showIf: c => c.mode !== GraphMode.Points,
|
|
})
|
|
.addRadio({
|
|
path: 'points',
|
|
name: 'Points',
|
|
defaultValue: graphFieldOptions.points[0].value,
|
|
settings: {
|
|
options: graphFieldOptions.points,
|
|
},
|
|
})
|
|
.addSliderInput({
|
|
path: 'pointSize',
|
|
name: 'Point size',
|
|
defaultValue: 5,
|
|
settings: {
|
|
min: 1,
|
|
max: 10,
|
|
step: 1,
|
|
},
|
|
showIf: c => c.points !== PointMode.Never,
|
|
})
|
|
.addRadio({
|
|
path: 'axisPlacement',
|
|
name: 'Placement',
|
|
category: ['Axis'],
|
|
defaultValue: graphFieldOptions.axisPlacement[0].value,
|
|
settings: {
|
|
options: graphFieldOptions.axisPlacement,
|
|
},
|
|
})
|
|
.addTextInput({
|
|
path: 'axisLabel',
|
|
name: 'Label',
|
|
category: ['Axis'],
|
|
defaultValue: '',
|
|
settings: {
|
|
placeholder: 'Optional text',
|
|
},
|
|
showIf: c => c.axisPlacement !== AxisPlacement.Hidden,
|
|
// no matter what the field type is
|
|
shouldApply: () => true,
|
|
})
|
|
.addNumberInput({
|
|
path: 'axisWidth',
|
|
name: 'Width',
|
|
category: ['Axis'],
|
|
settings: {
|
|
placeholder: 'Auto',
|
|
},
|
|
showIf: c => c.axisPlacement !== AxisPlacement.Hidden,
|
|
});
|
|
},
|
|
})
|
|
.setPanelOptions(builder => {
|
|
builder
|
|
.addRadio({
|
|
path: 'tooltipOptions.mode',
|
|
name: 'Tooltip mode',
|
|
description: '',
|
|
defaultValue: 'single',
|
|
settings: {
|
|
options: [
|
|
{ value: 'single', label: 'Single' },
|
|
{ value: 'multi', label: 'All' },
|
|
{ value: 'none', label: 'Hidden' },
|
|
],
|
|
},
|
|
})
|
|
.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: 'bottom',
|
|
settings: {
|
|
options: [
|
|
{ value: 'bottom', label: 'Bottom' },
|
|
{ value: 'right', label: 'Right' },
|
|
],
|
|
},
|
|
showIf: c => c.legend.displayMode !== LegendDisplayMode.Hidden,
|
|
});
|
|
});
|