PieChartOptionsBox.tsx 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // Libraries
  2. import React, { PureComponent } from 'react';
  3. // Components
  4. import { Select, FormLabel, PanelOptionsGroup } from '@grafana/ui';
  5. // Types
  6. import { FormField, PanelEditorProps } from '@grafana/ui';
  7. import { PieChartType } from '@grafana/ui';
  8. import { PieChartOptions } from './types';
  9. const labelWidth = 8;
  10. const pieChartOptions = [{ value: PieChartType.PIE, label: 'Pie' }, { value: PieChartType.DONUT, label: 'Donut' }];
  11. export class PieChartOptionsBox extends PureComponent<PanelEditorProps<PieChartOptions>> {
  12. onPieTypeChange = pieType => this.props.onOptionsChange({ ...this.props.options, pieType: pieType.value });
  13. onStrokeWidthChange = ({ target }) =>
  14. this.props.onOptionsChange({ ...this.props.options, strokeWidth: target.value });
  15. render() {
  16. const { options } = this.props;
  17. const { pieType, strokeWidth } = options;
  18. return (
  19. <PanelOptionsGroup title="PieChart">
  20. <div className="gf-form">
  21. <FormLabel width={labelWidth}>Type</FormLabel>
  22. <Select
  23. width={12}
  24. options={pieChartOptions}
  25. onChange={this.onPieTypeChange}
  26. value={pieChartOptions.find(option => option.value === pieType)}
  27. />
  28. </div>
  29. <div className="gf-form">
  30. <FormField
  31. label="Divider width"
  32. labelWidth={labelWidth}
  33. onChange={this.onStrokeWidthChange}
  34. value={strokeWidth}
  35. />
  36. </div>
  37. </PanelOptionsGroup>
  38. );
  39. }
  40. }