|
|
|
import { PanelData, TimeRange } from '@grafana/data';
|
|
|
|
import { DataProcessor } from '../grafana/data_processor';
|
|
|
|
|
|
|
|
import { ExtremumOptions } from 'types';
|
|
|
|
|
|
|
|
import * as _ from 'lodash';
|
|
|
|
|
|
|
|
// Convert Grafana options into Chartwerk options
|
|
|
|
export class Series {
|
|
|
|
private processor;
|
|
|
|
private _seriesList;
|
|
|
|
|
|
|
|
constructor(private grafanaData: PanelData, timeRange: TimeRange, private gaugeValueOptions: ExtremumOptions) {
|
|
|
|
if(this._isSerieOneValue()) {
|
|
|
|
this._seriesList = [{ datapoints: [[0, gaugeValueOptions.value]] }];
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
this.processor = new DataProcessor({});
|
|
|
|
this._seriesList = this.processor.getSeriesList({
|
|
|
|
dataList: grafanaData.series,
|
|
|
|
range: timeRange,
|
|
|
|
});
|
|
|
|
this._seriesList = this._updateSeriesListWithChartwerkParams(this._seriesList);
|
|
|
|
}
|
|
|
|
|
|
|
|
public getChartwerkSeries(): any[] {
|
|
|
|
return this._seriesList
|
|
|
|
}
|
|
|
|
|
|
|
|
private _updateSeriesListWithChartwerkParams(series: any[]): any[] {
|
|
|
|
return _.map(series, (serie: any, idx: number) => {
|
|
|
|
return {
|
|
|
|
target: serie.alias,
|
|
|
|
color: serie.color,
|
|
|
|
datapoints: _.map(serie.datapoints, (row) => _.reverse(row)),
|
|
|
|
alias: serie.label,
|
|
|
|
};
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
private _isSerieOneValue(): boolean {
|
|
|
|
return _.isNumber(this.gaugeValueOptions.value);
|
|
|
|
}
|
|
|
|
}
|