mirror of
				https://github.com/grafana/grafana.git
				synced 2025-02-25 18:55:37 -06:00 
			
		
		
		
	Explore: Use rich history local storage for autocomplete (#81386)
* move autocomplete logic * Tests * Write to correct history * Remove historyUpdatedAction and related code * add helpful comments * Add option to mute all errors/warnings for autocomplete * Add back in legacy local storage query history for transition period * Move params to an object for easier use and defaults * Do not make time filter required * fix tests * change deprecation version and add issue number
This commit is contained in:
		| @@ -10,7 +10,6 @@ import { | ||||
|   DataSourceApi, | ||||
|   DataSourceRef, | ||||
|   DefaultTimeZone, | ||||
|   HistoryItem, | ||||
|   IntervalValues, | ||||
|   LogsDedupStrategy, | ||||
|   LogsSortOrder, | ||||
| @@ -37,8 +36,6 @@ export const DEFAULT_UI_STATE = { | ||||
| export const ID_ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz'; | ||||
| const nanoid = customAlphabet(ID_ALPHABET, 3); | ||||
|  | ||||
| const MAX_HISTORY_ITEMS = 100; | ||||
|  | ||||
| const LAST_USED_DATASOURCE_KEY = 'grafana.explore.datasource'; | ||||
| const lastUsedDatasourceKeyForOrgId = (orgId: number) => `${LAST_USED_DATASOURCE_KEY}.${orgId}`; | ||||
| export const getLastUsedDatasourceUID = (orgId: number) => | ||||
| @@ -276,35 +273,6 @@ export function hasNonEmptyQuery<TQuery extends DataQuery>(queries: TQuery[]): b | ||||
|   ); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Update the query history. Side-effect: store history in local storage | ||||
|  */ | ||||
| export function updateHistory<T extends DataQuery>( | ||||
|   history: Array<HistoryItem<T>>, | ||||
|   datasourceId: string, | ||||
|   queries: T[] | ||||
| ): Array<HistoryItem<T>> { | ||||
|   const ts = Date.now(); | ||||
|   let updatedHistory = history; | ||||
|   queries.forEach((query) => { | ||||
|     updatedHistory = [{ query, ts }, ...updatedHistory]; | ||||
|   }); | ||||
|  | ||||
|   if (updatedHistory.length > MAX_HISTORY_ITEMS) { | ||||
|     updatedHistory = updatedHistory.slice(0, MAX_HISTORY_ITEMS); | ||||
|   } | ||||
|  | ||||
|   // Combine all queries of a datasource type into one history | ||||
|   const historyKey = `grafana.explore.history.${datasourceId}`; | ||||
|   try { | ||||
|     store.setObject(historyKey, updatedHistory); | ||||
|     return updatedHistory; | ||||
|   } catch (error) { | ||||
|     console.error(error); | ||||
|     return history; | ||||
|   } | ||||
| } | ||||
|  | ||||
| export const getQueryKeys = (queries: DataQuery[]): string[] => { | ||||
|   const queryKeys = queries.reduce<string[]>((newQueryKeys, query, index) => { | ||||
|     const primaryKey = query.datasource?.uid || query.key; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user