From 000a4d14c56e395ae74c37034d44ee9986c3cb72 Mon Sep 17 00:00:00 2001 From: Dan Checkoway Date: Sun, 8 Dec 2024 13:45:55 -0500 Subject: [PATCH 1/2] SEARCH-8309 Allow savedSearchId to be composed using variable(s) --- src/datasource.ts | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/datasource.ts b/src/datasource.ts index 0be085d..e2e2deb 100644 --- a/src/datasource.ts +++ b/src/datasource.ts @@ -12,13 +12,22 @@ export class CriblDataSource extends DataSourceWithBackend Date: Mon, 9 Dec 2024 23:42:38 -0500 Subject: [PATCH 2/2] SEARCH-8309 Update QueryEditor to allow typing savedSearchId with ${variable} --- src/components/QueryEditor.tsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/components/QueryEditor.tsx b/src/components/QueryEditor.tsx index f2359db..ab37ed2 100644 --- a/src/components/QueryEditor.tsx +++ b/src/components/QueryEditor.tsx @@ -48,7 +48,9 @@ export function QueryEditor({ datasource, query, onChange, onRunQuery }: Props) const onSavedQueryIdChange = useCallback((sv: SelectableValue) => { const newSavedSearchId = sv.value?.replace(/\s+/g, '') ?? ''; // auto-trim/remove any whitespace setSavedSearchId(newSavedSearchId); - if (newSavedSearchId !== savedSearchId && newSavedSearchId.match(/^[a-zA-Z0-9_]+$/)) { + // May contain ${...} style variables from the dashboard, but otherwise may contain only valid ID characters. + // May contain any combination of valid ID chars and dashboard variable(s). + if (newSavedSearchId !== savedSearchId && newSavedSearchId.match(/^([a-zA-Z0-9_]+|\$\{.+?\})+$/)) { onChange({ ...query, type: 'saved', savedSearchId: newSavedSearchId }); debouncedOnRunQuery(); } @@ -74,7 +76,12 @@ export function QueryEditor({ datasource, query, onChange, onRunQuery }: Props) if (queryType === 'saved') { return ( - o.value === savedSearchId) || { label: savedSearchId, value: savedSearchId }} + width={24} /> ); } else {