diff --git a/assets/package-lock.json b/assets/package-lock.json index 0587a5b8f2635cbd03cde7bfffa0fbdef25483b9..286692fd5cb18f7f9505a13136f860cb72a5a451 100644 --- a/assets/package-lock.json +++ b/assets/package-lock.json @@ -1017,24 +1017,72 @@ } }, "@rollup/plugin-commonjs": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-14.0.0.tgz", - "integrity": "sha512-+PSmD9ePwTAeU106i9FRdc+Zb3XUWyW26mo5Atr2mk82hor8+nPwkztEjFo8/B1fJKfaQDg9aM2bzQkjhi7zOw==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-15.0.0.tgz", + "integrity": "sha512-8uAdikHqVyrT32w1zB9VhW6uGwGjhKgnDNP4pQJsjdnyF4FgCj6/bmv24c7v2CuKhq32CcyCwRzMPEElaKkn0w==", "dev": true, "requires": { - "@rollup/pluginutils": "^3.0.8", + "@rollup/pluginutils": "^3.1.0", "commondir": "^1.0.1", - "estree-walker": "^1.0.1", - "glob": "^7.1.2", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0" + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" }, "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.1.tgz", + "integrity": "sha512-tF0hv+Yi2Ot1cwj9eYHtxC0jB9bmjacjQs6ZBTj82H8JwUywFuc+7E83NWfNMwHXZc11mjfFcVXPe9gEP4B8dg==", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true }, "resolve": { @@ -1058,15 +1106,14 @@ } }, "@rollup/plugin-node-resolve": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.4.0.tgz", - "integrity": "sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz", + "integrity": "sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", "@types/resolve": "1.17.1", "builtin-modules": "^3.1.0", - "deep-freeze": "^0.0.1", "deepmerge": "^4.2.2", "is-module": "^1.0.0", "resolve": "^1.17.0" @@ -1083,12 +1130,6 @@ "picomatch": "^2.2.2" } }, - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, "builtin-modules": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", @@ -1219,9 +1260,9 @@ "dev": true }, "@types/estree": { - "version": "0.0.45", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.45.tgz", - "integrity": "sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==", + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", "dev": true }, "@types/glob": { @@ -3474,12 +3515,6 @@ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true }, - "deep-freeze": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz", - "integrity": "sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ=", - "dev": true - }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -4070,9 +4105,9 @@ } }, "eslint": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.6.0.tgz", - "integrity": "sha512-QlAManNtqr7sozWm5TF4wIH9gmUm2hE3vNRUvyoYAa4y1l5/jxD/PQStEjBMQtCqZmSep8UxrcecI60hOpe61w==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.7.0.tgz", + "integrity": "sha512-1KUxLzos0ZVsyL81PnRN335nDtQ8/vZUD6uMtWbF+5zDtjKcsklIi78XoE0MVL93QvWTu+E5y44VyyCsOMBrIg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -4380,9 +4415,9 @@ } }, "esri-leaflet": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.4.1.tgz", - "integrity": "sha512-0ukZIhA9dVx8yYe/ahp2yZm7GmUYTxPktXXHBVPBZoe9I00fkhLsEk2dIt1xa7XsCk/gH+Breb9L5lNALC+Niw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-2.5.0.tgz", + "integrity": "sha512-c8rsE4op7sSVGX4/u3SBzbRU7BaR/4oL63+1ReBuUdFFdYMmMZjSkUOsrAOo59Jh8cRM5NB3MiHBCNAlNr/CsQ==", "requires": { "@terraformer/arcgis": "^2.0.7", "tiny-binary-search": "^1.0.3" @@ -7831,9 +7866,9 @@ } }, "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" }, "lodash.debounce": { "version": "4.0.8", @@ -10550,9 +10585,9 @@ } }, "rollup": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.23.0.tgz", - "integrity": "sha512-vLNmZFUGVwrnqNAJ/BvuLk1MtWzu4IuoqsH9UWK5AIdO3rt8/CSiJNvPvCIvfzrbNsqKbNzPAG1V2O4eTe2XZg==", + "version": "2.26.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.26.4.tgz", + "integrity": "sha512-6+qsGuP0MXGd7vlYmk72utm1MrgZj5GfXibGL+cRkKQ9+ZL/BnFThDl0D5bcl7AqlzMjAQXRAwZX1HVm22M/4Q==", "dev": true, "requires": { "fsevents": "~2.1.2" diff --git a/assets/package.json b/assets/package.json index 7aef12ad4b864a5ee8040288e7b2bb4854639d17..d7f5f76c626a741d32b303139af09dee82d060ce 100644 --- a/assets/package.json +++ b/assets/package.json @@ -45,7 +45,7 @@ "devDependencies": { "autoprefixer": "^9.8.6", "concat": "^1.0.3", - "eslint": "^7.6.0", + "eslint": "^7.7.0", "eslint-plugin-jasmine": "^4.1.1", "gulp": "^4.0.2", "gulp-rev-all": "^2.0.3", @@ -67,12 +67,12 @@ "postcss-cli": "^7.1.1", "postcss-csso": "^4.0.0", "postcss-flexbugs-fixes": "^4.2.1", - "rollup": "^2.23.0", + "rollup": "^2.26.4", "@rollup/plugin-buble": "^0.21.3", - "@rollup/plugin-commonjs": "^14.0.0", + "@rollup/plugin-commonjs": "^15.0.0", "rollup-plugin-istanbul": "^2.0.1", "@rollup/plugin-json": "^4.1.0", - "@rollup/plugin-node-resolve": "^8.4.0", + "@rollup/plugin-node-resolve": "^9.0.0", "@rollup/plugin-replace": "^2.3.3", "rollup-plugin-uglify": "^6.0.4", "sass": "^1.26.10", @@ -87,12 +87,12 @@ "d3-simple-slider": "1.8.0", "date-time-format-timezone": "1.0.22", "element-closest": "3.0.2", - "esri-leaflet": "2.4.1", + "esri-leaflet": "2.5.0", "fast-memoize": "2.5.2", "leaflet": "1.6.0", "leaflet.markercluster": "1.4.1", "list.js": "1.5.0", - "lodash": "4.17.19", + "lodash": "4.17.20", "luxon": "1.24.1", "matchmedia-polyfill": "0.3.2", "normalizr": "3.6.0", diff --git a/assets/src/scripts/lib/d3-redux.js b/assets/src/scripts/lib/d3-redux.js index ea5648b43419771af66e4b308c2e2eba04daec8a..a8b221b436685cddc805185d7e38e891a16d2577 100644 --- a/assets/src/scripts/lib/d3-redux.js +++ b/assets/src/scripts/lib/d3-redux.js @@ -9,7 +9,7 @@ import throttle from 'raf-throttle'; * @param {Function} callback - function that will be called when the state store changes. * @param {Array of String} args - args used when executing callback. Note that the state of store will be appended to the list of args */ -export const subscribe = function (store, callback, args) { +export const subscribe = function(store, callback, args) { let currentState = store.getState(); function handleUpdate() { @@ -21,7 +21,7 @@ export const subscribe = function (store, callback, args) { } } - store.subscribe(throttle.default(handleUpdate)); + store.subscribe(throttle(handleUpdate)); }; /** @@ -33,8 +33,8 @@ export const subscribe = function (store, callback, args) { * @param {Function} callback - Callback function * @return {Function} */ -export const connect = function (store, callback) { - return function (selection) { +export const connect = function(store, callback) { + return function(selection) { let args = [selection].concat([].slice.call(arguments, 1)); subscribe(store, callback, args); callback.apply(null, args.concat([store.getState()])); @@ -49,10 +49,10 @@ export const connect = function (store, callback) { * @param {Object} ...args Optional additional arguments to proxy to `func` * @return {Function} D3 callback */ -export const link = function (store, func, selector, ...args) { +export const link = function(store, func, selector, ...args) { let currentOptions = null; let context = null; - return connect(store, function (selection, state) { + return connect(store, function(selection, state) { let nextOptions = selector(state); if (currentOptions !== nextOptions) { currentOptions = nextOptions; @@ -70,9 +70,9 @@ export const link = function (store, func, selector, ...args) { * @param {Function} raf If true, throttle callback with requestAnimationFrame * @return {Function} Unsubscribe function */ -export const listen = function (store, selector, func, raf = true) { +export const listen = function(store, selector, func, raf = true) { let current = selector(store.getState()); - let callback = function () { + let callback = function() { let newData = selector(store.getState()); if (current !== newData) { current = newData; @@ -80,7 +80,7 @@ export const listen = function (store, selector, func, raf = true) { } }; if (raf) { - callback = throttle.default(callback); + callback = throttle(callback); } func(current); return store.subscribe(callback); @@ -92,9 +92,9 @@ export const listen = function (store, selector, func, raf = true) { * @param {Function} initFunc (elem, options) => D3 selection * @param {Function} updateFunc (elem, options) */ -export const initAndUpdate = function (initFunc, updateFunc) { +export const initAndUpdate = function(initFunc, updateFunc) { let node = null; - return function (elem, options) { + return function(elem, options) { if (node === null) { node = initFunc(elem, options); } diff --git a/assets/src/scripts/monitoring-location/components/hydrograph/index.spec.js b/assets/src/scripts/monitoring-location/components/hydrograph/index.spec.js index 61bb9e5026625da470bc8f0c976ac64b8e1ab76b..2636592edc686f24c7eb536158c34168ebc177a2 100644 --- a/assets/src/scripts/monitoring-location/components/hydrograph/index.spec.js +++ b/assets/src/scripts/monitoring-location/components/hydrograph/index.spec.js @@ -267,8 +267,12 @@ describe('monitoring-location/components/hydrograph module', () => { spyOn(ivTimeSeriesDataActions, 'retrieveIVTimeSeries').and.returnValue(function() { return Promise.resolve({}); }); - spyOn(ivTimeSeriesDataActions, 'retrieveExtendedIVTimeSeries').and.callThrough(); - spyOn(ivTimeSeriesDataActions, 'retrieveUserRequestedIVDataForDateRange').and.callThrough(); + spyOn(ivTimeSeriesDataActions, 'retrieveExtendedIVTimeSeries').and.returnValue(function() { + return Promise.resolve({}); + }); + spyOn(ivTimeSeriesDataActions, 'retrieveUserRequestedIVDataForDateRange').and.returnValue(function() { + return Promise.resolve({}); + }); }); it('Expect to not retrieve additional time series if not indicated', (done) => { @@ -306,7 +310,7 @@ describe('monitoring-location/components/hydrograph module', () => { }); window.requestAnimationFrame(() => { - expect(ivTimeSeriesDataActions.retrieveExtendedIVTimeSeries).not. toHaveBeenCalled(); + expect(ivTimeSeriesDataActions.retrieveExtendedIVTimeSeries).not.toHaveBeenCalled(); expect(ivTimeSeriesDataActions.retrieveUserRequestedIVDataForDateRange).not.toHaveBeenCalled(); done(); }); @@ -341,9 +345,15 @@ describe('monitoring-location/components/hydrograph module', () => { loadingIVTSKeys: [] } }); - spyOn(ivTimeSeriesDataActions, 'retrieveIVTimeSeries').and.callThrough(); - spyOn(ivTimeSeriesDataActions, 'retrieveCustomTimePeriodIVTimeSeries').and.callThrough(); - spyOn(ivTimeSeriesDataActions, 'retrieveUserRequestedIVDataForDateRange'); + spyOn(ivTimeSeriesDataActions, 'retrieveIVTimeSeries').and.returnValue(function() { + return Promise.resolve({}); + }); + spyOn(ivTimeSeriesDataActions, 'retrieveCustomTimePeriodIVTimeSeries').and.returnValue(function() { + return Promise.resolve({}); + }); + spyOn(ivTimeSeriesDataActions, 'retrieveUserRequestedIVDataForDateRange').and.returnValue(function() { + return Promise.resolve({}); + }); }); it('should retrieve custom time period if period is specificed', (done) => { @@ -418,10 +428,10 @@ describe('monitoring-location/components/hydrograph module', () => { describe('graphNode contains the expected elements when no IV time series has been retrieved and showOnlyGraph is false', () => { let store; beforeEach((done) => { - spyOn(floodDataActions, 'retrieveWaterwatchData').and.returnValue(function () { + spyOn(floodDataActions, 'retrieveWaterwatchData').and.returnValue(function() { return Promise.resolve({}); }); - spyOn(ivTimeSeriesDataActions, 'retrieveIVTimeSeries').and.returnValue(function () { + spyOn(ivTimeSeriesDataActions, 'retrieveIVTimeSeries').and.returnValue(function() { return Promise.resolve({}); }); store = configureStore({ diff --git a/assets/src/styles/network.scss b/assets/src/styles/network.scss index 44eb276534eef4e2f2b21588b927f16efba371d0..eaa37120093776dd323bb13ca4213a165c955d49 100644 --- a/assets/src/styles/network.scss +++ b/assets/src/styles/network.scss @@ -16,7 +16,7 @@ $fa-font-path: './fonts' !default; .wdfn-component { &[data-component='network'] { @import './components/network'; - margin-bottom: 1em; + margin-bottom: 1em; } } @@ -24,50 +24,50 @@ $fa-font-path: './fonts' !default; * If it gets addressed this can be removed. */ .usa-sr-only { - overflow: hidden; + overflow: hidden; } body { - #main-content { - margin-top: 1em; - margin-bottom: 1em; - padding: 0 1em; - } + #main-content { + margin-top: 1em; + margin-bottom: 1em; + padding: 0 1em; + } - .content-container { - margin-left: auto; - margin-right: auto; - @include u-maxw('desktop'); - } + .content-container { + margin-left: auto; + margin-right: auto; + @include u-maxw('desktop'); + } - .cooperator_logo { - max-height: 150px; - } + .cooperator_logo { + max-height: 150px; + } - .bold-label { - font-size: large; - font-weight: bold; - } + .bold-label { + font-size: large; + font-weight: bold; + } - #contact-name{ - margin-right: 0.5em; - } + #contact-name { + margin-right: 0.5em; + } - #contact-email { - margin-left: 0.25em; - } + #contact-email { + margin-left: 0.25em; + } - .cooperator-row { - @include grid-col(12); + .cooperator-row { + @include grid-col(12); - @include at-media(tablet) { - @include grid-col(6) - } + @include at-media(tablet) { + @include grid-col(6); + } - @include at-media(desktop) { - @include grid-col(4); - } - } + @include at-media(desktop) { + @include grid-col(4); + } + } - @import './partials/alerts'; + @import './partials/alerts'; } diff --git a/wdfn-server/requirements-cloud-prod.txt b/wdfn-server/requirements-cloud-prod.txt index 4bf64a62c4aed35a5d7edfb9379d754f232aaea7..7b9a575c7527eff280c33487019b84ac550cde69 100644 --- a/wdfn-server/requirements-cloud-prod.txt +++ b/wdfn-server/requirements-cloud-prod.txt @@ -1,2 +1,2 @@ gunicorn==20.0.4 -whitenoise==5.1.0 \ No newline at end of file +whitenoise==5.2.0 \ No newline at end of file