Skip to content

Commit cfeb331

Browse files
authored
Merge pull request #903 from NASA-IMPACT/develop
[prod] Deploy to production
2 parents e2d8fd4 + 9dc86fb commit cfeb331

File tree

7 files changed

+139
-14
lines changed

7 files changed

+139
-14
lines changed

.env

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ API_RASTER_ENDPOINT='https://openveda.cloud/api/raster'
1212

1313
# Endpoint for the STAC server. No trailing slash.
1414
API_STAC_ENDPOINT='https://openveda.cloud/api/stac'
15-
API_TITILER_MULTIDIM_ENDPOINT='https://staging.openveda.cloud/api/multidim/WebMercatorQuad/tilejson.json'
15+
16+
API_TITILER_MULTIDIM_ENDPOINT='https://staging.openveda.cloud/api/titiler-multidim/WebMercatorQuad/tilejson.json'
17+
API_CMR_ENDPOINT='https://staging.openveda.cloud/api/titiler-cmr'
1618

1719
MAPBOX_STYLE_URL='mapbox://styles/covid-nasa/ckb01h6f10bn81iqg98ne0i2y'
1820

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
// @ts-ignore
2+
import { atomWithUrlValueStability } from '$veda-ui-scripts/utils/params-location-atom/atom-with-url-value-stability';
3+
4+
const defaultToolState = {
5+
selectedEventId: null,
6+
windLayerType: null,
7+
show3DMap: false,
8+
showPerimeterNrt: true,
9+
showFireline: false,
10+
showNewFirepix: false,
11+
viewMode: 'explorer',
12+
timeRange: {
13+
start: new Date(Date.now() - 60 * 24 * 60 * 60 * 1000),
14+
end: new Date(),
15+
},
16+
viewState: {
17+
longitude: -95.7129,
18+
latitude: 37.0902,
19+
zoom: 3,
20+
pitch: 0,
21+
bearing: 0,
22+
padding: {
23+
top: undefined,
24+
bottom: undefined,
25+
left: undefined,
26+
right: undefined,
27+
},
28+
},
29+
};
30+
31+
export const toolStateAtom = atomWithUrlValueStability<any>({
32+
initialValue: defaultToolState,
33+
urlParam: 'fireEventExplorer',
34+
hydrate: (serialized: string): any => {
35+
try {
36+
const parsed = JSON.parse(serialized);
37+
return {
38+
...parsed,
39+
timeRange: {
40+
start: new Date(parsed.timeRange?.start || defaultToolState.timeRange.start),
41+
end: new Date(parsed.timeRange?.end || defaultToolState.timeRange.end),
42+
},
43+
viewState: {
44+
longitude: parsed.viewState?.longitude ?? defaultToolState.viewState.longitude,
45+
latitude: parsed.viewState?.latitude ?? defaultToolState.viewState.latitude,
46+
zoom: parsed.viewState?.zoom ?? defaultToolState.viewState.zoom,
47+
pitch: parsed.viewState?.pitch ?? defaultToolState.viewState.pitch,
48+
bearing: parsed.viewState?.bearing ?? defaultToolState.viewState.bearing,
49+
padding: {
50+
top: parsed.viewState?.padding?.top ?? undefined,
51+
bottom: parsed.viewState?.padding?.bottom ?? undefined,
52+
left: parsed.viewState?.padding?.left ?? undefined,
53+
right: parsed.viewState?.padding?.right ?? undefined,
54+
},
55+
},
56+
};
57+
} catch (error) {
58+
console.warn('Failed to parse tool state from URL:', error);
59+
return defaultToolState;
60+
}
61+
},
62+
dehydrate: (value: any): string => {
63+
try {
64+
const serializable = {
65+
...value,
66+
timeRange: {
67+
start: value.timeRange.start.toISOString(),
68+
end: value.timeRange.end.toISOString(),
69+
},
70+
viewState: {
71+
longitude: value.viewState?.longitude,
72+
latitude: value.viewState?.latitude,
73+
zoom: value.viewState?.zoom,
74+
pitch: value.viewState?.pitch,
75+
bearing: value.viewState?.bearing,
76+
padding: value.viewState?.padding,
77+
},
78+
};
79+
80+
return JSON.stringify(serializable);
81+
} catch (error) {
82+
console.warn('Failed to serialize tool state:', error);
83+
return '';
84+
}
85+
},
86+
});

custom-pages/wildfire-explorer/component.tsx

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,40 @@
1-
import React, { useEffect } from "react";
2-
// @ts-ignore Types are not available for this package yet
3-
import { WildfireExplorer } from '@dsio/wildfire-explorer';
1+
import React, { useEffect, useCallback } from "react";
2+
import { WildfireExplorer, useToolState } from '@dsio/wildfire-explorer';
43
import '@dsio/wildfire-explorer/dist/wildfire-explorer.css';
4+
import { toolStateAtom } from "./atoms/toolStateAtom";
5+
// @ts-ignore
6+
import { useAtom } from '$veda-ui/jotai';
7+
import { debounce } from 'lodash';
8+
59
import '../../styles/_custom.scss';
610

