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 7754155e98ee35d8f0bb2f05213caae509e5d8c4..7865177e6ddce5729be8d06c6f2a89481ab153f6 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,11 +7,10 @@ import { getCurrentDVTimeSeriesTimeRange, getCurrentDVTimeSeriesValueRange, getCurrentDVTimeSeriesData, - getAvailableDVTimeSeriesParameterCodes + getCurrentDVTimeSeriesParameterCodes } from 'ml/selectors/daily-value-time-series-selector'; import {getLayout} from './layout'; -import { parseInt } from 'lodash'; const REVERSE_AXIS_PARMS = [ '72019', @@ -50,12 +49,17 @@ export const getBrushXScale = getXScale('BRUSH'); const createYScale = function(layout, valueRange, parameterCodes) { const PADDING_RATIO = 0.2; let yScale = scaleLinear(); - yScale.range([0, layout.height - layout.margin.top - layout.margin.bottom]); + let reverse = false; parameterCodes.forEach((parameterCode) => { if (REVERSE_AXIS_PARMS.includes(parameterCode)) { - yScale.range([layout.height - layout.margin.top - layout.margin.bottom, 0]); + reverse = true; } }); + if (reverse) { + yScale.range([0, layout.height - layout.margin.top - layout.margin.bottom]); + } else { + yScale.range([layout.height - layout.margin.top - layout.margin.bottom, 0]); + } if (valueRange) { const isPositive = valueRange.min > 0 && valueRange.max > 0; @@ -83,7 +87,7 @@ export const getMainYScale = createSelector( getLayout('MAIN'), getCurrentDVTimeSeriesData, getXScale('MAIN'), - getAvailableDVTimeSeriesParameterCodes, + getCurrentDVTimeSeriesParameterCodes, (layout, allTSData, xScale, parameterCodes) => { const [startTime, endTime] = xScale.domain(); let minValues = []; @@ -116,7 +120,7 @@ export const getMainYScale = createSelector( export const getBrushYScale = createSelector( getLayout('BRUSH'), getCurrentDVTimeSeriesValueRange, - getAvailableDVTimeSeriesParameterCodes, + getCurrentDVTimeSeriesParameterCodes, (layout, valueRange, parameterCodes) => { return createYScale(layout, valueRange, parameterCodes); } diff --git a/assets/src/scripts/monitoring-location/components/daily-value-hydrograph/selectors/scales.test.js b/assets/src/scripts/monitoring-location/components/daily-value-hydrograph/selectors/scales.test.js index ffa65ed7a6ed54ae276e7bb50fb6409cf9a548a6..76b4d0d8dd731eb92e4db8143e9c6bdaa8c31dc5 100644 --- a/assets/src/scripts/monitoring-location/components/daily-value-hydrograph/selectors/scales.test.js +++ b/assets/src/scripts/monitoring-location/components/daily-value-hydrograph/selectors/scales.test.js @@ -37,16 +37,43 @@ describe('monitoring-location/components/daily-value-hydrograph/selectors/scales timeStep: ['2010-01-01', '2010-01-02', '2010-01-03', '2010-01-04'], result: ['4.9', '3.5', '5.9', '3.5'] } + }, + '22222' : { + type: 'Feature', + id: '22222', + properties: { + phenomenonTimeStart: '2010-01-01', + phenomenonTimeEnd: '2010-01-04', + timeStep: ['2010-01-01', '2010-01-02', '2010-01-03', '2010-01-04'], + result: ['5.9', '5.5', '5.9', '1.5'] + } } - } + }, + availableDVTimeSeries: [ + { + id: '12345', + parameterCode: '12345' + }, + { + id: '12346', + parameterCode: '12345' + }, + { + id: '12347', + parameterCode: '12345' + }, + { + id: '22222', + parameterCode: '72019' + } + ] }, dailyValueTimeSeriesState: { currentDVTimeSeriesId: { min: '12345', mean: '12346', max: '12347' - }, - parameterCode: '12345' + } }, ui: { windowWidth: 1024, @@ -159,7 +186,7 @@ describe('monitoring-location/components/daily-value-hydrograph/selectors/scales expect(result[1]).toEqual(0); }); - it('Should invert the range for certain parameter codes', () => { + it('Should not invert the range for non-specified parameter codes', () => { const result = getMainYScale({ ...TEST_STATE, dailyValueTimeSeriesData: { @@ -174,25 +201,22 @@ describe('monitoring-location/components/daily-value-hydrograph/selectors/scales result: ['4.5', '3.2', '4.6', '0.1'] } } - } - }, - dailyValueTimeSeriesState: { - ...TEST_STATE.dailyValueTimeSeriesState, - parameterCode: '72019' + }, + availableDVTimeSeries: TEST_STATE.availableDVTimeSeries } }).range(); expect(result[1]).toEqual(0); }); - it('Should not invert the range for non-specified parameter codes', () => { + it('Should invert the range for certain parameter codes', () => { const result = getMainYScale({ ...TEST_STATE, dailyValueTimeSeriesData: { dvTimeSeries: { - '12345': { + '22222': { type: 'Feature', - id: '12345', + id: '22222', properties: { phenomenonTimeStart: '2010-01-01', phenomenonTimeEnd: '2010-01-04', @@ -200,14 +224,17 @@ describe('monitoring-location/components/daily-value-hydrograph/selectors/scales result: ['4.5', '3.2', '4.6', '0.1'] } } - } + }, + availableDVTimeSeries: TEST_STATE.dailyValueTimeSeriesData.availableDVTimeSeries }, dailyValueTimeSeriesState: { - ...TEST_STATE.dailyValueTimeSeriesState, - parameterCode: '12345' + currentDVTimeSeriesId: { + min: '', + mean: '22222', + max: '' + } } }).range(); - expect(result[0]).toEqual(0); }); }); 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 01fb36ff777a6a68eeb8ad2a0bbe394e0235d4e2..dda6914ad74c703584bb04300b4fbb6661d4c5b8 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 @@ -60,13 +60,20 @@ export const getAvailableGWDVTimeSeries = createSelector( /* * Selector function to get all the current DV parameter codes */ -export const getAvailableDVTimeSeriesParameterCodes = createSelector( +export const getCurrentDVTimeSeriesParameterCodes = createSelector( + getCurrentDVTimeSeriesIds, getAvailableDVTimeSeries, - (timeSeriesArray) => { - if(!timeSeriesArray.length) { + (currentIds, timeSeriesArray) => { + if (!timeSeriesArray || !timeSeriesArray.length) { return []; - }; - return timeSeriesArray.map((item) => item.parameterCode); + } + return timeSeriesArray.map((item) => { + if ([currentIds.min, currentIds.max, currentIds.mean].includes(item.id)) { + return item.parameterCode; + } else { + return null; + } + }); } ); diff --git a/assets/src/scripts/monitoring-location/selectors/daily-value-time-series-selector.test.js b/assets/src/scripts/monitoring-location/selectors/daily-value-time-series-selector.test.js index 349c44ec4bfa810065339875883316ab1ab1b806..b507759a6d459942078f54038607dbf99134eb89 100644 --- a/assets/src/scripts/monitoring-location/selectors/daily-value-time-series-selector.test.js +++ b/assets/src/scripts/monitoring-location/selectors/daily-value-time-series-selector.test.js @@ -13,7 +13,7 @@ import { hasMultipleParameterCodes, getAvailableGWDVTimeSeries, getAvailableGWDVTimeSeriesIdsForParameterCode, - getDVParameterCode + getCurrentDVTimeSeriesParameterCodes } from './daily-value-time-series-selector'; describe('monitoring-location/selectors/daily-value-time-series-selector', () => { @@ -96,19 +96,27 @@ describe('monitoring-location/selectors/daily-value-time-series-selector', () => }); }); - describe('getDVParameterCode', () => { - it('should be null if no available dv parameter code', () => { - expect(getDVParameterCode({ + describe('getCurrentDVTimeSeriesParameterCodes', () => { + it('should be empty array if no available dv time series', () => { + expect(getCurrentDVTimeSeriesParameterCodes({ + dailyValueTimeSeriesData: {}, dailyValueTimeSeriesState: {} - })).toBeNull(); + })).toStrictEqual([]); }); - it('should return the available dv parameter code', () => { - expect(getDVParameterCode({ + it('should return the current parameter codes', () => { + expect(getCurrentDVTimeSeriesParameterCodes({ + dailyValueTimeSeriesData: { + availableDVTimeSeries: [{id: '1', parameterCode:'12345'}, {id: '2', parameterCode: '22222'}] + }, dailyValueTimeSeriesState: { - parameterCode: '12345' + currentDVTimeSeriesId: { + min: '1', + mean: '', + max: '' + } } - })).toEqual('12345'); + })).toStrictEqual(['12345', null]); }); });