The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
grafana/public/app/core/utils/query.ts

54 lines
1.5 KiB

import { DataQuery, DataSourceRef, getNextRefId } from '@grafana/data';
// This function checks if the query has defined properties beyond those defined in the DataQuery interface.
export function queryIsEmpty(query: DataQuery): boolean {
const dataQueryProps = ['refId', 'hide', 'key', 'queryType', 'datasource'];
for (const key in query) {
// label is not a DataQuery prop, but it's defined in the query when called from the QueryRunner.
if (key === 'label') {
continue;
}
if (!dataQueryProps.includes(key)) {
return false;
}
}
return true;
}
export function addQuery(queries: DataQuery[], query?: Partial<DataQuery>, datasource?: DataSourceRef): DataQuery[] {
const q: DataQuery = {
...query,
refId: getNextRefId(queries),
hide: false,
};
if (!q.datasource && datasource) {
q.datasource = datasource;
}
return [...queries, q];
}
export function isDataQuery(url: string): boolean {
if (url.indexOf('api/datasources/proxy') !== -1 || url.indexOf('api/ds/query') !== -1) {
return true;
}
return false;
}
export function isLocalUrl(url: string) {
return !url.match(/^http/);
}
/**
* Returns the input value for non empty string and undefined otherwise
*
* It is inadvisable to set a query param to an empty string as it will be added to the URL.
* It is better to keep it undefined so the param won't be added to the URL at all.
*/
export function getQueryParamValue(value: string | undefined | null): string | undefined {
return value || undefined;
}