Help.tsx 3.7 KB

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