PiechartPanel.tsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // Libraries
  2. import React, { PureComponent } from 'react';
  3. // Services & Utils
  4. import { processTimeSeries, ThemeContext } from '@grafana/ui';
  5. // Components
  6. import { Piechart } from '@grafana/ui';
  7. // Types
  8. import { PiechartOptions } from './types';
  9. import { PanelProps, NullValueMode, TimeSeriesValue } from '@grafana/ui/src/types';
  10. interface Props extends PanelProps<PiechartOptions> {}
  11. export class PiechartPanel extends PureComponent<Props> {
  12. render() {
  13. const { panelData, width, height, options } = this.props;
  14. let value: TimeSeriesValue;
  15. if (panelData.timeSeries) {
  16. const vmSeries = processTimeSeries({
  17. timeSeries: panelData.timeSeries,
  18. nullValueMode: NullValueMode.Null,
  19. });
  20. if (vmSeries[0]) {
  21. value = vmSeries[0].stats[options.stat];
  22. } else {
  23. value = null;
  24. }
  25. } else if (panelData.tableData) {
  26. value = panelData.tableData.rows[0].find(prop => prop > 0);
  27. }
  28. return (
  29. <ThemeContext.Consumer>
  30. {theme => <Piechart value={value} {...this.props.options} width={width} height={height} theme={theme} />}
  31. </ThemeContext.Consumer>
  32. );
  33. }
  34. }