mirror of
https://github.com/grafana/grafana.git
synced 2025-02-20 11:48:34 -06:00
37 lines
1.0 KiB
TypeScript
37 lines
1.0 KiB
TypeScript
import { getDashboardSrv } from 'app/features/dashboard/services/DashboardSrv';
|
|
|
|
import { SearchQuery } from './types';
|
|
|
|
/** prepare the query replacing folder:current */
|
|
export async function replaceCurrentFolderQuery(query: SearchQuery): Promise<SearchQuery> {
|
|
if (query.query && query.query.indexOf('folder:current') >= 0) {
|
|
query = {
|
|
...query,
|
|
location: await getCurrentFolderUID(),
|
|
query: query.query.replace('folder:current', '').trim(),
|
|
};
|
|
if (!query.query?.length) {
|
|
query.query = '*';
|
|
}
|
|
}
|
|
return Promise.resolve(query);
|
|
}
|
|
|
|
async function getCurrentFolderUID(): Promise<string | undefined> {
|
|
try {
|
|
let dash = getDashboardSrv().getCurrent();
|
|
if (!dash) {
|
|
await delay(500); // may not be loaded yet
|
|
dash = getDashboardSrv().getCurrent();
|
|
}
|
|
return Promise.resolve(dash?.meta?.folderUid);
|
|
} catch (e) {
|
|
console.error(e);
|
|
}
|
|
return undefined;
|
|
}
|
|
|
|
function delay(ms: number) {
|
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
}
|