From a9f9c4bbd548017cc96a59e2dd4cc0c526783c49 Mon Sep 17 00:00:00 2001 From: Grace Guo Date: Wed, 11 Nov 2020 09:32:26 -0800 Subject: [PATCH] [fix] handle null value in date filter (#11655) --- .../explore/components/DateFilterControl_spec.jsx | 13 +++++++++++++ .../components/controls/DateFilterControl.jsx | 4 ++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/superset-frontend/spec/javascripts/explore/components/DateFilterControl_spec.jsx b/superset-frontend/spec/javascripts/explore/components/DateFilterControl_spec.jsx index 49ac9506833..1a56b50fb05 100644 --- a/superset-frontend/spec/javascripts/explore/components/DateFilterControl_spec.jsx +++ b/superset-frontend/spec/javascripts/explore/components/DateFilterControl_spec.jsx @@ -81,6 +81,19 @@ describe('DateFilterControl', () => { expect(close).toBeCalled(); }); + it('should handle null value', () => { + const open = jest.fn(); + const close = jest.fn(); + const props = { + ...defaultProps, + value: null, + onOpenDateFilterControl: open, + onCloseDateFilterControl: close, + }; + + expect(mount()).toExist(); + }); + it('renders two tabs in popover', () => { const popoverContent = wrapper.find(Popover).first().props().content; const popoverContentWrapper = mount(popoverContent); diff --git a/superset-frontend/src/explore/components/controls/DateFilterControl.jsx b/superset-frontend/src/explore/components/controls/DateFilterControl.jsx index 70dc0db1404..c951bd1b9eb 100644 --- a/superset-frontend/src/explore/components/controls/DateFilterControl.jsx +++ b/superset-frontend/src/explore/components/controls/DateFilterControl.jsx @@ -236,11 +236,11 @@ class DateFilterControl extends React.Component { }; const { value } = props; - if (value.indexOf(SEPARATOR) >= 0) { + if (value && value.indexOf(SEPARATOR) >= 0) { this.state = { ...this.state, ...getStateFromSeparator(value) }; } else if (COMMON_TIME_FRAMES.indexOf(value) >= 0) { this.state = { ...this.state, ...getStateFromCommonTimeFrame(value) }; - } else { + } else if (value) { this.state = { ...this.state, ...getStateFromCustomRange(value) }; }