PieChartPanelEditor.tsx 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import React, { PureComponent } from 'react';
  2. import {
  3. PanelEditorProps,
  4. PanelOptionsGrid,
  5. ValueMappingsEditor,
  6. FieldDisplayEditor,
  7. FieldDisplayOptions,
  8. FieldPropertiesEditor,
  9. PanelOptionsGroup,
  10. } from '@grafana/ui';
  11. import { ValueMapping, Field } from '@grafana/data';
  12. import { PieChartOptionsBox } from './PieChartOptionsBox';
  13. import { PieChartOptions } from './types';
  14. export class PieChartPanelEditor extends PureComponent<PanelEditorProps<PieChartOptions>> {
  15. onValueMappingsChanged = (mappings: ValueMapping[]) =>
  16. this.onDisplayOptionsChanged({
  17. ...this.props.options.fieldOptions,
  18. mappings,
  19. });
  20. onDisplayOptionsChanged = (fieldOptions: FieldDisplayOptions) =>
  21. this.props.onOptionsChange({
  22. ...this.props.options,
  23. fieldOptions,
  24. });
  25. onDefaultsChange = (field: Partial<Field>) => {
  26. this.onDisplayOptionsChanged({
  27. ...this.props.options.fieldOptions,
  28. defaults: field,
  29. });
  30. };
  31. render() {
  32. const { onOptionsChange, options } = this.props;
  33. const { fieldOptions } = options;
  34. return (
  35. <>
  36. <PanelOptionsGrid>
  37. <PanelOptionsGroup title="Display">
  38. <FieldDisplayEditor onChange={this.onDisplayOptionsChanged} value={fieldOptions} />
  39. </PanelOptionsGroup>
  40. <PanelOptionsGroup title="Field (default)">
  41. <FieldPropertiesEditor showMinMax={true} onChange={this.onDefaultsChange} value={fieldOptions.defaults} />
  42. </PanelOptionsGroup>
  43. <PieChartOptionsBox onOptionsChange={onOptionsChange} options={options} />
  44. </PanelOptionsGrid>
  45. <ValueMappingsEditor onChange={this.onValueMappingsChanged} valueMappings={fieldOptions.mappings} />
  46. </>
  47. );
  48. }
  49. }