grafana/public/app/features/dimensions/text.ts
Josh Hunt 3c6e0e8ef8
Chore: ESlint import order (#44959)
* Add and configure eslint-plugin-import

* Fix the lint:ts npm command

* Autofix + prettier all the files

* Manually fix remaining files

* Move jquery code in jest-setup to external file to safely reorder imports

* Resolve issue caused by circular dependencies within Prometheus

* Update .betterer.results

* Fix missing // @ts-ignore

* ignore iconBundle.ts

* Fix missing // @ts-ignore
2022-04-22 14:33:13 +01:00

66 lines
1.7 KiB
TypeScript

import { DataFrame, Field, FieldType, formattedValueToString } from '@grafana/data';
import { DimensionSupplier, TextDimensionConfig, TextDimensionMode } from './types';
import { findField, getLastNotNullFieldValue } from './utils';
//---------------------------------------------------------
// Resource dimension
//---------------------------------------------------------
export function getTextDimension(frame: DataFrame | undefined, config: TextDimensionConfig): DimensionSupplier<string> {
const field = config.field ? findField(frame, config.field) : frame?.fields.find((f) => f.type === FieldType.string);
return getTextDimensionForField(field, config);
}
export function getTextDimensionForField(
field: Field | undefined,
config: TextDimensionConfig
): DimensionSupplier<string> {
let v = config.fixed;
const mode = config.mode ?? TextDimensionMode.Fixed;
if (mode === TextDimensionMode.Fixed) {
return {
isAssumed: !Boolean(v),
fixed: v,
value: () => v,
get: (i) => v,
};
}
if (mode === TextDimensionMode.Template) {
const disp = (v: any) => {
return `TEMPLATE[${config.fixed} // ${v}]`;
};
if (!field) {
v = disp('');
return {
isAssumed: true,
fixed: v,
value: () => v,
get: (i) => v,
};
}
return {
field,
get: (i) => disp(field.values.get(i)),
value: () => disp(getLastNotNullFieldValue(field)),
};
}
if (!field) {
return {
isAssumed: true,
fixed: v,
value: () => v,
get: (i) => v,
};
}
let disp = (v: any) => formattedValueToString(field.display!(v));
return {
field,
get: (i) => disp(field.values.get(i)),
value: () => disp(getLastNotNullFieldValue(field)),
};
}