function()

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);
    });