Skip to content

Commit daaa8a4

Browse files
Merge pull request #6382 from nasa-gibs/UAT-v4.85.0
UAT-v4.85.0 to Release
2 parents edb7696 + 8caf1b4 commit daaa8a4

File tree

197 files changed

+1733
-1224
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

197 files changed

+1733
-1224
lines changed

config/default/common/brand/about/welcome.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
target="_blank" rel="noopener noreferrer">Release
33
Notes</a>)</span></h1>
44
<div class="right">
5-
<div class="caption"><a href="https://wiki.earthdata.nasa.gov/pages/viewrecentblogposts.action?key=GIBS"
5+
<div class="caption"><a href="https://www.earthdata.nasa.gov/news?field_tools_target_id[21910]=21910&items_per_page=8"
66
target="_blank" rel="noopener noreferrer"> What's new in @OFFICIAL_NAME@! </a></div>
77
</div>
88
<p>This <a href="https://github.com/nasa-gibs/worldview" target="_blank" rel="noopener noreferrer">open source

eslint_log.txt

Whitespace-only changes.

package-lock.json

Lines changed: 888 additions & 486 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "worldview",
3-
"version": "4.84.0",
3+
"version": "4.85.0",
44
"description": "Interactive interface for browsing full-resolution, global satellite imagery",
55
"keywords": [
66
"NASA",
@@ -84,21 +84,21 @@
8484
"upload": "node tasks/util/upload.js"
8585
},
8686
"devDependencies": {
87-
"@babel/core": "^7.28.5",
88-
"@babel/eslint-parser": "^7.28.5",
89-
"@babel/plugin-transform-class-properties": "^7.27.1",
90-
"@babel/plugin-transform-private-methods": "^7.27.1",
91-
"@babel/preset-env": "^7.28.5",
87+
"@babel/core": "^7.28.6",
88+
"@babel/eslint-parser": "^7.28.6",
89+
"@babel/plugin-transform-class-properties": "^7.28.6",
90+
"@babel/plugin-transform-private-methods": "^7.28.6",
91+
"@babel/preset-env": "^7.28.6",
9292
"@babel/preset-react": "^7.28.5",
93-
"@playwright/test": "^1.57.0",
93+
"@playwright/test": "^1.58.1",
9494
"@pmmmwh/react-refresh-webpack-plugin": "^0.6.2",
9595
"ajv": "^8.17.1",
9696
"autoprefixer": "^10.4.23",
9797
"babel-loader": "^10.0.0",
98-
"cheerio": "^1.1.2",
98+
"cheerio": "^1.2.0",
9999
"clean-webpack-plugin": "^4.0.0",
100100
"cross-env": "^10.1.0",
101-
"css-loader": "^7.1.2",
101+
"css-loader": "^7.1.3",
102102
"css-minimizer-webpack-plugin": "^7.0.4",
103103
"css-url-relative-plugin": "^1.1.0",
104104
"cssnano": "^7.1.1",
@@ -109,7 +109,7 @@
109109
"eslint-plugin-import": "^2.32.0",
110110
"eslint-plugin-jest": "^29.12.1",
111111
"eslint-plugin-jsx-a11y": "^6.10.2",
112-
"eslint-plugin-n": "^17.23.1",
112+
"eslint-plugin-n": "^17.23.2",
113113
"eslint-plugin-no-storage": "^1.0.2",
114114
"eslint-plugin-node": "^11.1.0",
115115
"eslint-plugin-promise": "^7.2.1",
@@ -121,7 +121,7 @@
121121
"jest-canvas-mock": "^2.5.2",
122122
"jest-environment-jsdom": "^30.2.0",
123123
"jest-fetch-mock": "^3.0.3",
124-
"mini-css-extract-plugin": "^2.9.4",
124+
"mini-css-extract-plugin": "^2.10.0",
125125
"node-dir": "^0.1.17",
126126
"node-fetch": "^2.6.9",
127127
"node-ssh": "^13.2.1",
@@ -133,21 +133,21 @@
133133
"react-test-renderer": "^18.3.1",
134134
"redux-mock-store": "^1.5.5",
135135
"run-script-os": "^1.1.6",
136-
"sass": "^1.97.2",
136+
"sass": "^1.97.3",
137137
"sass-loader": "^16.0.6",
138138
"shelljs": "^0.10.0",
139139
"showdown": "^2.1.0",
140140
"stylelint": "^16.26.0",
141141
"stylelint-config-standard-scss": "^16.0.0",
142142
"stylelint-high-performance-animation": "^1.11.0",
143-
"tar": "^7.5.2",
143+
"tar": "^7.5.7",
144144
"terser-webpack-plugin": "^5.3.16",
145145
"uuid": "^13.0.0",
146146
"webpack": "^5.104.1",
147-
"webpack-bundle-analyzer": "^5.1.1",
147+
"webpack-bundle-analyzer": "^5.2.0",
148148
"webpack-cli": "^6.0.1",
149149
"webpack-dev-middleware": "^7.4.5",
150-
"webpack-dev-server": "^5.2.2",
150+
"webpack-dev-server": "^5.2.3",
151151
"xml-js": "^1.6.11",
152152
"xml2js": "^0.6.2",
153153
"yargs": "^18.0.0"
@@ -162,7 +162,7 @@
162162
"@fortawesome/react-fontawesome": "^3.1.1",
163163
"@khanisak/temperature-converter": "^2.0.1",
164164
"@reduxjs/toolkit": "^2.11.2",
165-
"axios": "^1.13.2",
165+
"axios": "^1.13.4",
166166
"bluebird": "3.7.2",
167167
"bootstrap": "^5.3.8",
168168
"cachai": "^1.0.2",
@@ -179,7 +179,7 @@
179179
"imagesloaded": "^5.0.0",
180180
"immutability-helper": "^3.1.1",
181181
"jsdom-worker": "^0.3.0",
182-
"lodash": "^4.17.21",
182+
"lodash": "^4.17.23",
183183
"masonry-layout": "^4.2.2",
184184
"moment": "^2.30.1",
185185
"moment-locales-webpack-plugin": "^1.2.0",
@@ -203,7 +203,7 @@
203203
"react-swipe-to-delete-component": "1.0.5",
204204
"react-visibility-sensor": "^5.1.1",
205205
"reactstrap": "^9.2.3",
206-
"recharts": "^3.6.0",
206+
"recharts": "^3.7.0",
207207
"redux": "^5.0.1",
208208
"redux-location-state": "^2.8.2",
209209
"redux-logger": "^3.0.6",

web/.eslintrc

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,6 @@
8888
"no-nested-ternary": "off", // 164 errors across 40 files
8989
"no-shadow": "warn", // 110 errors across 40 files
9090
"max-len": "error",
91-
"consistent-return": "off", // 95 errors across 58 files
9291
"no-underscore-dangle": "error",
9392
"no-param-reassign": [ // 198 errors across 46 files
9493
"warn",
@@ -153,9 +152,7 @@
153152
}
154153
}
155154
],
156-
"react/forbid-prop-types": "off", // 411 errors across 139 files
157155
"react/require-default-props": "off", // 1644 errors across > 80 files
158-
"class-methods-use-this": "warn", // 15 errors across 13 files
159156
"react/no-unused-class-component-methods": "error",
160157
"react/no-unknown-property": "error",
161158
"react/jsx-no-useless-fragment": "error",

