SingleStatEditor.tsx 1.3 KB

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