GaugePanelEditor.tsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Libraries
  2. import React, { PureComponent } from 'react';
  3. import {
  4. PanelEditorProps,
  5. ThresholdsEditor,
  6. Threshold,
  7. PanelOptionsGrid,
  8. ValueMappingsEditor,
  9. ValueMapping,
  10. SingleStatValueOptions,
  11. SingleStatValueEditor,
  12. } from '@grafana/ui';
  13. import { GaugeOptionsBox } from './GaugeOptionsBox';
  14. import { GaugeOptions } from './types';
  15. export class GaugePanelEditor extends PureComponent<PanelEditorProps<GaugeOptions>> {
  16. onThresholdsChanged = (thresholds: Threshold[]) =>
  17. this.props.onOptionsChange({
  18. ...this.props.options,
  19. thresholds,
  20. });
  21. onValueMappingsChanged = (valueMappings: ValueMapping[]) =>
  22. this.props.onOptionsChange({
  23. ...this.props.options,
  24. valueMappings,
  25. });
  26. onValueOptionsChanged = (valueOptions: SingleStatValueOptions) =>
  27. this.props.onOptionsChange({
  28. ...this.props.options,
  29. valueOptions,
  30. });
  31. render() {
  32. const { onOptionsChange, options } = this.props;
  33. return (
  34. <>
  35. <PanelOptionsGrid>
  36. <SingleStatValueEditor onChange={this.onValueOptionsChanged} value={options.valueOptions} />
  37. <GaugeOptionsBox onOptionsChange={onOptionsChange} options={options} />
  38. <ThresholdsEditor onChange={this.onThresholdsChanged} thresholds={options.thresholds} />
  39. </PanelOptionsGrid>
  40. <ValueMappingsEditor onChange={this.onValueMappingsChanged} valueMappings={options.valueMappings} />
  41. </>
  42. );
  43. }
  44. }