mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* wip: added draft of series to rows. * wip: building dataFrame structure first and then adding data. * wip: added some refactorings of the seriesToRows transformer. * did some refactorings to make the code easier to follow. * added an editor for the transform. * renamed some of the test data. * added docs. * fixed according to feedback. * renamved files. * fixed docs according to feedback. * fixed so we don't keep labels or config values from. * removed unused field. * fixed spelling errors. * fixed docs according to feedback.
40 lines
1.0 KiB
TypeScript
40 lines
1.0 KiB
TypeScript
import { isNumber } from 'lodash';
|
|
import { Field, DataFrame } from '../../../types/dataFrame';
|
|
import { getTimeField } from '../../../dataframe';
|
|
|
|
export class TimeFieldsByFrame {
|
|
private timeIndexByFrameIndex: Record<number, number>;
|
|
private timeFieldByFrameIndex: Record<number, Field>;
|
|
|
|
constructor() {
|
|
this.timeIndexByFrameIndex = {};
|
|
this.timeFieldByFrameIndex = {};
|
|
}
|
|
|
|
add(frameIndex: number, frame: DataFrame): void {
|
|
const fieldDescription = getTimeField(frame);
|
|
const timeIndex = fieldDescription?.timeIndex;
|
|
const timeField = fieldDescription?.timeField;
|
|
|
|
if (isNumber(timeIndex)) {
|
|
this.timeIndexByFrameIndex[frameIndex] = timeIndex;
|
|
}
|
|
|
|
if (timeField) {
|
|
this.timeFieldByFrameIndex[frameIndex] = timeField;
|
|
}
|
|
}
|
|
|
|
getField(frameIndex: number): Field {
|
|
return this.timeFieldByFrameIndex[frameIndex];
|
|
}
|
|
|
|
getFieldIndex(frameIndex: number): number {
|
|
return this.timeIndexByFrameIndex[frameIndex];
|
|
}
|
|
|
|
getLength() {
|
|
return Object.keys(this.timeIndexByFrameIndex).length;
|
|
}
|
|
}
|