From 4e793059c0f04573a653985e8ba3b7f300b9d796 Mon Sep 17 00:00:00 2001 From: Ashik Meerankutty Date: Tue, 17 Mar 2020 20:17:01 +0530 Subject: [PATCH 01/15] Update quick select values on change of input --- .../quick_select_popover/quick_select.js | 12 ++++-- .../quick_select_utlis.js | 40 +++++++++++++++++++ 2 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utlis.js diff --git a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select.js b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select.js index 082760bd7bc..6b8736a9da0 100644 --- a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select.js +++ b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select.js @@ -12,6 +12,7 @@ import { EuiHorizontalRule } from '../../../horizontal_rule'; import { EuiI18n } from '../../../i18n'; import { timeUnits } from '../time_units'; import { EuiScreenReaderOnly } from '../../../accessibility'; +import { parseTimeParts } from './quick_select_utlis'; const LAST = 'last'; const NEXT = 'next'; @@ -29,10 +30,15 @@ export class EuiQuickSelect extends Component { super(props); const { timeTense, timeValue, timeUnits } = this.props.prevQuickSelect; + const { + timeTenseDefault, + timeValueDefault, + timeUnitsDefault, + } = parseTimeParts(this.props.start); this.state = { - timeTense: timeTense ? timeTense : LAST, - timeValue: timeValue ? timeValue : 15, - timeUnits: timeUnits ? timeUnits : 'm', + timeTense: timeTense ? timeTense : timeTenseDefault, + timeValue: timeValue ? timeValue : timeValueDefault, + timeUnits: timeUnits ? timeUnits : timeUnitsDefault, }; } diff --git a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utlis.js b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utlis.js new file mode 100644 index 00000000000..1d387999c1b --- /dev/null +++ b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utlis.js @@ -0,0 +1,40 @@ +import { isString } from '../../../../services/predicate'; + +const LAST = 'last'; +const NEXT = 'next'; + +export const parseTimeParts = value => { + console.log(value); + const matches = + isString(value) && + value.match(/now(([\-\+])([0-9]+)([smhdwMy])(\/[smhdwMy])?)?/); + + if (!matches) { + return { + timeValueDefault: 15, + timeUnitsDefault: 'm', + timeTenseDefault: LAST, + }; + } + + const operator = matches && matches[2]; + const timeValue = matches && matches[3]; + const timeUnitsDefault = matches && matches[4]; + + if (timeValue && timeUnitsDefault && operator) { + const timeValueDefault = parseInt(timeValue); + const timeTenseDefault = operator === '+' ? NEXT : LAST; + + return { + timeValueDefault, + timeUnitsDefault, + timeTenseDefault, + }; + } + + return { + timeValueDefault: 15, + timeUnitsDefault: 'm', + timeTenseDefault: LAST, + }; +}; From 5553459ba460e031b096020bafffabcf140c0d2b Mon Sep 17 00:00:00 2001 From: Ashik Meerankutty Date: Tue, 17 Mar 2020 20:31:21 +0530 Subject: [PATCH 02/15] updated changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fe5fd37ca4c..d1d2039aedc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ## [`master`](https://github.com/elastic/eui/tree/master) +- Updated `EuiSuperDatePicker` to inherit the selected value to quick select ([#3063](https://github.com/elastic/eui/pull/3105)) - Updated `EuiFilterSelect` to retain the order of its filters ([#3063](https://github.com/elastic/eui/pull/3063)) - Added `href` prop to `EuiBadge` ([#3009](https://github.com/elastic/eui/pull/3009)) - Added props descriptions for `EuiComboBox` ([#3007](https://github.com/elastic/eui/pull/3007)) From 99d2f3df5cd4a18e0dd3ba9e35b7d1d653c8db47 Mon Sep 17 00:00:00 2001 From: Ashik Meerankutty Date: Tue, 17 Mar 2020 20:33:13 +0530 Subject: [PATCH 03/15] updated cl --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d1d2039aedc..98df602feb1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ ## [`master`](https://github.com/elastic/eui/tree/master) -- Updated `EuiSuperDatePicker` to inherit the selected value to quick select ([#3063](https://github.com/elastic/eui/pull/3105)) +- Updated `EuiSuperDatePicker` to inherit the selected value to quick select ([#3105](https://github.com/elastic/eui/pull/3105)) - Updated `EuiFilterSelect` to retain the order of its filters ([#3063](https://github.com/elastic/eui/pull/3063)) - Added `href` prop to `EuiBadge` ([#3009](https://github.com/elastic/eui/pull/3009)) - Added props descriptions for `EuiComboBox` ([#3007](https://github.com/elastic/eui/pull/3007)) From b5108aae30d69f2a0240c5dfa6b46ae4d6d6c261 Mon Sep 17 00:00:00 2001 From: Ashik Meerankutty Date: Tue, 17 Mar 2020 20:43:39 +0530 Subject: [PATCH 04/15] removed console statement --- .../super_date_picker/quick_select_popover/quick_select_utlis.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utlis.js b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utlis.js index 1d387999c1b..495cccb16f3 100644 --- a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utlis.js +++ b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utlis.js @@ -4,7 +4,6 @@ const LAST = 'last'; const NEXT = 'next'; export const parseTimeParts = value => { - console.log(value); const matches = isString(value) && value.match(/now(([\-\+])([0-9]+)([smhdwMy])(\/[smhdwMy])?)?/); From 66532c37ab7369f146c317d0d18663ca4f606d48 Mon Sep 17 00:00:00 2001 From: Ashik Meerankutty Date: Tue, 17 Mar 2020 21:29:46 +0530 Subject: [PATCH 05/15] support other commonly used selections --- .../quick_select_utlis.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utlis.js b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utlis.js index 495cccb16f3..5618c7a551c 100644 --- a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utlis.js +++ b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utlis.js @@ -1,4 +1,7 @@ import { isString } from '../../../../services/predicate'; +import dateMath from '@elastic/datemath'; +import moment from 'moment'; +import { relativeUnitsFromLargestToSmallest } from '../relative_options'; const LAST = 'last'; const NEXT = 'next'; @@ -31,9 +34,23 @@ export const parseTimeParts = value => { }; } - return { + const results = { timeValueDefault: 15, timeUnitsDefault: 'm', timeTenseDefault: LAST, }; + + const duration = moment.duration(moment().diff(dateMath.parse(value))); + let unitOp = ''; + for (let i = 0; i < relativeUnitsFromLargestToSmallest.length; i++) { + const as = duration.as(relativeUnitsFromLargestToSmallest[i]); + if (as < 0) unitOp = '+'; + if (Math.abs(as) > 1) { + results.timeValueDefault = Math.round(Math.abs(as)); + results.timeUnitsDefault = relativeUnitsFromLargestToSmallest[i]; + results.timeTenseDefault = unitOp === '+' ? NEXT : LAST; + break; + } + } + return results; }; From af3edb059f1b1a7c0ca441ea76457a2fec0cd985 Mon Sep 17 00:00:00 2001 From: Ashik Meerankutty Date: Thu, 19 Mar 2020 20:56:19 +0530 Subject: [PATCH 06/15] Added function description --- .../quick_select_popover/quick_select_utlis.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utlis.js b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utlis.js index 5618c7a551c..de2c213cb16 100644 --- a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utlis.js +++ b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utlis.js @@ -1,3 +1,15 @@ +/** + * This function returns time value, time unit and time tense for a given time string. + * For example: for `now-40m` it will parse output as time value to `40` + * time unit to `m` and time unit to `last`. + * If given a datetime string it will return a default value. + * If the given string is in the format such as `now/d` it will parse the string to moment object + * and find the time value, time unit and time tense using moment + * + * @param {string} value The time string to be parsed + * @returns {object} time value, time unit and time tense + */ + import { isString } from '../../../../services/predicate'; import dateMath from '@elastic/datemath'; import moment from 'moment'; From 0e279fdbfd227087f3c04b6c4a261f7a82e4ab79 Mon Sep 17 00:00:00 2001 From: Ashik Meerankutty Date: Sat, 21 Mar 2020 10:22:19 +0530 Subject: [PATCH 07/15] renamed file --- .../super_date_picker/quick_select_popover/quick_select.js | 2 +- .../{quick_select_utlis.js => quick_select_utils.js} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename src/components/date_picker/super_date_picker/quick_select_popover/{quick_select_utlis.js => quick_select_utils.js} (100%) diff --git a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select.js b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select.js index 8f34ef636c4..b349b0d1540 100644 --- a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select.js +++ b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select.js @@ -12,7 +12,7 @@ import { EuiHorizontalRule } from '../../../horizontal_rule'; import { EuiI18n } from '../../../i18n'; import { timeUnits } from '../time_units'; import { EuiScreenReaderOnly } from '../../../accessibility'; -import { parseTimeParts } from './quick_select_utlis'; +import { parseTimeParts } from './quick_select_utils'; const LAST = 'last'; const NEXT = 'next'; diff --git a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utlis.js b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js similarity index 100% rename from src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utlis.js rename to src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js From 96cf8a44be8581e7831dbf17b75b00254b09c2c1 Mon Sep 17 00:00:00 2001 From: Ashik Meerankutty Date: Sat, 21 Mar 2020 11:49:58 +0530 Subject: [PATCH 08/15] Added quick select utils unit tests --- .../quick_select_utils.js | 18 +++++++--------- .../quick_select_utils.test.js | 21 +++++++++++++++++++ 2 files changed, 28 insertions(+), 11 deletions(-) create mode 100644 src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.test.js diff --git a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js index de2c213cb16..177cb98e46a 100644 --- a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js +++ b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js @@ -19,16 +19,18 @@ const LAST = 'last'; const NEXT = 'next'; export const parseTimeParts = value => { + const results = { + timeValueDefault: 15, + timeUnitsDefault: 'm', + timeTenseDefault: LAST, + }; + const matches = isString(value) && value.match(/now(([\-\+])([0-9]+)([smhdwMy])(\/[smhdwMy])?)?/); if (!matches) { - return { - timeValueDefault: 15, - timeUnitsDefault: 'm', - timeTenseDefault: LAST, - }; + return results; } const operator = matches && matches[2]; @@ -46,12 +48,6 @@ export const parseTimeParts = value => { }; } - const results = { - timeValueDefault: 15, - timeUnitsDefault: 'm', - timeTenseDefault: LAST, - }; - const duration = moment.duration(moment().diff(dateMath.parse(value))); let unitOp = ''; for (let i = 0; i < relativeUnitsFromLargestToSmallest.length; i++) { diff --git a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.test.js b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.test.js new file mode 100644 index 00000000000..d7172a6b88d --- /dev/null +++ b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.test.js @@ -0,0 +1,21 @@ +import { parseTimeParts } from './quick_select_utils'; + +describe('parseTimeParts', () => { + it('should parse now-2h', () => { + const out = parseTimeParts('now-2h'); + expect(out).toEqual({ + timeValueDefault: 2, + timeUnitsDefault: 'h', + timeTenseDefault: 'last', + }); + }); + + it('should parse now+2h', () => { + const out = parseTimeParts('now+2h'); + expect(out).toEqual({ + timeValueDefault: 2, + timeUnitsDefault: 'h', + timeTenseDefault: 'next', + }); + }); +}); From 988ebb910529ddfb358cbbc4fffd964823573035 Mon Sep 17 00:00:00 2001 From: Ashik Meerankutty Date: Sat, 21 Mar 2020 12:00:57 +0530 Subject: [PATCH 09/15] updated function for a better result for 'now' --- .../quick_select_popover/quick_select_utils.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js index 177cb98e46a..2847ac4d2de 100644 --- a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js +++ b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js @@ -17,6 +17,9 @@ import { relativeUnitsFromLargestToSmallest } from '../relative_options'; const LAST = 'last'; const NEXT = 'next'; +const NOW = 'now'; + +const isNow = value => value === NOW; export const parseTimeParts = value => { const results = { @@ -25,6 +28,12 @@ export const parseTimeParts = value => { timeTenseDefault: LAST, }; + if (isNow(value)) { + results.timeValueDefault = 0; + results.timeUnitsDefault = 's'; + results.timeTenseDefault = LAST; + } + const matches = isString(value) && value.match(/now(([\-\+])([0-9]+)([smhdwMy])(\/[smhdwMy])?)?/); From 78072f694c1e63f4a865fffff774f29823d7a09a Mon Sep 17 00:00:00 2001 From: Ashik Meerankutty Date: Sat, 21 Mar 2020 12:02:34 +0530 Subject: [PATCH 10/15] updated test --- .../quick_select_popover/quick_select_utils.test.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.test.js b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.test.js index d7172a6b88d..633e635bcf2 100644 --- a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.test.js +++ b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.test.js @@ -1,6 +1,15 @@ import { parseTimeParts } from './quick_select_utils'; describe('parseTimeParts', () => { + it('should parse now', () => { + const out = parseTimeParts('now'); + expect(out).toEqual({ + timeValueDefault: 0, + timeUnitsDefault: 's', + timeTenseDefault: 'last', + }); + }); + it('should parse now-2h', () => { const out = parseTimeParts('now-2h'); expect(out).toEqual({ From 9939ac62851ce3a279f326853e630146215a8d39 Mon Sep 17 00:00:00 2001 From: Ashik Meerankutty Date: Sat, 21 Mar 2020 12:12:28 +0530 Subject: [PATCH 11/15] added return --- .../super_date_picker/quick_select_popover/quick_select_utils.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js index 2847ac4d2de..7b8ade1a16e 100644 --- a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js +++ b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js @@ -32,6 +32,7 @@ export const parseTimeParts = value => { results.timeValueDefault = 0; results.timeUnitsDefault = 's'; results.timeTenseDefault = LAST; + return results; } const matches = From f0f51f380f2f040552eb70ab771b1fc93e04fdb0 Mon Sep 17 00:00:00 2001 From: Ashik Meerankutty Date: Tue, 24 Mar 2020 09:58:18 +0530 Subject: [PATCH 12/15] fixed bug in now -> relative case --- .../quick_select_popover/quick_select.js | 2 +- .../quick_select_utils.js | 22 +++++++++---------- .../quick_select_utils.test.js | 12 +++++----- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select.js b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select.js index b349b0d1540..5e7de8ff3f5 100644 --- a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select.js +++ b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select.js @@ -34,7 +34,7 @@ export class EuiQuickSelect extends Component { timeTenseDefault, timeValueDefault, timeUnitsDefault, - } = parseTimeParts(this.props.start); + } = parseTimeParts(this.props.start, this.props.end); this.state = { timeTense: timeTense ? timeTense : timeTenseDefault, timeValue: timeValue ? timeValue : timeValueDefault, diff --git a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js index 7b8ade1a16e..f4f41724a2f 100644 --- a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js +++ b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js @@ -5,35 +5,33 @@ * If given a datetime string it will return a default value. * If the given string is in the format such as `now/d` it will parse the string to moment object * and find the time value, time unit and time tense using moment + * This function accepts two strings start and end time. I the start value is now then it uses + * the end value to parse. * - * @param {string} value The time string to be parsed + * @param {string} start start time + * @param {string} start end time * @returns {object} time value, time unit and time tense */ -import { isString } from '../../../../services/predicate'; -import dateMath from '@elastic/datemath'; import moment from 'moment'; +import dateMath from '@elastic/datemath'; +import { isString } from '../../../../services/predicate'; import { relativeUnitsFromLargestToSmallest } from '../relative_options'; +import { DATE_MODES } from '../date_modes'; const LAST = 'last'; const NEXT = 'next'; -const NOW = 'now'; -const isNow = value => value === NOW; +const isNow = value => value === DATE_MODES.NOW; -export const parseTimeParts = value => { +export const parseTimeParts = (start, end) => { const results = { timeValueDefault: 15, timeUnitsDefault: 'm', timeTenseDefault: LAST, }; - if (isNow(value)) { - results.timeValueDefault = 0; - results.timeUnitsDefault = 's'; - results.timeTenseDefault = LAST; - return results; - } + const value = isNow(start) ? end : start; const matches = isString(value) && diff --git a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.test.js b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.test.js index 633e635bcf2..595bc601b23 100644 --- a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.test.js +++ b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.test.js @@ -2,16 +2,16 @@ import { parseTimeParts } from './quick_select_utils'; describe('parseTimeParts', () => { it('should parse now', () => { - const out = parseTimeParts('now'); + const out = parseTimeParts('now', 'now+5m'); expect(out).toEqual({ - timeValueDefault: 0, - timeUnitsDefault: 's', - timeTenseDefault: 'last', + timeValueDefault: 5, + timeUnitsDefault: 'm', + timeTenseDefault: 'next', }); }); it('should parse now-2h', () => { - const out = parseTimeParts('now-2h'); + const out = parseTimeParts('now-2h', 'now+5m'); expect(out).toEqual({ timeValueDefault: 2, timeUnitsDefault: 'h', @@ -20,7 +20,7 @@ describe('parseTimeParts', () => { }); it('should parse now+2h', () => { - const out = parseTimeParts('now+2h'); + const out = parseTimeParts('now+2h', 'now+5m'); expect(out).toEqual({ timeValueDefault: 2, timeUnitsDefault: 'h', From 99db6c2b72102d32e8c1b68a56aa7ad044bc7fd3 Mon Sep 17 00:00:00 2001 From: Ashik Meerankutty Date: Wed, 25 Mar 2020 00:36:59 +0530 Subject: [PATCH 13/15] removed unwanted && and - escape in regex --- .../quick_select_popover/quick_select_utils.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js index f4f41724a2f..b118cb81eeb 100644 --- a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js +++ b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js @@ -35,18 +35,18 @@ export const parseTimeParts = (start, end) => { const matches = isString(value) && - value.match(/now(([\-\+])([0-9]+)([smhdwMy])(\/[smhdwMy])?)?/); + value.match(/now(([-+])([\d]+)([smhdwMy])(\/[smhdwMy])?)?/); if (!matches) { return results; } - const operator = matches && matches[2]; - const timeValue = matches && matches[3]; - const timeUnitsDefault = matches && matches[4]; + const operator = matches[2]; + const timeValue = matches[3]; + const timeUnitsDefault = matches[4]; if (timeValue && timeUnitsDefault && operator) { - const timeValueDefault = parseInt(timeValue); + const timeValueDefault = parseInt(timeValue, 10); const timeTenseDefault = operator === '+' ? NEXT : LAST; return { From 6659f4d4d22245ed3680588b469c3f3aa54c4ce2 Mon Sep 17 00:00:00 2001 From: Ashik Meerankutty Date: Wed, 25 Mar 2020 00:43:00 +0530 Subject: [PATCH 14/15] removed [] --- .../quick_select_popover/quick_select_utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js index b118cb81eeb..8b88f7ebb62 100644 --- a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js +++ b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.js @@ -35,7 +35,7 @@ export const parseTimeParts = (start, end) => { const matches = isString(value) && - value.match(/now(([-+])([\d]+)([smhdwMy])(\/[smhdwMy])?)?/); + value.match(/now(([-+])(\d+)([smhdwMy])(\/[smhdwMy])?)?/); if (!matches) { return results; From 2b5165bbb3b74b711f532c645214d377a993797d Mon Sep 17 00:00:00 2001 From: Ashik Meerankutty Date: Thu, 26 Mar 2020 07:58:11 +0530 Subject: [PATCH 15/15] Added test for duration parsing --- .../quick_select_utils.test.js | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.test.js b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.test.js index 595bc601b23..1a104afd8ef 100644 --- a/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.test.js +++ b/src/components/date_picker/super_date_picker/quick_select_popover/quick_select_utils.test.js @@ -1,3 +1,4 @@ +import moment from 'moment'; import { parseTimeParts } from './quick_select_utils'; describe('parseTimeParts', () => { @@ -27,4 +28,24 @@ describe('parseTimeParts', () => { timeTenseDefault: 'next', }); }); + + describe('duration parsing', () => { + const duration = moment.duration; + beforeEach(() => { + moment.duration = () => duration(6 * 60 * 60 * 1000); + }); + + afterEach(() => { + moment.duration = duration; + }); + + it('should parse now/d', () => { + const out = parseTimeParts('now/d', 'now+5m'); + expect(out).toEqual({ + timeValueDefault: 6, + timeUnitsDefault: 'h', + timeTenseDefault: 'last', + }); + }); + }); });