debian-mirror-gitlab/app/assets/javascripts/monitoring/stores/utils.js

48 lines
1.4 KiB
JavaScript
Raw Normal View History

2017-09-10 17:25:29 +05:30
import _ from 'underscore';
2019-12-21 20:55:43 +05:30
export const uniqMetricsId = metric => `${metric.metric_id}_${metric.id}`;
/**
* Metrics loaded from project-defined dashboards do not have a metric_id.
* This method creates a unique ID combining metric_id and id, if either is present.
* This is hopefully a temporary solution until BE processes metrics before passing to fE
* @param {Object} metric - metric
* @returns {Object} - normalized metric with a uniqueID
*/
2020-01-01 13:55:28 +05:30
2019-12-21 20:55:43 +05:30
export const normalizeMetric = (metric = {}) =>
_.omit(
{
...metric,
metric_id: uniqMetricsId(metric),
2020-01-01 13:55:28 +05:30
metricId: uniqMetricsId(metric),
2019-12-21 20:55:43 +05:30
},
'id',
);
2019-09-30 21:07:59 +05:30
export const normalizeQueryResult = timeSeries => {
let normalizedResult = {};
if (timeSeries.values) {
normalizedResult = {
...timeSeries,
values: timeSeries.values.map(([timestamp, value]) => [
new Date(timestamp * 1000).toISOString(),
Number(value),
]),
};
2020-01-01 13:55:28 +05:30
// Check result for empty data
normalizedResult.values = normalizedResult.values.filter(series => {
const hasValue = d => !Number.isNaN(d[1]) && (d[1] !== null || d[1] !== undefined);
return series.find(hasValue);
});
2019-09-30 21:07:59 +05:30
} else if (timeSeries.value) {
normalizedResult = {
...timeSeries,
value: [new Date(timeSeries.value[0] * 1000).toISOString(), Number(timeSeries.value[1])],
};
}
return normalizedResult;
};