| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- import _ from 'lodash';
- import TimeSeries from 'app/core/time_series2';
- /**
- * Convert series into array of series values.
- * @param data Array of series
- */
- export function getSeriesValues(dataList: TimeSeries[]): number[] {
- const VALUE_INDEX = 0;
- let values = [];
- // Count histogam stats
- for (let i = 0; i < dataList.length; i++) {
- let series = dataList[i];
- let datapoints = series.datapoints;
- for (let j = 0; j < datapoints.length; j++) {
- if (datapoints[j][VALUE_INDEX] !== null) {
- values.push(datapoints[j][VALUE_INDEX]);
- }
- }
- }
- return values;
- }
- /**
- * Convert array of values into timeseries-like histogram:
- * [[val_1, count_1], [val_2, count_2], ..., [val_n, count_n]]
- * @param values
- * @param bucketSize
- */
- export function convertValuesToHistogram(values: number[], bucketSize: number): any[] {
- let histogram = {};
- for (let i = 0; i < values.length; i++) {
- let bound = getBucketBound(values[i], bucketSize);
- if (histogram[bound]) {
- histogram[bound] = histogram[bound] + 1;
- } else {
- histogram[bound] = 1;
- }
- }
- let histogam_series = _.map(histogram, (count, bound) => {
- return [Number(bound), count];
- });
- // Sort by Y axis values
- return _.sortBy(histogam_series, point => point[0]);
- }
- function getBucketBound(value: number, bucketSize: number): number {
- return Math.floor(value / bucketSize) * bucketSize;
- }
|