PiechartOptionsBox.tsx 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. import * as _ from 'lodash';
  10. const labelWidth = 8;
  11. const piechartOptions = [{ value: PiechartType.PIE, label: 'Pie' }, { value: PiechartType.DONUT, label: 'Donut' }];
  12. export class PiechartOptionsBox extends PureComponent<PanelEditorProps<PiechartOptions>> {
  13. onPieTypeChange = ({ target }) => this.props.onOptionsChange({ ...this.props.options, pieType: target.value });
  14. onStrokeWidthChange = ({ target }) =>
  15. this.props.onOptionsChange({ ...this.props.options, strokeWidth: target.value });
  16. render() {
  17. const { options } = this.props;
  18. const { pieType, strokeWidth } = options;
  19. return (
  20. <PanelOptionsGroup title="Piechart">
  21. <div className="gf-form">
  22. <FormLabel width={labelWidth}>Type</FormLabel>
  23. <Select
  24. width={12}
  25. options={piechartOptions}
  26. onChange={this.onPieTypeChange}
  27. value={piechartOptions.find(option => option.value === pieType)}
  28. />
  29. </div>
  30. <div className="gf-form">
  31. <FormField
  32. label="Divider width"
  33. labelWidth={labelWidth}
  34. onChange={this.onStrokeWidthChange}
  35. value={strokeWidth}
  36. />
  37. </div>
  38. </PanelOptionsGroup>
  39. );
  40. }
  41. }