mirror of
https://github.com/grafana/grafana.git
synced 2025-02-20 11:48:34 -06:00
* Loki: Implement hints for query builder
* Update name of file
* Update imports
* Refactor
* Remove unused import
* Unify
* Revert "Unify"
This reverts commit 78da0e27e3
.
* Unify
* Fix types
* Fix tests
* Fix type error
* Simplify
* Update test
* Add documentation
* Update comment
* Add tests for addParserToQuery
* Smaller updates
30 lines
952 B
TypeScript
30 lines
952 B
TypeScript
import { DataFrame, FieldType, getParser, Labels, LogsParsers } from '@grafana/data';
|
|
|
|
export function dataFrameHasLokiError(frame: DataFrame): boolean {
|
|
const labelSets: Labels[] = frame.fields.find((f) => f.name === 'labels')?.values.toArray() ?? [];
|
|
return labelSets.some((labels) => labels.__error__ !== undefined);
|
|
}
|
|
export function extractLogParserFromDataFrame(frame: DataFrame): { hasLogfmt: boolean; hasJSON: boolean } {
|
|
const lineField = frame.fields.find((field) => field.type === FieldType.string);
|
|
if (lineField == null) {
|
|
return { hasJSON: false, hasLogfmt: false };
|
|
}
|
|
|
|
const logLines: string[] = lineField.values.toArray();
|
|
|
|
let hasJSON = false;
|
|
let hasLogfmt = false;
|
|
|
|
logLines.forEach((line) => {
|
|
const parser = getParser(line);
|
|
if (parser === LogsParsers.JSON) {
|
|
hasJSON = true;
|
|
}
|
|
if (parser === LogsParsers.logfmt) {
|
|
hasLogfmt = true;
|
|
}
|
|
});
|
|
|
|
return { hasLogfmt, hasJSON };
|
|
}
|