Skip to content

Commit 0c4fc5d

Browse files
authored
Merge pull request #3711 from Vizzuality/feature/alerts-latest-dates
Fixed GLAD alerts getLatest and added a fetchFiresLatest method, both…
2 parents 81f6935 + d8ea1aa commit 0c4fc5d

File tree

5 files changed

+57
-26
lines changed

5 files changed

+57
-26
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1-
import { fetchFiresAlerts } from 'services/alerts';
1+
import { fetchFiresAlerts, fetchFiresLatest } from 'services/alerts';
2+
import axios from 'axios';
23

34
export default ({ params }) =>
4-
fetchFiresAlerts(params).then(alerts => {
5-
const { data } = alerts.data;
6-
return data || {};
7-
});
5+
axios.all([fetchFiresAlerts(params), fetchFiresLatest(params)]).then(
6+
axios.spread((alerts, latest) => {
7+
const { data } = alerts.data;
8+
return { alerts: data, latest } || {};
9+
})
10+
);

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

+5-8
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ import {
1212
getChartConfig
1313
} from 'components/widgets/utils/data';
1414

15-
const getAlerts = state => state.data || null;
15+
const getAlerts = state => (state.data && state.data.alerts) || null;
16+
const getLatest = state => (state.data && state.data.latest) || null;
1617
const getColors = state => state.colors || null;
1718
const getActiveData = state => state.settings.activeData || null;
1819
const getWeeks = state => state.settings.weeks || null;
@@ -87,13 +88,9 @@ export const parseData = createSelector([getDates, getWeeks], (data, weeks) => {
8788
return data.slice(-weeks);
8889
});
8990

90-
export const parseConfig = createSelector([getColors], colors =>
91-
getChartConfig(
92-
colors,
93-
moment()
94-
.subtract(2, 'w')
95-
.format('YYYY-MM-DD')
96-
)
91+
export const parseConfig = createSelector(
92+
[getColors, getLatest],
93+
(colors, latest) => getChartConfig(colors, moment(latest))
9794
);
9895

9996
export const parseSentence = createSelector(

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

+5-2
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,18 @@ import { fetchGladAlerts, fetchGLADLatest } from 'services/alerts';
22
import axios from 'axios';
33

44
export default ({ params }) =>
5-
axios.all([fetchGladAlerts(params), fetchGLADLatest()]).then(
5+
axios.all([fetchGladAlerts(params), fetchGLADLatest(params)]).then(
66
axios.spread((alerts, latest) => {
77
let data = {};
88
if (alerts && alerts.data && latest && latest.data) {
99
const alertsData = alerts.data.data;
1010
const latestData = latest.data.data;
1111
data = {
1212
alerts: alertsData,
13-
latest: latestData.length && latestData[0].attributes.date
13+
latest:
14+
latestData &&
15+
latestData.attributes &&
16+
latestData.attributes.updatedAt
1417
};
1518
}
1619
return data;

app/javascript/components/widgets/widgets/forest-change/glad-ranked/actions.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export default ({ params }) =>
66
axios
77
.all([
88
fetchGladIntersectionAlerts({ ...params }),
9-
fetchGLADLatest(),
9+
fetchGLADLatest(params),
1010
getMultiRegionExtent({ ...params })
1111
])
1212
.then(
@@ -18,7 +18,7 @@ export default ({ params }) =>
1818
? {
1919
alerts: data,
2020
extent: areas,
21-
latest: latestData[0].attributes.date
21+
latest: latestData.attributes && latestData.attributes.updatedAt
2222
}
2323
: {};
2424
})

app/javascript/services/alerts.js

+37-9
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,30 @@ export const fetchFiresAlerts = ({ adm0, adm1, adm2, dataset }) => {
7373
return request.get(url, 3600, 'firesRequest');
7474
};
7575

76+
export const fetchFiresLatest = ({ adm1, adm2 }) => {
77+
let fires_summary_table = FIRES_ISO_DATASET;
78+
if (adm2) {
79+
fires_summary_table = FIRES_ADM2_DATASET;
80+
} else if (adm1) {
81+
fires_summary_table = FIRES_ADM1_DATASET;
82+
}
83+
const url = `${REQUEST_URL}/dataset/${fires_summary_table}`;
84+
return request.get(url, 3600, 'firesRequest').catch(error => {
85+
console.error('Error in firesRequest:', error);
86+
return new Promise(resolve =>
87+
resolve({
88+
data: {
89+
data: {
90+
attributes: { updatedAt: lastFriday },
91+
id: null,
92+
type: 'fires-alerts'
93+
}
94+
}
95+
})
96+
);
97+
});
98+
};
99+
76100
export const fetchViirsAlerts = ({ adm0, adm1, adm2, dates }) => {
77101
const url = `${REQUEST_URL}/viirs-active-fires/${!adm2 ? 'admin/' : ''}${
78102
QUERIES.viirsAlerts
@@ -112,20 +136,24 @@ export const fetchLatestDate = url =>
112136
);
113137
});
114138

115-
export const fetchGLADLatest = () => {
116-
const url = `${REQUEST_URL}/glad-alerts/latest`;
139+
export const fetchGLADLatest = ({ adm1, adm2 }) => {
140+
let glad_summary_table = GLAD_ISO_DATASET;
141+
if (adm2) {
142+
glad_summary_table = GLAD_ADM2_DATASET;
143+
} else if (adm1) {
144+
glad_summary_table = GLAD_ADM1_DATASET;
145+
}
146+
const url = `${REQUEST_URL}/dataset/${glad_summary_table}`;
117147
return request.get(url, 3600, 'gladRequest').catch(error => {
118148
console.error('Error in gladRequest:', error);
119149
return new Promise(resolve =>
120150
resolve({
121151
data: {
122-
data: [
123-
{
124-
attributes: { date: lastFriday },
125-
id: null,
126-
type: 'glad-alerts'
127-
}
128-
]
152+
data: {
153+
attributes: { updatedAt: lastFriday },
154+
id: null,
155+
type: 'glad-alerts'
156+
}
129157
}
130158
})
131159
);

0 commit comments

Comments
 (0)