711
export default function Component() {
12+
const { state: toolState, setState: setToolState } = useToolState();
13+
const [urlState, setUrlState] = useAtom(toolStateAtom);
14+
15+
const debouncedSetUrlState = useCallback(
16+
debounce((state) => {
17+
setUrlState({
18+
...state,
19+
viewState: state.viewStateForUrl,
20+
});
21+
}, 500),
22+
[setUrlState]
23+
);
24+
25+
useEffect(() => {
26+
if (urlState && Object.keys(urlState).length > 0) {
27+
setToolState({
28+
...urlState,
29+
viewStateForUrl: urlState.viewState,
30+
});
31+
}
32+
}, []);
33+
34+
useEffect(() => {
35+
debouncedSetUrlState(toolState);
36+
}, [toolState, debouncedSetUrlState]);
37+
838
useEffect(() => {
939
// We're conditionally injecting Google Tag Manager here only for this custom tool page,
1040
// and this does not interfere with the GTM code on other pages.
@@ -50,4 +80,4 @@ export default function Component() {
5080
/>
5181
</div>
5282
);
53-
}
83+
}

datasets/GPM_3IMERGDF.data.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,10 @@ layers:
4242
backend: xarray
4343
legend:
4444
unit:
45-
label:
45+
label: "mm/hr"
4646
type: gradient
47-
min: "0 mm/hr"
48-
max: "46 mm/hr"
47+
min: 0
48+
max: 46
4949
stops:
5050
[
5151
"#f7fcf0",

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,12 @@
3535
"stream-browserify": "^3.0.0"
3636
},
3737
"dependencies": {
38-
"@dsio/wildfire-explorer": "0.4.6",
38+
"@dsio/wildfire-explorer": "0.4.9",
3939
"@parcel/transformer-sass": "^2.13.3",
4040
"@trussworks/react-uswds": "^9.1.0",
4141
"@uswds/uswds": "^3.8.1",
4242
"autoprefixer": "^10.4.19",
43+
"lodash": "^4.17.21",
4344
"postcss": "^8.5.2",
4445
"postcss-import": "^16.1.0",
4546
"postcss-url": "^10.1.3",

yarn.lock

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,10 @@
7373
dependencies:
7474
tslib "^2.0.0"
7575

76-
"@dsio/wildfire-explorer@0.4.5":
77-
version "0.4.5"
78-
resolved "https://registry.yarnpkg.com/@dsio/wildfire-explorer/-/wildfire-explorer-0.4.5.tgz#0ce5eb30f369fdcab001a368329e6c5c1f9a7d3b"
79-
integrity sha512-CL7uwdheamgRaaBylriz5RKEQJp6Dchun1NTlH5eIx+4gyUghpYKk/ZlWcj+XE8ZHUy5B3Kpok5jGobDBfHtSA==
76+
"@dsio/wildfire-explorer@0.4.9":
77+
version "0.4.9"
78+
resolved "https://registry.yarnpkg.com/@dsio/wildfire-explorer/-/wildfire-explorer-0.4.9.tgz#27859eb5862e3dfbaa9375253ddaaa7ebd94a8f5"
79+
integrity sha512-od6L8Jx0OnYu7Xj3NQ3gQoRDxdT2aPu76xBT1C0fAdL4EIq72CRv9Ho4NodTHjunyqJzNfDSe3fF0Rd9Ijzt1g==
8080
dependencies:
8181
"@deck.gl/extensions" "^9.1.4"
8282
"@deck.gl/react" "^9.1.4"
@@ -110,6 +110,7 @@
110110
sass "^1.85.1"
111111
weatherlayers-gl "^2025.3.0"
112112
webm-writer "^1.0.0"
113+
zustand "^5.0.6"
113114

114115
"@emotion/is-prop-valid@1.2.1":
115116
version "1.2.1"
@@ -3675,3 +3676,8 @@ xxhashjs@~0.2.2:
36753676
integrity sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==
36763677
dependencies:
36773678
cuint "^0.2.2"
3679+
3680+
zustand@^5.0.6:
3681+
version "5.0.6"
3682+
resolved "https://registry.yarnpkg.com/zustand/-/zustand-5.0.6.tgz#a2da43d8dc3d31e314279e5baec06297bea70a5c"
3683+
integrity sha512-ihAqNeUVhe0MAD+X8M5UzqyZ9k3FFZLBTtqo6JLPwV53cbRB/mJwBI0PxcIgqhBBHlEs8G45OTDTMq3gNcLq3A==

0 commit comments

Comments
 (0)