From 6c763334fa7e53789f6abfa8137d33284bf876f0 Mon Sep 17 00:00:00 2001
From: Daniel Naab <dnaab@usgs.gov>
Date: Thu, 31 May 2018 11:04:52 -0500
Subject: [PATCH] Remove usage of Set class in favor of D3 version. Fixes
 issues with spread operator and removes need for polyfill.

---
 .../src/scripts/components/hydrograph/drawingData.js   |  3 ++-
 assets/src/scripts/components/hydrograph/legend.js     |  5 +++--
 assets/src/scripts/components/hydrograph/tooltip.js    | 10 ++++------
 assets/src/scripts/utils.js                            |  2 +-
 4 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/assets/src/scripts/components/hydrograph/drawingData.js b/assets/src/scripts/components/hydrograph/drawingData.js
index ab7dfd2c6..6393cf61b 100644
--- a/assets/src/scripts/components/hydrograph/drawingData.js
+++ b/assets/src/scripts/components/hydrograph/drawingData.js
@@ -1,3 +1,4 @@
+import { set } from 'd3-collection';
 import memoize from 'fast-memoize';
 import find from 'lodash/find';
 import { DateTime } from 'luxon';
@@ -287,7 +288,7 @@ export const pointsTableDataSelector = memoize(tsKey => createSelector(
 const getLineClasses = function(pt) {
     let dataMask = null;
     if (pt.value === null) {
-        let qualifiers = new Set(pt.qualifiers.map(q => q.toLowerCase()));
+        let qualifiers = set(pt.qualifiers.map(q => q.toLowerCase()));
 
         // current business rules specify that a particular data point
         // will only have at most one masking qualifier
diff --git a/assets/src/scripts/components/hydrograph/legend.js b/assets/src/scripts/components/hydrograph/legend.js
index 5ff49d3d8..9493b12a1 100644
--- a/assets/src/scripts/components/hydrograph/legend.js
+++ b/assets/src/scripts/components/hydrograph/legend.js
@@ -1,7 +1,8 @@
 // functions to facilitate legend creation for a d3 plot
+import { set } from 'd3-collection';
 import memoize from 'fast-memoize';
-
 import { createSelector } from 'reselect';
+
 import { CIRCLE_RADIUS } from './layout';
 import { defineLineMarker, defineTextOnlyMarker, defineRectangleMarker } from './markers';
 import { currentVariableLineSegmentsSelector, HASH_ID, MASK_DESC } from './drawingData';
@@ -184,7 +185,7 @@ const uniqueClassesSelector = memoize(tsKey => createSelector(
             default: classes.some((cls) => !cls.approved && !cls.estimated && !cls.dataMask),
             approved: classes.some((cls) => cls.approved),
             estimated: classes.some((cls) => cls.estimated),
-            dataMasks: new Set(classes.map((cls) => cls.dataMask).filter((mask) => {
+            dataMasks: set(classes.map((cls) => cls.dataMask).filter((mask) => {
                 return mask;
             }))
         };
diff --git a/assets/src/scripts/components/hydrograph/tooltip.js b/assets/src/scripts/components/hydrograph/tooltip.js
index abe0bb8cc..c7c616da7 100644
--- a/assets/src/scripts/components/hydrograph/tooltip.js
+++ b/assets/src/scripts/components/hydrograph/tooltip.js
@@ -1,4 +1,4 @@
-
+import { set } from 'd3-collection';
 import { mouse, select } from 'd3-selection';
 import { transition } from 'd3-transition';
 import memoize from 'fast-memoize';
@@ -75,11 +75,9 @@ const getTooltipText = function(datum, qualifiers, unitCode, ianaTimeZone) {
     let label = '';
     if (datum && qualifiers) {
         let valueStr = datum.value === null ? ' ' : `${datum.value} ${unitCode}`;
-
-        const maskKeys = new Set(Object.keys(MASK_DESC));
-        const qualiferKeysLower = new Set(datum.qualifiers.map(x => x.toLowerCase()));
-        const maskKeyIntersect = [...qualiferKeysLower].filter(x => maskKeys.has(x));
-
+        const maskKeys = set(Object.keys(MASK_DESC));
+        const qualiferKeysLower = set(datum.qualifiers.map(x => x.toLowerCase()));
+        const maskKeyIntersect = [...qualiferKeysLower.values()].filter(x => maskKeys.has(x));
         if (maskKeyIntersect.length) {
             // a data point will have at most one masking qualifier
             valueStr = MASK_DESC[[maskKeyIntersect][0]];
diff --git a/assets/src/scripts/utils.js b/assets/src/scripts/utils.js
index e975fea40..2195326af 100644
--- a/assets/src/scripts/utils.js
+++ b/assets/src/scripts/utils.js
@@ -70,7 +70,7 @@ export const deltaDays = function (date1, date2) {
  */
 export const setEquality = function (set1, set2) {
     let sizeEqual = set1.size === set2.size;
-    let itemsEqual = [...set1].every(x => {
+    let itemsEqual = Array.from(set1).every(x => {
         return set2.has(x);
     });
     return sizeEqual && itemsEqual;
-- 
GitLab