| 
									
										
										
										
											2018-12-20 23:55:02 +08:00
										 |  |  | import React from 'react'; | 
					
						
							|  |  |  | import { Project } from './Project'; | 
					
						
							| 
									
										
										
										
											2019-01-11 20:53:04 +08:00
										 |  |  | import StackdriverDatasource from '../datasource'; | 
					
						
							| 
									
										
										
										
											2018-12-20 23:55:02 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | export interface Props { | 
					
						
							| 
									
										
										
										
											2019-01-11 20:53:04 +08:00
										 |  |  |   datasource: StackdriverDatasource; | 
					
						
							| 
									
										
										
										
											2018-12-22 04:38:46 +08:00
										 |  |  |   rawQuery: string; | 
					
						
							| 
									
										
										
										
											2018-12-22 05:04:46 +08:00
										 |  |  |   lastQueryError: string; | 
					
						
							| 
									
										
										
										
											2018-12-20 23:55:02 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | interface State { | 
					
						
							|  |  |  |   displayHelp: boolean; | 
					
						
							|  |  |  |   displaRawQuery: boolean; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export class Help extends React.Component<Props, State> { | 
					
						
							|  |  |  |   state: State = { | 
					
						
							|  |  |  |     displayHelp: false, | 
					
						
							|  |  |  |     displaRawQuery: false, | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-08 20:37:08 +08:00
										 |  |  |   onHelpClicked() { | 
					
						
							| 
									
										
										
										
											2018-12-20 23:55:02 +08:00
										 |  |  |     this.setState({ displayHelp: !this.state.displayHelp }); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-08 20:37:08 +08:00
										 |  |  |   onRawQueryClicked() { | 
					
						
							| 
									
										
										
										
											2018-12-22 04:38:46 +08:00
										 |  |  |     this.setState({ displaRawQuery: !this.state.displaRawQuery }); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   shouldComponentUpdate(nextProps) { | 
					
						
							|  |  |  |     return nextProps.metricDescriptor !== null; | 
					
						
							| 
									
										
										
										
											2018-12-20 23:55:02 +08:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   render() { | 
					
						
							|  |  |  |     const { displayHelp, displaRawQuery } = this.state; | 
					
						
							| 
									
										
										
										
											2018-12-22 05:04:46 +08:00
										 |  |  |     const { datasource, rawQuery, lastQueryError } = this.props; | 
					
						
							| 
									
										
										
										
											2018-12-20 23:55:02 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     return ( | 
					
						
							| 
									
										
										
										
											2019-01-08 20:00:31 +08:00
										 |  |  |       <> | 
					
						
							| 
									
										
										
										
											2018-12-22 04:38:46 +08:00
										 |  |  |         <div className="gf-form-inline"> | 
					
						
							|  |  |  |           <Project datasource={datasource} /> | 
					
						
							| 
									
										
										
										
											2019-01-08 20:37:08 +08:00
										 |  |  |           <div className="gf-form" onClick={() => this.onHelpClicked()}> | 
					
						
							| 
									
										
										
										
											2018-12-22 04:38:46 +08:00
										 |  |  |             <label className="gf-form-label query-keyword"> | 
					
						
							|  |  |  |               Show Help | 
					
						
							|  |  |  |               <i className={`fa fa-caret-${displayHelp ? 'down' : 'right'}`} /> | 
					
						
							| 
									
										
										
										
											2018-12-20 23:55:02 +08:00
										 |  |  |             </label> | 
					
						
							|  |  |  |           </div> | 
					
						
							| 
									
										
										
										
											2018-12-22 04:38:46 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |           {rawQuery && ( | 
					
						
							| 
									
										
										
										
											2019-01-08 20:37:08 +08:00
										 |  |  |             <div className="gf-form" onClick={() => this.onRawQueryClicked()}> | 
					
						
							| 
									
										
										
										
											2018-12-22 04:38:46 +08:00
										 |  |  |               <label className="gf-form-label query-keyword"> | 
					
						
							|  |  |  |                 Raw Query | 
					
						
							|  |  |  |                 <i className={`fa fa-caret-${displaRawQuery ? 'down' : 'right'}`} ng-show="ctrl.showHelp" /> | 
					
						
							|  |  |  |               </label> | 
					
						
							|  |  |  |             </div> | 
					
						
							|  |  |  |           )} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           <div className="gf-form gf-form--grow"> | 
					
						
							|  |  |  |             <div className="gf-form-label gf-form-label--grow" /> | 
					
						
							|  |  |  |           </div> | 
					
						
							| 
									
										
										
										
											2018-12-20 23:55:02 +08:00
										 |  |  |         </div> | 
					
						
							| 
									
										
										
										
											2018-12-22 04:38:46 +08:00
										 |  |  |         {rawQuery && | 
					
						
							|  |  |  |           displaRawQuery && ( | 
					
						
							|  |  |  |             <div className="gf-form"> | 
					
						
							|  |  |  |               <pre className="gf-form-pre">{rawQuery}</pre> | 
					
						
							|  |  |  |             </div> | 
					
						
							|  |  |  |           )} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         {displayHelp && ( | 
					
						
							|  |  |  |           <div className="gf-form grafana-info-box" style={{ padding: 0 }}> | 
					
						
							|  |  |  |             <pre className="gf-form-pre alert alert-info" style={{ marginRight: 0 }}> | 
					
						
							|  |  |  |               <h5>Alias Patterns</h5>Format the legend keys any way you want by using alias patterns. Format the legend | 
					
						
							|  |  |  |               keys any way you want by using alias patterns.<br /> <br /> | 
					
						
							|  |  |  |               Example: | 
					
						
							|  |  |  |               <code>{`${'{{metricDescriptor.name}} - {{metricDescriptor.label.instance_name}}'}`}</code> | 
					
						
							|  |  |  |               <br /> | 
					
						
							|  |  |  |               Result:   <code>cpu/usage_time - server1-europe-west-1</code> | 
					
						
							|  |  |  |               <br /> | 
					
						
							|  |  |  |               <br /> | 
					
						
							|  |  |  |               <strong>Patterns</strong> | 
					
						
							|  |  |  |               <br /> | 
					
						
							|  |  |  |               <ul> | 
					
						
							|  |  |  |                 <li> | 
					
						
							|  |  |  |                   <code>{`${'{{metricDescriptor.type}}'}`}</code> = metric type e.g. | 
					
						
							|  |  |  |                   compute.googleapis.com/instance/cpu/usage_time | 
					
						
							|  |  |  |                 </li> | 
					
						
							|  |  |  |                 <li> | 
					
						
							|  |  |  |                   <code>{`${'{{metricDescriptor.name}}'}`}</code> = name part of metric e.g. instance/cpu/usage_time | 
					
						
							|  |  |  |                 </li> | 
					
						
							|  |  |  |                 <li> | 
					
						
							|  |  |  |                   <code>{`${'{{metricDescriptor.service}}'}`}</code> = service part of metric e.g. compute | 
					
						
							|  |  |  |                 </li> | 
					
						
							|  |  |  |                 <li> | 
					
						
							|  |  |  |                   <code>{`${'{{metricDescriptor.label.label_name}}'}`}</code> = Metric label metadata e.g. | 
					
						
							|  |  |  |                   metricDescriptor.label.instance_name | 
					
						
							|  |  |  |                 </li> | 
					
						
							|  |  |  |                 <li> | 
					
						
							|  |  |  |                   <code>{`${'{{resource.label.label_name}}'}`}</code> = Resource label metadata e.g. resource.label.zone | 
					
						
							|  |  |  |                 </li> | 
					
						
							|  |  |  |               </ul> | 
					
						
							|  |  |  |             </pre> | 
					
						
							|  |  |  |           </div> | 
					
						
							|  |  |  |         )} | 
					
						
							| 
									
										
										
										
											2018-12-22 05:04:46 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         {lastQueryError && ( | 
					
						
							|  |  |  |           <div className="gf-form"> | 
					
						
							|  |  |  |             <pre className="gf-form-pre alert alert-error">{lastQueryError}</pre> | 
					
						
							|  |  |  |           </div> | 
					
						
							|  |  |  |         )} | 
					
						
							| 
									
										
										
										
											2019-01-08 20:00:31 +08:00
										 |  |  |       </> | 
					
						
							| 
									
										
										
										
											2018-12-20 23:55:02 +08:00
										 |  |  |     ); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } |