33 lines
700 B
TypeScript
33 lines
700 B
TypeScript
import { getNextRefId } from '@grafana/data';
|
|
import { DataQuery } from '@grafana/schema';
|
|
|
|
/**
|
|
* Makes sure all the queries have unique (and valid) refIds
|
|
*/
|
|
export function withUniqueRefIds(queries: DataQuery[]): DataQuery[] {
|
|
const refIds = new Set<string>(queries.map((query) => query.refId).filter(Boolean));
|
|
|
|
if (refIds.size === queries.length) {
|
|
return queries;
|
|
}
|
|
|
|
refIds.clear();
|
|
|
|
return queries.map((query) => {
|
|
if (query.refId && !refIds.has(query.refId)) {
|
|
refIds.add(query.refId);
|
|
return query;
|
|
}
|
|
|
|
const refId = getNextRefId(queries);
|
|
refIds.add(refId);
|
|
|
|
const newQuery = {
|
|
...query,
|
|
refId,
|
|
};
|
|
|
|
return newQuery;
|
|
});
|
|
}
|