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