PiechartValueEditor.tsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import React, { PureComponent } from 'react';
  2. import { FormLabel, PanelOptionsGroup, Select, UnitPicker } from '@grafana/ui';
  3. import { PiechartValueOptions } from './types';
  4. const statOptions = [
  5. { value: 'min', label: 'Min' },
  6. { value: 'max', label: 'Max' },
  7. { value: 'avg', label: 'Average' },
  8. { value: 'current', label: 'Current' },
  9. { value: 'total', label: 'Total' },
  10. ];
  11. const labelWidth = 6;
  12. export interface Props {
  13. options: PiechartValueOptions;
  14. onChange: (valueOptions: PiechartValueOptions) => void;
  15. }
  16. export default class PiechartValueEditor extends PureComponent<Props> {
  17. onUnitChange = unit =>
  18. this.props.onChange({
  19. ...this.props.options,
  20. unit: unit.value,
  21. });
  22. onStatChange = stat =>
  23. this.props.onChange({
  24. ...this.props.options,
  25. stat: stat.value,
  26. });
  27. render() {
  28. const { stat, unit } = this.props.options;
  29. return (
  30. <PanelOptionsGroup title="Value">
  31. <div className="gf-form">
  32. <FormLabel width={labelWidth}>Unit</FormLabel>
  33. <UnitPicker defaultValue={unit} onChange={this.onUnitChange} />
  34. </div>
  35. <div className="gf-form">
  36. <FormLabel width={labelWidth}>Value</FormLabel>
  37. <Select
  38. width={12}
  39. options={statOptions}
  40. onChange={this.onStatChange}
  41. value={statOptions.find(option => option.value === stat)}
  42. />
  43. </div>
  44. </PanelOptionsGroup>
  45. );
  46. }
  47. }