From 7c31238a2e9658c686766bb645642c408d3027af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ferna=CC=81ndez=20Rico?= Date: Thu, 14 Feb 2019 17:59:20 +0100 Subject: [PATCH 1/4] Cleaned previous URL action --- .../maps/components/basemaps/basemaps.js | 13 +++-- app/javascript/components/maps/map/actions.js | 52 ------------------- .../components/maps/map/basemaps-schema.js | 3 +- app/javascript/components/maps/map/index.js | 15 +++--- 4 files changed, 18 insertions(+), 65 deletions(-) diff --git a/app/javascript/components/maps/components/basemaps/basemaps.js b/app/javascript/components/maps/components/basemaps/basemaps.js index 8f14c16a77..51f418585d 100644 --- a/app/javascript/components/maps/components/basemaps/basemaps.js +++ b/app/javascript/components/maps/components/basemaps/basemaps.js @@ -13,15 +13,20 @@ class BasemapsContainer extends React.Component { static propTypes = { activeDatasets: PropTypes.array, activeBoundaries: PropTypes.object, - setMapSettings: PropTypes.func.isRequired, - setLandsatBasemap: PropTypes.func.isRequired + setMapSettings: PropTypes.func.isRequired }; selectBasemap = (basemap, year) => { - const { labels, setLandsatBasemap, setMapSettings } = this.props; + const { labels, setMapSettings } = this.props; const label = labels[basemap.labelsKey] || labels.default; if (basemap.value === 'landsat') { - setLandsatBasemap({ basemap, year, label: label.value }); + setMapSettings({ + basemap: { + value: basemap.value, + url: basemap.url.replace('{year}', year) + }, + label: label.value + }); } else { setMapSettings({ basemap: { value: basemap.value }, label: label.value }); } diff --git a/app/javascript/components/maps/map/actions.js b/app/javascript/components/maps/map/actions.js index 50d5d74fd6..596457aad3 100644 --- a/app/javascript/components/maps/map/actions.js +++ b/app/javascript/components/maps/map/actions.js @@ -1,8 +1,6 @@ import { createThunkAction, createAction } from 'redux-tools'; -import axios from 'axios'; import { setComponentStateToUrl } from 'utils/stateToUrl'; -import { addToDate } from 'utils/dates'; export const setMapLoading = createAction('setMapLoading'); @@ -17,53 +15,3 @@ export const setMapSettings = createThunkAction( }) ) ); - -export const setLandsatBasemap = createThunkAction( - 'setLandsatBasemap', - ({ basemap, year, zoom }) => dispatch => { - const { url } = basemap; - const landsat = { - key: `GFW__GEE_LANDSAT_BASEMAP_URL_${year}`, - get geeUrl() { - const item = localStorage.getItem(this.key); - if (item) { - const parsed = JSON.parse(item); - return parsed.expires > Date.now() ? parsed.url : null; - } - return null; - }, - set geeUrl(newUrl) { - const value = { - url: newUrl, - expires: addToDate(Date.now(), 1).getTime() - }; - return localStorage.setItem(this.key, JSON.stringify(value)); - }, - get url() { - if (zoom > 11) { - return this.geeUrl; - } - return url && url.replace('{year}', year); - } - }; - if (landsat.geeUrl === null) { - axios - .get(`${process.env.GFW_API}/v1/landsat-tiles/${year}`) - .then(({ data: res }) => { - landsat.geeUrl = res.data.attributes.url; - }); - } - if (landsat.url !== null && landsat.url !== basemap.url) { - dispatch( - setMapSettings({ - basemap: { - year, - key: 'landsat', - url: landsat.url - }, - label: basemap.labelsKey - }) - ); - } - } -); diff --git a/app/javascript/components/maps/map/basemaps-schema.js b/app/javascript/components/maps/map/basemaps-schema.js index 956c622ac1..2e29b7609c 100644 --- a/app/javascript/components/maps/map/basemaps-schema.js +++ b/app/javascript/components/maps/map/basemaps-schema.js @@ -63,7 +63,8 @@ export default { dynamic: true, color: '#0C0045', image: landsatImage, - url: 'https://storage.googleapis.com/landsat-cache/{year}/{z}/{x}/{y}.png', + url: + 'https://production-api.globalforestwatch.org/v2/landsat-tiles/{year}/{z}/{x}/{y}', availableYears: [2017, 2016, 2015, 2014, 2013] } }; diff --git a/app/javascript/components/maps/map/index.js b/app/javascript/components/maps/map/index.js index 58b92fa147..d68f75c177 100644 --- a/app/javascript/components/maps/map/index.js +++ b/app/javascript/components/maps/map/index.js @@ -18,8 +18,7 @@ const actions = { class MapContainer extends PureComponent { static propTypes = { basemap: PropTypes.object, - mapOptions: PropTypes.object, - setLandsatBasemap: PropTypes.func + mapOptions: PropTypes.object }; state = { @@ -34,16 +33,16 @@ class MapContainer extends PureComponent { bbox, geostoreBbox, setMapSettings, - layerBbox, - setLandsatBasemap + layerBbox } = this.props; // update landsat basemap when changing zoom if (basemap.value === 'landsat' && zoom !== prevProps.zoom) { - setLandsatBasemap({ - basemap, - year: basemap.year, - zoom + setMapSettings({ + basemap: { + value: basemap.value, + url: basemap.url.replace('{year}', basemap.year) + } }); } From 06a65c57ba744243c390258d445686cbb11861bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ferna=CC=81ndez=20Rico?= Date: Thu, 14 Feb 2019 18:07:40 +0100 Subject: [PATCH 2/4] Adding year to basemap action --- app/javascript/components/maps/components/basemaps/basemaps.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/components/maps/components/basemaps/basemaps.js b/app/javascript/components/maps/components/basemaps/basemaps.js index 51f418585d..3601dec2bc 100644 --- a/app/javascript/components/maps/components/basemaps/basemaps.js +++ b/app/javascript/components/maps/components/basemaps/basemaps.js @@ -23,6 +23,7 @@ class BasemapsContainer extends React.Component { setMapSettings({ basemap: { value: basemap.value, + year, url: basemap.url.replace('{year}', year) }, label: label.value From 1b99b5d17f4941f91119648809baac97e3a6011f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ferna=CC=81ndez=20Rico?= Date: Fri, 15 Feb 2019 13:26:38 +0100 Subject: [PATCH 3/4] Fixed dropdown issue with year and nonexistent zoom changes --- app/javascript/components/maps/map/index.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/javascript/components/maps/map/index.js b/app/javascript/components/maps/map/index.js index d68f75c177..2aabc490ee 100644 --- a/app/javascript/components/maps/map/index.js +++ b/app/javascript/components/maps/map/index.js @@ -37,11 +37,16 @@ class MapContainer extends PureComponent { } = this.props; // update landsat basemap when changing zoom - if (basemap.value === 'landsat' && zoom !== prevProps.zoom) { + if ( + basemap.value === 'landsat' && + prevProps.mapOptions && + zoom !== prevProps.mapOptions.zoom + ) { setMapSettings({ basemap: { value: basemap.value, - url: basemap.url.replace('{year}', basemap.year) + url: basemap.url.replace('{year}', basemap.year), + year: basemap.year } }); } From eff1789a64f0f72a5e824353150f8a31c89e8b9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ferna=CC=81ndez=20Rico?= Date: Tue, 26 Feb 2019 12:46:52 +0100 Subject: [PATCH 4/4] Removed zoom check in componentDidUpdate, no longer needed (parsed from URL) --- app/javascript/components/maps/map/index.js | 22 --------------------- 1 file changed, 22 deletions(-) diff --git a/app/javascript/components/maps/map/index.js b/app/javascript/components/maps/map/index.js index 2aabc490ee..64abb09039 100644 --- a/app/javascript/components/maps/map/index.js +++ b/app/javascript/components/maps/map/index.js @@ -16,19 +16,12 @@ const actions = { }; class MapContainer extends PureComponent { - static propTypes = { - basemap: PropTypes.object, - mapOptions: PropTypes.object - }; - state = { bbox: null }; componentDidUpdate(prevProps) { const { - basemap, - mapOptions: { zoom }, canBound, bbox, geostoreBbox, @@ -36,21 +29,6 @@ class MapContainer extends PureComponent { layerBbox } = this.props; - // update landsat basemap when changing zoom - if ( - basemap.value === 'landsat' && - prevProps.mapOptions && - zoom !== prevProps.mapOptions.zoom - ) { - setMapSettings({ - basemap: { - value: basemap.value, - url: basemap.url.replace('{year}', basemap.year), - year: basemap.year - } - }); - } - // only set bounding box if action allows it if (canBound && bbox !== prevProps.bbox) { this.setBbox(bbox);