From 42fd289d436ec67c2ca25647e6b672958042a94b Mon Sep 17 00:00:00 2001
From: Darius Williams <dswilliams@contractor.usgs.gov>
Date: Thu, 30 Jun 2022 16:14:20 -0500
Subject: [PATCH] EoD

---
 .../daily-value-hydrograph/graph-controls.js  |  2 --
 .../graph-controls.test.js                    |  3 --
 .../selectors/scales.js                       | 28 ++++++++++---------
 .../daily-value-time-series-selector.js       | 13 +++++++++
 .../store/daily-value-time-series.js          | 21 +-------------
 .../store/daily-value-time-series.test.js     |  8 ------
 6 files changed, 29 insertions(+), 46 deletions(-)

diff --git a/assets/src/scripts/monitoring-location/components/daily-value-hydrograph/graph-controls.js b/assets/src/scripts/monitoring-location/components/daily-value-hydrograph/graph-controls.js
index 4c72e8907..80037e6fd 100644
--- a/assets/src/scripts/monitoring-location/components/daily-value-hydrograph/graph-controls.js
+++ b/assets/src/scripts/monitoring-location/components/daily-value-hydrograph/graph-controls.js
@@ -13,7 +13,6 @@ import {
 const drawDVTimeSeriesSelection = function(container, store, monitoringLocationId, initialParameterCode) {
     const availableTimeSeries = getAvailableGWDVTimeSeries(store.getState());
     const availableParameterCodes = new Set(availableTimeSeries.map(ts => ts.parameterCode));
-    store.dispatch(Actions.setCurrentDVParameterCode(initialParameterCode));
 
     if (availableParameterCodes.size > 1) {
         container.append('div').append('legend')
@@ -37,7 +36,6 @@ const drawDVTimeSeriesSelection = function(container, store, monitoringLocationI
                     store.dispatch(Actions.retrieveDVTimeSeries(monitoringLocationId, timeSeries.mean));
                     store.dispatch(Actions.retrieveDVTimeSeries(monitoringLocationId, timeSeries.max));
                     store.dispatch(Actions.setCurrentDVTimeSeriesIds(timeSeries.min, timeSeries.mean, timeSeries.max));
-                    store.dispatch(Actions.setCurrentDVParameterCode(parameterCode));
                 });
             inputContainer.append('label')
                 .attr('class', 'usa-radio__label')
diff --git a/assets/src/scripts/monitoring-location/components/daily-value-hydrograph/graph-controls.test.js b/assets/src/scripts/monitoring-location/components/daily-value-hydrograph/graph-controls.test.js
index 2826e31e6..adb409bc1 100644
--- a/assets/src/scripts/monitoring-location/components/daily-value-hydrograph/graph-controls.test.js
+++ b/assets/src/scripts/monitoring-location/components/daily-value-hydrograph/graph-controls.test.js
@@ -141,9 +141,6 @@ describe('monitoring-location/components/dailyValueHydrograph/graphControls', ()
             expect(firstRadioButton.property('checked')).toBe(true);
         });
 
-        it('Should update the DV parameter code', () => {
-            expect(store.getState().dailyValueTimeSeriesState.parameterCode).toBe('72019');
-        });
     });
 
     describe('drawGraphControls with one param code', () => {
diff --git a/assets/src/scripts/monitoring-location/components/daily-value-hydrograph/selectors/scales.js b/assets/src/scripts/monitoring-location/components/daily-value-hydrograph/selectors/scales.js
index fa784e961..7754155e9 100644
--- a/assets/src/scripts/monitoring-location/components/daily-value-hydrograph/selectors/scales.js
+++ b/assets/src/scripts/monitoring-location/components/daily-value-hydrograph/selectors/scales.js
@@ -7,10 +7,11 @@ import {
     getCurrentDVTimeSeriesTimeRange,
     getCurrentDVTimeSeriesValueRange,
     getCurrentDVTimeSeriesData,
-    getDVParameterCode
+    getAvailableDVTimeSeriesParameterCodes
 } from 'ml/selectors/daily-value-time-series-selector';
 
 import {getLayout} from './layout';
+import { parseInt } from 'lodash';
 
 const REVERSE_AXIS_PARMS = [
     '72019',
@@ -46,15 +47,15 @@ export const getXScale = memoize((kind) => createSelector(
 export const getMainXScale = getXScale();
 export const getBrushXScale = getXScale('BRUSH');
 
-const createYScale = function(layout, valueRange, parameterCode) {
+const createYScale = function(layout, valueRange, parameterCodes) {
     const PADDING_RATIO = 0.2;
     let yScale = scaleLinear();
-    yScale.range([layout.height - layout.margin.top - layout.margin.bottom, 0]);
-    if (REVERSE_AXIS_PARMS.includes(parameterCode)) {
-        yScale.range([layout.height - layout.margin.top - layout.margin.bottom, 0]);
-    } else {
-        yScale.range([0, layout.height - layout.margin.top - layout.margin.bottom]);
-    }
+    yScale.range([0, layout.height - layout.margin.top - layout.margin.bottom]);
+    parameterCodes.forEach((parameterCode) => {
+        if (REVERSE_AXIS_PARMS.includes(parameterCode)) {
+            yScale.range([layout.height - layout.margin.top - layout.margin.bottom, 0]);
+        }
+    });
     if (valueRange) {
         const isPositive = valueRange.min > 0 && valueRange.max > 0;
 
@@ -82,8 +83,8 @@ export const getMainYScale = createSelector(
     getLayout('MAIN'),
     getCurrentDVTimeSeriesData,
     getXScale('MAIN'),
-    getDVParameterCode,
-    (layout, allTSData, xScale, parameterCode) => {
+    getAvailableDVTimeSeriesParameterCodes,
+    (layout, allTSData, xScale, parameterCodes) => {
         const [startTime, endTime] = xScale.domain();
         let minValues = [];
         let maxValues = [];
@@ -105,7 +106,7 @@ export const getMainYScale = createSelector(
                 max: Math.max(...maxValues)
             };
         }
-        return createYScale(layout, valueRange, parameterCode);
+        return createYScale(layout, valueRange, parameterCodes);
     }
 );
 
@@ -115,8 +116,9 @@ export const getMainYScale = createSelector(
 export const getBrushYScale = createSelector(
     getLayout('BRUSH'),
     getCurrentDVTimeSeriesValueRange,
-    (layout, valueRange) => {
-        return createYScale(layout, valueRange);
+    getAvailableDVTimeSeriesParameterCodes,
+    (layout, valueRange, parameterCodes) => {
+        return createYScale(layout, valueRange, parameterCodes);
     }
 );
 
diff --git a/assets/src/scripts/monitoring-location/selectors/daily-value-time-series-selector.js b/assets/src/scripts/monitoring-location/selectors/daily-value-time-series-selector.js
index 43158f786..01fb36ff7 100644
--- a/assets/src/scripts/monitoring-location/selectors/daily-value-time-series-selector.js
+++ b/assets/src/scripts/monitoring-location/selectors/daily-value-time-series-selector.js
@@ -57,6 +57,19 @@ export const getAvailableGWDVTimeSeries = createSelector(
     }
 );
 
+/*
+ * Selector function to get all the current DV parameter codes
+ */
+export const getAvailableDVTimeSeriesParameterCodes = createSelector(
+    getAvailableDVTimeSeries,
+    (timeSeriesArray) => {
+        if(!timeSeriesArray.length) {
+            return [];
+        };
+        return timeSeriesArray.map((item) => item.parameterCode);
+    }
+);
+
 /*
  * Selector function takes a parameter code and returns an Object with min, mean, max properties that
  * contain the available string tsIds for that parameter code.
diff --git a/assets/src/scripts/monitoring-location/store/daily-value-time-series.js b/assets/src/scripts/monitoring-location/store/daily-value-time-series.js
index 19edd5e66..0907dee61 100644
--- a/assets/src/scripts/monitoring-location/store/daily-value-time-series.js
+++ b/assets/src/scripts/monitoring-location/store/daily-value-time-series.js
@@ -79,19 +79,6 @@ const clearDVGraphBrushOffset = function() {
     };
 };
 
-/*
- * Synchronous action to set the current parameter code for the dv graph
- * @param {String} parameterCode 
- * @return {Object} Redux Action
- */
-const setCurrentDVParameterCode = function(parameterCode) {
-    return {
-        type: 'SET_DV_PARAMETER_CODE',
-        parameterCode
-    };
-};
-
-
 /*
  * Redux asynchronous action to fetch the available time series and
  * update the store. The dispatched action returns a Promise.
@@ -192,11 +179,6 @@ export const dailyValueTimeSeriesStateReducer = function(dailyValueTimeSeriesSta
                 ...dailyValueTimeSeriesState,
                 dvGraphBrushOffset: undefined
             };
-        case 'SET_DV_PARAMETER_CODE':
-            return {
-                ...dailyValueTimeSeriesState,
-                parameterCode: action.parameterCode
-            };
         default:
             return dailyValueTimeSeriesState;
     }
@@ -210,6 +192,5 @@ export const Actions = {
     retrieveAvailableDVTimeSeries,
     retrieveDVTimeSeries,
     setDVGraphBrushOffset,
-    clearDVGraphBrushOffset,
-    setCurrentDVParameterCode
+    clearDVGraphBrushOffset
 };
\ No newline at end of file
diff --git a/assets/src/scripts/monitoring-location/store/daily-value-time-series.test.js b/assets/src/scripts/monitoring-location/store/daily-value-time-series.test.js
index 7821e6434..2483cb33a 100644
--- a/assets/src/scripts/monitoring-location/store/daily-value-time-series.test.js
+++ b/assets/src/scripts/monitoring-location/store/daily-value-time-series.test.js
@@ -173,14 +173,6 @@ describe('monitoring-location/store/daily-value-time-series module', () => {
                 expect(store.getState().dailyValueTimeSeriesState.dvGraphBrushOffset).not.toBeDefined();
             });
         });
-
-        describe('Actions.setCurrentDVParameterCode', () => {
-            it('updates brush offset', () => {
-                store.dispatch(Actions.setCurrentDVParameterCode('12345'));
-
-                expect(store.getState().dailyValueTimeSeriesState.parameterCode).toEqual('12345');
-            });
-        });
     });
 });
 
-- 
GitLab