module.tsx 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import _ from 'lodash';
  2. import React, { PureComponent } from 'react';
  3. import Graph from 'app/viz/Graph';
  4. import { Switch } from 'app/core/components/Switch/Switch';
  5. import { getTimeSeriesVMs } from 'app/viz/state/timeSeries';
  6. import { PanelProps, PanelOptionsProps, NullValueMode } from 'app/types';
  7. interface Options {
  8. showBars: boolean;
  9. showLines: boolean;
  10. showPoints: boolean;
  11. onChange: (options: Options) => void;
  12. }
  13. interface Props extends PanelProps<Options> {}
  14. export class Graph2 extends PureComponent<Props> {
  15. constructor(props) {
  16. super(props);
  17. }
  18. render() {
  19. const { timeSeries, timeRange, width, height } = this.props;
  20. const { showLines, showBars, showPoints } = this.props.options;
  21. const vmSeries = getTimeSeriesVMs({
  22. timeSeries: timeSeries,
  23. nullValueMode: NullValueMode.Ignore,
  24. });
  25. return (
  26. <Graph
  27. timeSeries={vmSeries}
  28. timeRange={timeRange}
  29. showLines={showLines}
  30. showPoints={showPoints}
  31. showBars={showBars}
  32. width={width}
  33. height={height}
  34. />
  35. );
  36. }
  37. }
  38. export class GraphOptions extends PureComponent<PanelOptionsProps<Options>> {
  39. onToggleLines = () => {
  40. this.props.onChange({ ...this.props.options, showLines: !this.props.options.showLines });
  41. };
  42. onToggleBars = () => {
  43. this.props.onChange({ ...this.props.options, showBars: !this.props.options.showBars });
  44. };
  45. onTogglePoints = () => {
  46. this.props.onChange({ ...this.props.options, showPoints: !this.props.options.showPoints });
  47. };
  48. render() {
  49. const { showBars, showPoints, showLines } = this.props.options;
  50. return (
  51. <div>
  52. <div className="form-option-box">
  53. <div className="form-option-box__header">Display Options</div>
  54. <div className="section gf-form-group">
  55. <h5 className="section-heading">Draw Modes</h5>
  56. <Switch label="Lines" labelClass="width-5" checked={showLines} onChange={this.onToggleLines} />
  57. <Switch label="Bars" labelClass="width-5" checked={showBars} onChange={this.onToggleBars} />
  58. <Switch label="Points" labelClass="width-5" checked={showPoints} onChange={this.onTogglePoints} />
  59. </div>
  60. <div className="section gf-form-group">
  61. <h5 className="section-heading">Test Options</h5>
  62. <Switch label="Lines" labelClass="width-5" checked={showLines} onChange={this.onToggleLines} />
  63. <Switch label="Bars" labelClass="width-5" checked={showBars} onChange={this.onToggleBars} />
  64. <Switch label="Points" labelClass="width-5" checked={showPoints} onChange={this.onTogglePoints} />
  65. </div>
  66. </div>
  67. <div className="form-option-box">
  68. <div className="form-option-box__header">Axes</div>
  69. </div>
  70. <div className="form-option-box">
  71. <div className="form-option-box__header">Thresholds</div>
  72. </div>
  73. </div>
  74. );
  75. }
  76. }
  77. export { Graph2 as Panel, GraphOptions as PanelOptions };