web/js/app.js

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -52,17 +52,22 @@ require('@elastic/react-search-ui-views/lib/styles/styles.css');
5252
const { events } = util;
5353

5454
class App extends React.Component {
55+
// https://css-tricks.com/the-trick-to-viewport-units-on-mobile/
56+
static setVhCSSProperty() {
57+
const vh = window.innerHeight * 0.01;
58+
document.documentElement.style.setProperty('--vh', `${vh}px`);
59+
}
60+
5561
constructor(props) {
5662
super(props);
5763
this.onload();
5864
this.handleKeyPress = this.handleKeyPress.bind(this);
59-
this.setVhCSSProperty = this.setVhCSSProperty.bind(this);
6065
}
6166

6267
componentDidMount() {
6368
document.addEventListener('keydown', this.handleKeyPress);
64-
window.addEventListener('resize', this.setVhCSSProperty);
65-
window.addEventListener('orientationchange', this.setVhCSSProperty);
69+
window.addEventListener('resize', App.setVhCSSProperty);
70+
window.addEventListener('orientationchange', App.setVhCSSProperty);
6671
}
6772

6873
componentDidUpdate(prevProps) {
@@ -80,17 +85,10 @@ class App extends React.Component {
8085

8186
componentWillUnmount() {
8287
document.removeEventListener('keydown', this.handleKeyPress);
83-
window.removeEventListener('resize', this.setVhCSSProperty);
84-
window.removeEventListener('orientationchange', this.setVhCSSProperty);
88+
window.removeEventListener('resize', App.setVhCSSProperty);
89+
window.removeEventListener('orientationchange', App.setVhCSSProperty);
8590
}
8691

87-
88-
// https://css-tricks.com/the-trick-to-viewport-units-on-mobile/
89-
setVhCSSProperty = () => {
90-
const vh = window.innerHeight * 0.01;
91-
document.documentElement.style.setProperty('--vh', `${vh}px`);
92-
};
93-
9492
handleKeyPress(event) {
9593
const { keyPressAction } = this.props;
9694
const ctrlOrCmdKey = event.ctrlKey || event.metaKey;
@@ -267,12 +265,12 @@ App.propTypes = {
267265
locationKey: PropTypes.string,
268266
modalId: PropTypes.string,
269267
notificationClick: PropTypes.func,
270-
notifications: PropTypes.object,
268+
notifications: PropTypes.oneOfType([PropTypes.object, PropTypes.oneOf(['null'])]),
271269
numberOutagesUnseen: PropTypes.number,
272-
parameters: PropTypes.object,
270+
parameters: PropTypes.oneOfType([PropTypes.object, PropTypes.oneOf(['null'])]),
273271
setScreenInfoAction: PropTypes.func,
274272
hideNotificationsPopup: PropTypes.bool,
275-
config: PropTypes.object,
273+
config: PropTypes.oneOfType([PropTypes.object, PropTypes.oneOf(['null'])]),
276274
};
277275

278276
App.defaultProps = {

web/js/components/animation-widget/gif-button.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,8 +192,8 @@ export default connect(
192192
)(GifButton);
193193

194194
GifButton.propTypes = {
195-
activePalettes: PropTypes.object,
196-
visibleLayersForProj: PropTypes.array,
195+
activePalettes: PropTypes.oneOfType([PropTypes.object, PropTypes.oneOf(['null'])]),
196+
visibleLayersForProj: PropTypes.oneOfType([PropTypes.array, PropTypes.oneOf(['null'])]),
197197
hasCustomPalettes: PropTypes.bool,
198198
hasNonDownloadableLayer: PropTypes.bool,
199199
isGifActive: PropTypes.bool,

web/js/components/animation-widget/gif-panel.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,14 +118,14 @@ GifPanel.propTypes = {
118118
endDate: PropTypes.string,
119119
firstLabel: PropTypes.string,
120120
increment: PropTypes.string,
121-
lonlats: PropTypes.array,
121+
lonlats: PropTypes.oneOfType([PropTypes.array, PropTypes.oneOf(['null'])]),
122122
numberOfFrames: PropTypes.number,
123123
onCheck: PropTypes.func,
124124
onClick: PropTypes.func,
125125
onDownloadClick: PropTypes.func,
126126
projId: PropTypes.string,
127127
resolution: PropTypes.string,
128-
resolutions: PropTypes.object,
128+
resolutions: PropTypes.oneOfType([PropTypes.object, PropTypes.oneOf(['null'])]),
129129
showDates: PropTypes.bool,
130130
speed: PropTypes.number,
131131
startDate: PropTypes.string,

web/js/components/animation-widget/gif-post-creation.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,10 +140,10 @@ export default class GifResults extends Component {
140140
}
141141

142142
GifResults.propTypes = {
143-
boundaries: PropTypes.object,
144-
closeBtn: PropTypes.object,
143+
boundaries: PropTypes.oneOfType([PropTypes.object, PropTypes.oneOf(['null'])]),
144+
closeBtn: PropTypes.oneOfType([PropTypes.object, PropTypes.oneOf(['null'])]),
145145
endDate: PropTypes.string,
146-
gifObject: PropTypes.object,
146+
gifObject: PropTypes.oneOfType([PropTypes.object, PropTypes.oneOf(['null'])]),
147147
increment: PropTypes.string,
148148
onClose: PropTypes.func,
149149
screenHeight: PropTypes.number,

web/js/components/animation-widget/play-queue.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -207,15 +207,15 @@ class PlayQueue extends React.Component {
207207
const restartLoop = loopStart && currentDate.getTime() === startDate.getTime();
208208

209209
if ((isAnimating || this.hasPlayStarted) && !loopStart) {
210-
return;
210+
return true;
211211
}
212212
if (this.isPreloadSufficient() || restartLoop) {
213-
if (this.isBetweenSteps) return;
213+
if (this.isBetweenSteps) return true;
214214
// console.debug('Started: ', Date.now());
215215
this.hasPlayStarted = true;
216216
return this.play();
217217
}
218-
this.checkQueue();
218+
return this.checkQueue();
219219
};
220220

221221
checkShouldLoop() {
@@ -313,7 +313,7 @@ class PlayQueue extends React.Component {
313313
this.fetchTimes.push(fetchTime);
314314
this.setState({ loadedItems: loadedItems += 1 });
315315

316-
if (!this.mounted) return;
316+
if (!this.mounted) return true;
317317
this.bufferObject[strDate] = strDate;
318318
delete this.inQueueObject[strDate];
319319
const currentBufferSize = util.objectLength(this.bufferObject);
@@ -401,19 +401,19 @@ class PlayQueue extends React.Component {
401401
if (nextDate > endDate) {
402402
this.abortController.abort();
403403
this.checkShouldLoop();
404-
return;
404+
return true;
405405
}
406406

407407
// Playback caught up with buffer :(
408408
if (!this.bufferObject[nextDateStr]) {
409409
this.stopPlaying();
410410
this.checkQueue();
411-
return;
411+
return true;
412412
}
413413
if (!isPlaying || !this.mounted) {
414414
this.stopPlaying();
415415
}
416-
this.checkQueue();
416+
return this.checkQueue();
417417
};
418418
const animIntervalMS = speed === 0.5 ? 2000 : 1000 / speed;
419419
this.animationInterval(animIntervalMS, player);
@@ -464,23 +464,23 @@ class PlayQueue extends React.Component {
464464
}
465465

466466
PlayQueue.propTypes = {
467-
endDate: PropTypes.object.isRequired,
467+
endDate: PropTypes.oneOfType([PropTypes.object, PropTypes.oneOf(['null'])]),
468468
isMobile: PropTypes.bool,
469469
isPlaying: PropTypes.bool.isRequired,
470470
promiseImageryForTime: PropTypes.func.isRequired,
471471
selectDate: PropTypes.func.isRequired,
472472
speed: PropTypes.number.isRequired,
473-
startDate: PropTypes.object.isRequired,
473+
startDate: PropTypes.oneOfType([PropTypes.object, PropTypes.oneOf(['null'])]),
474474
togglePlaying: PropTypes.func.isRequired,
475-
currentDate: PropTypes.object,
475+
currentDate: PropTypes.oneOfType([PropTypes.object, PropTypes.oneOf(['null'])]),
476476
delta: PropTypes.number,
477477
interval: PropTypes.string,
478478
isLoopActive: PropTypes.bool,
479479
onClose: PropTypes.func,
480480
numberOfFrames: PropTypes.number,
481-
snappedCurrentDate: PropTypes.object,
481+
snappedCurrentDate: PropTypes.oneOfType([PropTypes.object, PropTypes.oneOf(['null'])]),
482482
isKioskModeActive: PropTypes.bool,
483-
map: PropTypes.object,
483+
map: PropTypes.oneOfType([PropTypes.object, PropTypes.oneOf(['null'])]),
484484
};
485485

486486
export default PlayQueue;

0 commit comments

Comments
 (0)