Help.tsx 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. import React from 'react';
  2. import { Project } from './Project';
  3. export interface Props {
  4. datasource: any;
  5. rawQuery: string;
  6. lastQueryError: string;
  7. }
  8. interface State {
  9. displayHelp: boolean;
  10. displaRawQuery: boolean;
  11. }
  12. export class Help extends React.Component<Props, State> {
  13. state: State = {
  14. displayHelp: false,
  15. displaRawQuery: false,
  16. };
  17. onHelpClicked() {
  18. this.setState({ displayHelp: !this.state.displayHelp });
  19. }
  20. onRawQueryClicked() {
  21. this.setState({ displaRawQuery: !this.state.displaRawQuery });
  22. }
  23. shouldComponentUpdate(nextProps) {
  24. return nextProps.metricDescriptor !== null;
  25. }
  26. render() {
  27. const { displayHelp, displaRawQuery } = this.state;
  28. const { datasource, rawQuery, lastQueryError } = this.props;
  29. return (
  30. <>
  31. <div className="gf-form-inline">
  32. <Project datasource={datasource} />
  33. <div className="gf-form" onClick={() => this.onHelpClicked()}>
  34. <label className="gf-form-label query-keyword">
  35. Show Help
  36. <i className={`fa fa-caret-${displayHelp ? 'down' : 'right'}`} />
  37. </label>
  38. </div>
  39. {rawQuery && (
  40. <div className="gf-form" onClick={() => this.onRawQueryClicked()}>
  41. <label className="gf-form-label query-keyword">
  42. Raw Query
  43. <i className={`fa fa-caret-${displaRawQuery ? 'down' : 'right'}`} ng-show="ctrl.showHelp" />
  44. </label>
  45. </div>
  46. )}
  47. <div className="gf-form gf-form--grow">
  48. <div className="gf-form-label gf-form-label--grow" />
  49. </div>
  50. </div>
  51. {rawQuery &&
  52. displaRawQuery && (
  53. <div className="gf-form">
  54. <pre className="gf-form-pre">{rawQuery}</pre>
  55. </div>
  56. )}
  57. {displayHelp && (
  58. <div className="gf-form grafana-info-box" style={{ padding: 0 }}>
  59. <pre className="gf-form-pre alert alert-info" style={{ marginRight: 0 }}>
  60. <h5>Alias Patterns</h5>Format the legend keys any way you want by using alias patterns. Format the legend
  61. keys any way you want by using alias patterns.<br /> <br />
  62. Example:
  63. <code>{`${'{{metricDescriptor.name}} - {{metricDescriptor.label.instance_name}}'}`}</code>
  64. <br />
  65. Result: &nbsp;&nbsp;<code>cpu/usage_time - server1-europe-west-1</code>
  66. <br />
  67. <br />
  68. <strong>Patterns</strong>
  69. <br />
  70. <ul>
  71. <li>
  72. <code>{`${'{{metricDescriptor.type}}'}`}</code> = metric type e.g.
  73. compute.googleapis.com/instance/cpu/usage_time
  74. </li>
  75. <li>
  76. <code>{`${'{{metricDescriptor.name}}'}`}</code> = name part of metric e.g. instance/cpu/usage_time
  77. </li>
  78. <li>
  79. <code>{`${'{{metricDescriptor.service}}'}`}</code> = service part of metric e.g. compute
  80. </li>
  81. <li>
  82. <code>{`${'{{metricDescriptor.label.label_name}}'}`}</code> = Metric label metadata e.g.
  83. metricDescriptor.label.instance_name
  84. </li>
  85. <li>
  86. <code>{`${'{{resource.label.label_name}}'}`}</code> = Resource label metadata e.g. resource.label.zone
  87. </li>
  88. </ul>
  89. </pre>
  90. </div>
  91. )}
  92. {lastQueryError && (
  93. <div className="gf-form">
  94. <pre className="gf-form-pre alert alert-error">{lastQueryError}</pre>
  95. </div>
  96. )}
  97. </>
  98. );
  99. }
  100. }