mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Don't mutate seriesList parameter in mergeSeriesByTime (#15619)
* do not mutate seriesList in mergeSeriesByTime * extendedseriesList -> extendedDatapointsList * remove toString() from datapoints, since the value can be null
This commit is contained in:
parent
6fd6f893aa
commit
25b09168eb
@ -60,6 +60,16 @@ describe('file_export', () => {
|
||||
|
||||
expect(text).toBe(expectedText);
|
||||
});
|
||||
|
||||
it('should not modify series.datapoints', () => {
|
||||
const expectedSeries1DataPoints = ctx.seriesList[0].datapoints.slice();
|
||||
const expectedSeries2DataPoints = ctx.seriesList[1].datapoints.slice();
|
||||
|
||||
fileExport.convertSeriesListToCsvColumns(ctx.seriesList, ctx.timeFormat);
|
||||
|
||||
expect(expectedSeries1DataPoints).toEqual(ctx.seriesList[0].datapoints);
|
||||
expect(expectedSeries2DataPoints).toEqual(ctx.seriesList[1].datapoints);
|
||||
});
|
||||
});
|
||||
|
||||
describe('when exporting table data to csv', () => {
|
||||
|
@ -88,18 +88,18 @@ export function convertSeriesListToCsvColumns(seriesList, dateTimeFormat = DEFAU
|
||||
)
|
||||
);
|
||||
// process data
|
||||
seriesList = mergeSeriesByTime(seriesList);
|
||||
const extendedDatapointsList = mergeSeriesByTime(seriesList);
|
||||
|
||||
// make text
|
||||
for (let i = 0; i < seriesList[0].datapoints.length; i += 1) {
|
||||
const timestamp = moment(seriesList[0].datapoints[i][POINT_TIME_INDEX]).format(dateTimeFormat);
|
||||
for (let i = 0; i < extendedDatapointsList[0].length; i += 1) {
|
||||
const timestamp = moment(extendedDatapointsList[0][i][POINT_TIME_INDEX]).format(dateTimeFormat);
|
||||
text += formatRow(
|
||||
[timestamp].concat(
|
||||
seriesList.map(series => {
|
||||
return series.datapoints[i][POINT_VALUE_INDEX];
|
||||
extendedDatapointsList.map(datapoints => {
|
||||
return datapoints[i][POINT_VALUE_INDEX];
|
||||
})
|
||||
),
|
||||
i < seriesList[0].datapoints.length - 1
|
||||
i < extendedDatapointsList[0].length - 1
|
||||
);
|
||||
}
|
||||
|
||||
@ -120,22 +120,23 @@ function mergeSeriesByTime(seriesList) {
|
||||
}
|
||||
timestamps = sortedUniq(timestamps.sort());
|
||||
|
||||
const result = [];
|
||||
for (let i = 0; i < seriesList.length; i++) {
|
||||
const seriesPoints = seriesList[i].datapoints;
|
||||
const seriesTimestamps = seriesPoints.map(p => p[POINT_TIME_INDEX]);
|
||||
const extendedSeries = [];
|
||||
let pointIndex;
|
||||
const extendedDatapoints = [];
|
||||
for (let j = 0; j < timestamps.length; j++) {
|
||||
pointIndex = sortedIndexOf(seriesTimestamps, timestamps[j]);
|
||||
const timestamp = timestamps[j];
|
||||
const pointIndex = sortedIndexOf(seriesTimestamps, timestamp);
|
||||
if (pointIndex !== -1) {
|
||||
extendedSeries.push(seriesPoints[pointIndex]);
|
||||
extendedDatapoints.push(seriesPoints[pointIndex]);
|
||||
} else {
|
||||
extendedSeries.push([null, timestamps[j]]);
|
||||
extendedDatapoints.push([null, timestamp]);
|
||||
}
|
||||
}
|
||||
seriesList[i].datapoints = extendedSeries;
|
||||
result.push(extendedDatapoints);
|
||||
}
|
||||
return seriesList;
|
||||
return result;
|
||||
}
|
||||
|
||||
export function exportSeriesListToCsvColumns(seriesList, dateTimeFormat = DEFAULT_DATETIME_FORMAT, excel = false) {
|
||||
|
Loading…
Reference in New Issue
Block a user