fetchData()

in src/config/firefox-desktop.js [128:184]


  fetchData(params, appStore) {
    return getProbeData(params).then((payload) => {
      const { aggregationLevel } = appStore.getState().productDimensions;

      const metricType = payload.response[0].metric_type;
      validate(payload, (p) => {
        noResponse(p);
        noUnknownMetrics(metricType, Object.keys(this.probeView));
      });
      const viewType =
        this.probeView[metricType] === 'categorical'
          ? 'proportion'
          : 'quantile';

      appStore.setField('viewType', viewType);
      appStore.setField('aggMethod', payload.response[0].client_agg_type);

      let data = payload.response;

      // Attach labels to histogram if appropriate type.
      if (metricType === 'histogram-categorical') {
        const labels = {
          ...appStore.getState().probe.labels,
        };
        data = produce(data, (draft) =>
          draft.map((point) => ({
            ...point,
            histogram: Object.entries(point.histogram).reduce(
              (acc, [bin, value]) => {
                if (bin in labels) {
                  acc[labels[bin]] = value;
                }
                return acc;
              },
              {}
            ),
            non_norm_histogram: Object.entries(point.non_norm_histogram).reduce(
              (acc, [bin, value]) => {
                if (bin in labels) {
                  acc[labels[bin]] = value;
                }
                return acc;
              },
              {}
            ),
          }))
        );
      }

      data = transformAPIResponse[viewType](data, aggregationLevel, metricType);

      return {
        data,
        probeType: this.probeView[metricType],
      };
    });
  },