| 
									
										
										
										
											2021-04-21 15:38:00 +08:00
										 |  |  | import { every, find } from 'lodash'; | 
					
						
							| 
									
										
										
										
											2019-10-31 17:48:05 +08:00
										 |  |  | import { DataQuery } from '@grafana/data'; | 
					
						
							| 
									
										
										
										
											2019-03-15 00:20:33 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-09 21:16:35 +08:00
										 |  |  | export const getNextRefIdChar = (queries: DataQuery[]): string => { | 
					
						
							| 
									
										
										
										
											2019-03-15 00:20:33 +08:00
										 |  |  |   const letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-09 21:16:35 +08:00
										 |  |  |   return ( | 
					
						
							| 
									
										
										
										
											2021-04-21 15:38:00 +08:00
										 |  |  |     find(letters, (refId) => { | 
					
						
							|  |  |  |       return every(queries, (other) => { | 
					
						
							| 
									
										
										
										
											2020-07-09 21:16:35 +08:00
										 |  |  |         return other.refId !== refId; | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     }) ?? 'NA' | 
					
						
							|  |  |  |   ); | 
					
						
							| 
									
										
										
										
											2019-03-15 00:20:33 +08:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2019-10-18 19:09:55 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | export function addQuery(queries: DataQuery[], query?: Partial<DataQuery>): DataQuery[] { | 
					
						
							|  |  |  |   const q = query || {}; | 
					
						
							|  |  |  |   q.refId = getNextRefIdChar(queries); | 
					
						
							| 
									
										
										
										
											2021-01-19 21:04:54 +08:00
										 |  |  |   q.hide = false; | 
					
						
							| 
									
										
										
										
											2019-10-18 19:09:55 +08:00
										 |  |  |   return [...queries, q as DataQuery]; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2020-08-20 17:32:10 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | export function isDataQuery(url: string): boolean { | 
					
						
							|  |  |  |   if ( | 
					
						
							|  |  |  |     url.indexOf('api/datasources/proxy') !== -1 || | 
					
						
							|  |  |  |     url.indexOf('api/tsdb/query') !== -1 || | 
					
						
							|  |  |  |     url.indexOf('api/ds/query') !== -1 | 
					
						
							|  |  |  |   ) { | 
					
						
							|  |  |  |     return true; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return false; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export function isLocalUrl(url: string) { | 
					
						
							|  |  |  |   return !url.match(/^http/); | 
					
						
							|  |  |  | } |