@@ -21,28 +21,30 @@ import {useQueryResultContext} from "../../../hooks/queryResultContext";
2121import { useNavigate } from "react-router" ;
2222import { useNavigation } from "../../../hooks/navigationHook.jsx" ;
2323import ActionButton from "../../input/button/ActionButton.jsx" ;
24+ import { useMetadata } from "../../../hooks/metadataHook.jsx" ;
2425
25- const parseTime = ( dateString , timeString ) => {
26+ const parseTimeAsUTC = ( dateString , timeString ) => {
2627 const d = dateString . match (
2728 / ^ ( 0 \d | \d { 2 } ) [ / | - ] ? ( 0 \d | \d { 2 } ) [ / | - ] ? ( \d { 4 , 5 } ) $ /
2829 ) ;
2930 const t = timeString . match ( / ^ ( 0 \d | \d { 2 } ) : ? ( 0 \d | \d { 2 } ) $ / ) ;
3031
3132 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date
32- const parsedDay = Number ( d [ 1 ] ) ;
33- const parsedMonth = Number ( d [ 2 ] ) - 1 ; // 0=January, 11=December
34- const parsedYear = Number ( d [ 3 ] ) ;
35- let hour = Number ( t [ 1 ] ) ;
36- let minute = Number ( t [ 2 ] ) ;
37- const date = new Date ( parsedYear , parsedMonth , parsedDay , hour , minute ) ;
38- return date . getTime ( ) - ( date . getTimezoneOffset ( ) * 60000 ) ;
33+ const year = d [ 3 ] ;
34+ const month = d [ 2 ] ;
35+ const day = d [ 1 ] ;
36+ const hour = t [ 1 ] ;
37+ const minute = t [ 2 ] ;
38+ const date = new Date ( ` ${ year } - ${ month } - ${ day } T ${ hour } : ${ minute } :00+0000` ) ;
39+ return date . getTime ( ) ;
3940} ;
4041
4142const QueryOptionsCard = ( ) => {
4243 const { t} = useTranslation ( ) ;
4344 const navigate = useNavigate ( )
4445 const { result, setResult} = useQueryResultContext ( ) ;
4546 const { setCurrentTab} = useNavigation ( ) ;
47+ const { timeZoneOffsetMinutes} = useMetadata ( ) ;
4648
4749 const [ loadingResults , setLoadingResults ] = useState ( false ) ;
4850
@@ -78,11 +80,11 @@ const QueryOptionsCard = () => {
7880 if ( ! fromDate && ! fromTime && ! toDate && ! toTime ) return ;
7981
8082 setExtremes ( {
81- min : parseTime (
83+ min : parseTimeAsUTC (
8284 fromDate || options . view . afterDate ,
8385 fromTime || options . view . afterTime
8486 ) ,
85- max : parseTime (
87+ max : parseTimeAsUTC (
8688 toDate || options . view . beforeDate ,
8789 toTime || options . view . beforeTime
8890 )
@@ -94,9 +96,9 @@ const QueryOptionsCard = () => {
9496 const onSetExtremes = useCallback ( ( event ) => {
9597 if ( event ?. trigger ) {
9698 const afterDate = Highcharts . dateFormat ( '%d/%m/%Y' , event . min ) ;
97- const afterTime = Highcharts . dateFormat ( '%H:%M' , event . min ) ;
99+ const afterTime = Highcharts . dateFormat ( '%H:%M' , event . min - timeZoneOffsetMinutes * 60000 ) ;
98100 const beforeDate = Highcharts . dateFormat ( '%d/%m/%Y' , event . max ) ;
99- const beforeTime = Highcharts . dateFormat ( '%H:%M' , event . max ) ;
101+ const beforeTime = Highcharts . dateFormat ( '%H:%M' , event . max - timeZoneOffsetMinutes * 60000 ) ;
100102 setFromDate ( afterDate ) ;
101103 setFromTime ( afterTime ) ;
102104 setToDate ( beforeDate ) ;
@@ -119,11 +121,11 @@ const QueryOptionsCard = () => {
119121 setFilters ( existingFilters ) ;
120122
121123 setExtremes ( {
122- min : parseTime (
124+ min : parseTimeAsUTC (
123125 result . view . afterDate || options . view . afterDate ,
124126 result . view . afterTime || options . view . afterTime
125127 ) ,
126- max : parseTime (
128+ max : parseTimeAsUTC (
127129 result . view . beforeDate || options . view . beforeDate ,
128130 result . view . beforeTime || options . view . beforeTime
129131 )
0 commit comments