From 8f38c53999af14df3baeb639d32a82b5a9c432d5 Mon Sep 17 00:00:00 2001 From: Andrew Watkins Date: Thu, 17 Aug 2017 13:06:20 -0700 Subject: [PATCH] Add inputs for custom time ranges --- ui/src/shared/components/CustomTimeRange.js | 65 +++++++++++++++---- .../style/components/custom-time-range.scss | 2 + 2 files changed, 55 insertions(+), 12 deletions(-) diff --git a/ui/src/shared/components/CustomTimeRange.js b/ui/src/shared/components/CustomTimeRange.js index 8b84f315ab..9b49218070 100644 --- a/ui/src/shared/components/CustomTimeRange.js +++ b/ui/src/shared/components/CustomTimeRange.js @@ -3,39 +3,62 @@ import rome from 'rome' import moment from 'moment' import shortcuts from 'hson!shared/data/timeRangeShortcuts.hson' +const dateFormat = 'YYYY-MM-DD HH:mm' class CustomTimeRange extends Component { constructor(props) { super(props) - - this.handleClick = ::this.handleClick - this._formatTimeRange = ::this._formatTimeRange - this.handleTimeRangeShortcut = ::this.handleTimeRangeShortcut } componentDidMount() { const {timeRange} = this.props const lower = rome(this.lower, { - initialValue: this._formatTimeRange(timeRange.lower), + appendTo: this.lowerContainer, + initialValue: this.getInitialDate(timeRange.lower), + autoClose: false, + autoHideOnBlur: false, + autoHideOnClick: false, }) + const upper = rome(this.upper, { - initialValue: this._formatTimeRange(timeRange.upper), + appendTo: this.upperContainer, + autoClose: false, + initialValue: this.getInitialDate(timeRange.upper), + autoHideOnBlur: false, + autoHideOnClick: false, }) this.lowerCal = lower this.upperCal = upper + + this.lowerCal.show() + this.upperCal.show() + } + + getInitialDate = time => { + const {upper, lower} = this.props.timeRange + + if (upper || lower) { + return this._formatTimeRange(time) + } + + return moment(new Date()).format(dateFormat) } // If there is an upper or lower time range set, set the corresponding calendar's value. componentWillReceiveProps(nextProps) { const {lower, upper} = nextProps.timeRange if (lower) { + const formattedLower = this._formatTimeRange(lower) this.lowerCal.setValue(this._formatTimeRange(lower)) + this.lower.value = formattedLower } if (upper) { + const formattedUpper = this._formatTimeRange(upper) this.upperCal.setValue(this._formatTimeRange(upper)) + this.upper.value = formattedUpper } } @@ -56,8 +79,26 @@ class CustomTimeRange extends Component {
-
(this.lower = r)} /> -
(this.upper = r)} /> +
(this.lowerContainer = r)} + > + (this.lower = r)} + placeholder="from" + /> +
+
(this.upperContainer = r)} + > + (this.upper = r)} + placeholder="to" + /> +
{ if (!timeRange) { return '' } @@ -86,10 +127,10 @@ class CustomTimeRange extends Component { moment().subtract(duration, unitOfTime) } - return moment(timeRange.replace(/\'/g, '')).format('YYYY-MM-DD HH:mm') + return moment(timeRange.replace(/\'/g, '')).format(dateFormat) } - handleClick() { + handleClick = () => { const {onApplyTimeRange, onClose} = this.props const lower = this.lowerCal.getDate().toISOString() const upper = this.upperCal.getDate().toISOString() @@ -101,7 +142,7 @@ class CustomTimeRange extends Component { } } - handleTimeRangeShortcut(shortcut) { + handleTimeRangeShortcut = shortcut => { return () => { let lower const upper = moment() diff --git a/ui/src/style/components/custom-time-range.scss b/ui/src/style/components/custom-time-range.scss index 48f2e924bc..8164d6a99c 100644 --- a/ui/src/style/components/custom-time-range.scss +++ b/ui/src/style/components/custom-time-range.scss @@ -35,9 +35,11 @@ } .custom-time--lower { margin-right: 4px; + text-align: center; } .custom-time--upper { margin-left: 4px; + text-align: center; } .custom-time--shortcuts { @include no-user-select();