TablePanelEditor.tsx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. //// Libraries
  2. import _ from 'lodash';
  3. import React, { PureComponent } from 'react';
  4. // Types
  5. import { PanelEditorProps, Switch, FormField } from '@grafana/ui';
  6. import { Options } from './types';
  7. export class TablePanelEditor extends PureComponent<PanelEditorProps<Options>> {
  8. onToggleShowHeader = () => {
  9. this.props.onOptionsChange({ ...this.props.options, showHeader: !this.props.options.showHeader });
  10. };
  11. onToggleFixedHeader = () => {
  12. this.props.onOptionsChange({ ...this.props.options, fixedHeader: !this.props.options.fixedHeader });
  13. };
  14. onToggleRotate = () => {
  15. this.props.onOptionsChange({ ...this.props.options, rotate: !this.props.options.rotate });
  16. };
  17. onFixedColumnsChange = ({ target }: any) => {
  18. this.props.onOptionsChange({ ...this.props.options, fixedColumns: target.value });
  19. };
  20. render() {
  21. const { showHeader, fixedHeader, rotate, fixedColumns } = this.props.options;
  22. return (
  23. <div>
  24. <div className="section gf-form-group">
  25. <h5 className="section-heading">Header</h5>
  26. <Switch label="Show" labelClass="width-6" checked={showHeader} onChange={this.onToggleShowHeader} />
  27. <Switch label="Fixed" labelClass="width-6" checked={fixedHeader} onChange={this.onToggleFixedHeader} />
  28. </div>
  29. <div className="section gf-form-group">
  30. <h5 className="section-heading">Display</h5>
  31. <Switch label="Rotate" labelClass="width-8" checked={rotate} onChange={this.onToggleRotate} />
  32. <FormField
  33. label="Fixed Columns"
  34. labelWidth={8}
  35. inputWidth={4}
  36. type="number"
  37. step="1"
  38. min="0"
  39. max="100"
  40. onChange={this.onFixedColumnsChange}
  41. value={fixedColumns}
  42. />
  43. </div>
  44. </div>
  45. );
  46. }
  47. }