mirror of
https://github.com/grafana/grafana.git
synced 2025-02-12 16:45:43 -06:00
* 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
66 lines
1.7 KiB
TypeScript
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)),
|
|
};
|
|
}
|