last_updated: moment()

in dashboards-observability/public/components/trace_analytics/requests/traces_request_handler.ts [67:152]


            last_updated: moment(bucket.last_updated.value).format(TRACE_ANALYTICS_DATE_FORMAT),
            error_count: bucket.error_count.doc_count,
            percentile_in_trace_group: binarySearch(
              percentileRanges[bucket.trace_group.buckets[0]?.key],
              bucket.latency.value
            ),
            actions: '#',
          };
        })
      );
    })
    .then((newItems) => {
      setItems(newItems);
    })
    .catch((error) => console.error(error));
};

export const handleTraceViewRequest = (traceId, http, fields, setFields) => {
  handleDslRequest(http, null, getTracesQuery(traceId))
    .then(async (response) => {
      const bucket = response.aggregations.traces.buckets[0];
      return {
        trace_id: bucket.key,
        trace_group: bucket.trace_group.buckets[0]?.key,
        last_updated: moment(bucket.last_updated.value).format(TRACE_ANALYTICS_DATE_FORMAT),
        user_id: 'N/A',
        latency: bucket.latency.value,
        latency_vs_benchmark: 'N/A',
        percentile_in_trace_group: 'N/A',
        error_count: bucket.error_count.doc_count,
        errors_vs_benchmark: 'N/A',
      };
    })
    .then((newFields) => {
      setFields(newFields);
    })
    .catch((error) => console.error(error));
};

// setColorMap sets serviceName to color mappings
export const handleServicesPieChartRequest = async (
  traceId,
  http,
  setServiceBreakdownData,
  setColorMap
) => {
  const colors = [
    '#7492e7',
    '#c33d69',
    '#2ea597',
    '#8456ce',
    '#e07941',
    '#3759ce',
    '#ce567c',
    '#9469d6',
    '#4066df',
    '#da7596',
    '#a783e1',
    '#5978e3',
  ];
  const colorMap = {};
  let index = 0;
  await handleDslRequest(http, null, getServiceBreakdownQuery(traceId))
    .then((response) =>
      Promise.all(
        response.aggregations.service_type.buckets.map((bucket) => {
          colorMap[bucket.key] = colors[index++ % colors.length];
          return {
            name: bucket.key,
            color: colorMap[bucket.key],
            value: bucket.total_latency.value,
            benchmark: 0,
          };
        })
      )
    )
    .then((newItems) => {
      const latencySum = newItems.map((item) => item.value).reduce((a, b) => a + b, 0);
      return [
        {
          values: newItems.map((item) =>
            latencySum === 0 ? 100 : (item.value / latencySum) * 100
          ),
          labels: newItems.map((item) => item.name),
          benchmarks: newItems.map((item) => item.benchmark),
          marker: {