11import moment from 'moment'
2- import React , { useEffect } from 'react'
2+ import React , { useEffect , useMemo } from 'react'
33import PropTypes from 'prop-types'
44import styles from './PhaseInput.module.scss'
55import cn from 'classnames'
@@ -10,6 +10,7 @@ import isAfter from 'date-fns/isAfter'
1010import subDays from 'date-fns/subDays'
1111import '@nateradebaugh/react-datetime/scss/styles.scss'
1212import DurationInput from '../DurationInput'
13+ import { getPhaseHoursMinutes , getPhaseEndDate } from '../../util/date'
1314
1415const dateFormat = 'MM/DD/YYYY HH:mm'
1516const inputDateFormat = 'MM/dd/yyyy'
@@ -19,11 +20,11 @@ const MAX_LENGTH = 5
1920const PhaseInput = ( { onUpdatePhase, phase, readOnly, phaseIndex } ) => {
2021 const { scheduledStartDate : startDate , scheduledEndDate : endDate , duration, isStartTimeActive, isDurationActive } = phase
2122
22- const getEndDate = ( startDate , duration ) => moment ( startDate ) . add ( duration , 'hours' ) . format ( dateFormat )
23+ const durationHoursMinutes = useMemo ( ( ) => getPhaseHoursMinutes ( duration ) , [ duration ] )
2324
2425 const onStartDateChange = ( e ) => {
2526 let startDate = moment ( e ) . format ( dateFormat )
26- let endDate = getEndDate ( startDate , duration )
27+ let endDate = getPhaseEndDate ( startDate , duration )
2728 onUpdatePhase ( {
2829 startDate,
2930 endDate,
@@ -34,7 +35,7 @@ const PhaseInput = ({ onUpdatePhase, phase, readOnly, phaseIndex }) => {
3435 useEffect ( ( ) => {
3536 if ( ! startDate && onUpdatePhase ) {
3637 let startDate = moment ( ) . format ( dateFormat )
37- let endDate = getEndDate ( startDate , duration )
38+ let endDate = getPhaseEndDate ( startDate , duration )
3839 onUpdatePhase ( {
3940 startDate,
4041 endDate,
@@ -44,10 +45,10 @@ const PhaseInput = ({ onUpdatePhase, phase, readOnly, phaseIndex }) => {
4445 } , [ startDate ] )
4546
4647 const onDurationChange = ( e , isBlur = false ) => {
47- if ( e . length > MAX_LENGTH ) return null
48+ if ( ` ${ e } ` . length > MAX_LENGTH ) return null
4849
49- let duration = parseInt ( e || 0 )
50- let endDate = getEndDate ( startDate , duration )
50+ let duration = e
51+ let endDate = getPhaseEndDate ( startDate , duration )
5152 onUpdatePhase ( {
5253 startDate,
5354 endDate,
@@ -90,10 +91,15 @@ const PhaseInput = ({ onUpdatePhase, phase, readOnly, phaseIndex }) => {
9091 </ div >
9192 </ div >
9293 < div className = { cn ( styles . field , styles . col2 ) } >
93- < span className = { styles . title } > Duration: </ span >
94+ < span className = { styles . title } > Duration</ span >
9495 < div className = { styles . inputField } >
9596 { readOnly ? (
96- < span className = { styles . readOnlyValue } > { duration } </ span >
97+ < div className = { styles . readOnlyDurationContainer } >
98+ < span > Hours: </ span >
99+ < span className = { styles . readOnlyValue } > { durationHoursMinutes . hours } </ span >
100+ < span > Minutes: </ span >
101+ < span className = { styles . readOnlyValue } > { durationHoursMinutes . minutes } </ span >
102+ </ div >
97103 ) : (
98104 < DurationInput
99105 duration = { duration }
0 commit comments