grafana/public/app/plugins/panel/piechart/PieChartPanelEditor.tsx
2019-07-06 09:18:23 -07:00

59 lines
1.7 KiB
TypeScript

import React, { PureComponent } from 'react';
import {
PanelEditorProps,
PanelOptionsGrid,
ValueMappingsEditor,
FieldDisplayEditor,
FieldDisplayOptions,
FieldPropertiesEditor,
PanelOptionsGroup,
} from '@grafana/ui';
import { ValueMapping, Field } from '@grafana/data';
import { PieChartOptionsBox } from './PieChartOptionsBox';
import { PieChartOptions } from './types';
export class PieChartPanelEditor extends PureComponent<PanelEditorProps<PieChartOptions>> {
onValueMappingsChanged = (mappings: ValueMapping[]) =>
this.onDisplayOptionsChanged({
...this.props.options.fieldOptions,
mappings,
});
onDisplayOptionsChanged = (fieldOptions: FieldDisplayOptions) =>
this.props.onOptionsChange({
...this.props.options,
fieldOptions,
});
onDefaultsChange = (field: Partial<Field>) => {
this.onDisplayOptionsChanged({
...this.props.options.fieldOptions,
defaults: field,
});
};
render() {
const { onOptionsChange, options } = this.props;
const { fieldOptions } = options;
return (
<>
<PanelOptionsGrid>
<PanelOptionsGroup title="Display">
<FieldDisplayEditor onChange={this.onDisplayOptionsChanged} value={fieldOptions} />
</PanelOptionsGroup>
<PanelOptionsGroup title="Field (default)">
<FieldPropertiesEditor showMinMax={true} onChange={this.onDefaultsChange} value={fieldOptions.defaults} />
</PanelOptionsGroup>
<PieChartOptionsBox onOptionsChange={onOptionsChange} options={options} />
</PanelOptionsGrid>
<ValueMappingsEditor onChange={this.onValueMappingsChanged} valueMappings={fieldOptions.mappings} />
</>
);
}
}