PieChartPanelEditor.tsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import React, { PureComponent } from 'react';
  2. import {
  3. PanelEditorProps,
  4. PanelOptionsGrid,
  5. ValueMappingsEditor,
  6. ValueMapping,
  7. FieldDisplayEditor,
  8. FieldDisplayOptions,
  9. FieldPropertiesEditor,
  10. Field,
  11. } from '@grafana/ui';
  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. <FieldDisplayEditor onChange={this.onDisplayOptionsChanged} options={fieldOptions} />
  38. <FieldPropertiesEditor
  39. title="Field (default)"
  40. showMinMax={true}
  41. onChange={this.onDefaultsChange}
  42. options={fieldOptions.defaults}
  43. />
  44. <PieChartOptionsBox onOptionsChange={onOptionsChange} options={options} />
  45. </PanelOptionsGrid>
  46. <ValueMappingsEditor onChange={this.onValueMappingsChanged} valueMappings={fieldOptions.mappings} />
  47. </>
  48. );
  49. }
  50. }