Skip to content

Commit adf0884

Browse files
authored
Merge pull request #3463 from Vizzuality/fix/glad-translation
Fix GLAD date translation problem
2 parents 9ee560f + 0805d2a commit adf0884

File tree

1 file changed

+35
-22
lines changed
  • app/javascript/components/widgets/widgets/forest-change/glad-alerts

1 file changed

+35
-22
lines changed

app/javascript/components/widgets/widgets/forest-change/glad-alerts/selectors.js

+35-22
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,15 @@ const runningMean = (data, windowSize) => {
5353
return smoothedMean;
5454
};
5555

56+
export const translateMeans = (means, latest) => {
57+
if (!means || !means.length) return null;
58+
const currentWeek = moment(latest).isoWeek();
59+
const firstHalf = means.slice(0, currentWeek);
60+
const secondHalf = means.slice(currentWeek);
61+
62+
return secondHalf.concat(firstHalf);
63+
};
64+
5665
export const getData = createSelector(
5766
[getAlerts, getLatestDates],
5867
(data, latest) => {
@@ -90,28 +99,32 @@ export const getData = createSelector(
9099
}
91100
);
92101

93-
export const getMeans = createSelector([getData], data => {
94-
if (!data) return null;
95-
const minYear = minBy(data, 'year').year;
96-
const maxYear = maxBy(data, 'year').year;
97-
const grouped = groupBy(data, 'week');
98-
const centralMeans = Object.keys(grouped).map(d => {
99-
const weekData = grouped[d];
100-
return meanBy(weekData, 'count');
101-
});
102-
const leftYears = data.filter(d => d.year !== maxYear);
103-
const rightYears = data.filter(d => d.year !== minYear);
104-
const leftMeans = meanData(getYearsObj(leftYears, -6));
105-
const rightMeans = meanData(getYearsObj(rightYears, 0, 6));
106-
const allMeans = concat(leftMeans, centralMeans, rightMeans);
107-
const smoothedMeans = runningMean(allMeans, 12);
108-
const pastYear = data.slice(-52);
109-
const parsedData = pastYear.map((d, i) => ({
110-
...d,
111-
mean: smoothedMeans[i]
112-
}));
113-
return parsedData;
114-
});
102+
export const getMeans = createSelector(
103+
[getData, getLatestDates],
104+
(data, latest) => {
105+
if (!data) return null;
106+
const minYear = minBy(data, 'year').year;
107+
const maxYear = maxBy(data, 'year').year;
108+
const grouped = groupBy(data, 'week');
109+
const centralMeans = Object.keys(grouped).map(d => {
110+
const weekData = grouped[d];
111+
return meanBy(weekData, 'count');
112+
});
113+
const leftYears = data.filter(d => d.year !== maxYear);
114+
const rightYears = data.filter(d => d.year !== minYear);
115+
const leftMeans = meanData(getYearsObj(leftYears, -6));
116+
const rightMeans = meanData(getYearsObj(rightYears, 0, 6));
117+
const allMeans = concat(leftMeans, centralMeans, rightMeans);
118+
const smoothedMeans = runningMean(allMeans, 12);
119+
const translatedMean = translateMeans(smoothedMeans, latest);
120+
const pastYear = data.slice(-52);
121+
const parsedData = pastYear.map((d, i) => ({
122+
...d,
123+
mean: translatedMean[i]
124+
}));
125+
return parsedData;
126+
}
127+
);
115128

116129
export const getStdDev = createSelector(
117130
[getMeans, getData],

0 commit comments

Comments
 (0)