in lib/perf-top/metrics/util/metric-line.js [116:176]
function (metricData) {
// If timestamp of the data is older 3 iterations, remove it.
dataGenerator.removeStaleData(metricData, metricLine.dataTimestamp);
// Get data for only one node
if (metricLine.nodeName) {
metricData = dataGenerator.getNodeData(metricData, metricLine.nodeName);
}
// Get data for only the matching dimension
if (metricLine.dimensionFilters) {
metricData = dataGenerator.getDimensionData(metricData, metricLine.dimensionFilters);
}
var lineNames = Object.keys(metricData);
if (lineNames.length === 0) {
console.error(`Metric was not found for request with queryParams:\n
endpoint: ${metricLine.endpoint}\n
metrics: ${metricLine.metrics}\n
agg:${metricLine.aggregates}\n
dim:${metricLine.dimensions}`);
return;
}
for (var i = 0; i < lineNames.length; i++) {
var lineName = lineNames[i];
var lineData = metricData[lineName];
var metricIndex = lineData.fields.findIndex(metricName => metricName === metricLine.metrics);
// Aggregate (sum) the data value
var aggData = 0;
lineData.data.forEach(function (data) {
aggData += data[metricIndex];
});
aggData = Math.round(aggData * 100) / 100;
// Initialize the line
if (!Object.keys(metricLine.lines).includes(lineName)) {
metricLine.lines[lineName] = {
title: lineNames[i],
style: { line: randomColor(metricLine.colors) },
x: metricLine.xAxis,
y: metricLine.yAxis.slice(0, metricLine.yAxis.length)
};
}
// Update line
updateLineData(metricLine.lines[lineName], aggData);
}
// Remove line with no data
for (lineName in metricLine.lines) {
if (!(lineName in metricData)) {
delete metricLine.lines[lineName];
}
}
var allLines = Object.keys(metricLine.lines).map(function (line) {
return metricLine.lines[line];
});
metricLine.line.setData(allLines);
});