You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ru...@apache.org on 2020/11/06 22:24:08 UTC

[incubator-superset] branch master updated: fix: Filter and Metric popovers not closing after clicking Save (#11607)

This is an automated email from the ASF dual-hosted git repository.

rusackas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git


The following commit(s) were added to refs/heads/master by this push:
     new a6bf95e  fix: Filter and Metric popovers not closing after clicking Save (#11607)
a6bf95e is described below

commit a6bf95e30bb50b5ba6a76be6f324e9a204c96cfd
Author: Kamil Gabryjelski <ka...@gmail.com>
AuthorDate: Fri Nov 6 23:23:12 2020 +0100

    fix: Filter and Metric popovers not closing after clicking Save (#11607)
    
    * Fix filter popover not closing
    
    * Fix metric popover not closing
    
    * Add e2e tests
---
 .../cypress/integration/explore/AdhocFilters.test.ts   | 14 ++++++++++++++
 .../cypress/integration/explore/AdhocMetrics.test.ts   | 18 ++++++++++++++++++
 .../src/explore/components/AdhocFilterEditPopover.jsx  |  5 +++--
 .../AdhocFilterEditPopoverSimpleTabContent.jsx         |  2 +-
 .../src/explore/components/AdhocMetricEditPopover.jsx  |  2 ++
 5 files changed, 38 insertions(+), 3 deletions(-)

diff --git a/superset-frontend/cypress-base/cypress/integration/explore/AdhocFilters.test.ts b/superset-frontend/cypress-base/cypress/integration/explore/AdhocFilters.test.ts
index d9057d3..b3d2379 100644
--- a/superset-frontend/cypress-base/cypress/integration/explore/AdhocFilters.test.ts
+++ b/superset-frontend/cypress-base/cypress/integration/explore/AdhocFilters.test.ts
@@ -111,4 +111,18 @@ describe('AdhocFilters', () => {
       chartSelector: 'svg',
     });
   });
+
+  it('Click save without making any changes', () => {
+    cy.get('[data-test=adhoc_filters]').within(() => {
+      cy.get('.Select__control').scrollIntoView().click();
+      cy.get('input[type=text]').focus().type('name{enter}');
+    });
+
+    cy.get('[data-test=filter-edit-popover]').should('be.visible');
+    cy.get('[data-test="adhoc-filter-edit-popover-save-button"]').click();
+
+    cy.wait(1000);
+
+    cy.get('[data-test=filter-edit-popover]').should('not.be.visible');
+  });
 });
diff --git a/superset-frontend/cypress-base/cypress/integration/explore/AdhocMetrics.test.ts b/superset-frontend/cypress-base/cypress/integration/explore/AdhocMetrics.test.ts
index 7c085c3..96a2567 100644
--- a/superset-frontend/cypress-base/cypress/integration/explore/AdhocMetrics.test.ts
+++ b/superset-frontend/cypress-base/cypress/integration/explore/AdhocMetrics.test.ts
@@ -137,4 +137,22 @@ describe('AdhocMetrics', () => {
       chartSelector: 'svg',
     });
   });
+
+  it('Click save without making any changes', () => {
+    cy.get('[data-test=metrics]')
+      .find('.Select__control input')
+      .type('sum_girls', { force: true });
+
+    cy.get('[data-test=metrics]')
+      .find('.Select__option--is-focused')
+      .trigger('mousedown')
+      .click();
+
+    cy.get('[data-test=metrics-edit-popover]').should('be.visible');
+    cy.get('[data-test="AdhocMetricEdit#save"]').click();
+
+    cy.wait(1000);
+
+    cy.get('[data-test=metrics-edit-popover]').should('not.be.visible');
+  });
 });
diff --git a/superset-frontend/src/explore/components/AdhocFilterEditPopover.jsx b/superset-frontend/src/explore/components/AdhocFilterEditPopover.jsx
index e12adb9..be55fa0 100644
--- a/superset-frontend/src/explore/components/AdhocFilterEditPopover.jsx
+++ b/superset-frontend/src/explore/components/AdhocFilterEditPopover.jsx
@@ -85,7 +85,8 @@ export default class AdhocFilterEditPopover extends React.Component {
   }
 
   onSave() {
-    this.props.onChange(this.state.adhocFilter);
+    // unset isNew here in case save button was clicked when no changes were made
+    this.props.onChange({ ...this.state.adhocFilter, isNew: false });
     this.props.onClose();
   }
 
@@ -163,7 +164,7 @@ export default class AdhocFilterEditPopover extends React.Component {
               datasource={datasource}
               onHeightChange={this.adjustHeight}
               partitionColumn={partitionColumn}
-              popoverRef={this.popoverContentRef}
+              popoverRef={this.popoverContentRef.current}
             />
           </Tabs.TabPane>
           <Tabs.TabPane
diff --git a/superset-frontend/src/explore/components/AdhocFilterEditPopoverSimpleTabContent.jsx b/superset-frontend/src/explore/components/AdhocFilterEditPopoverSimpleTabContent.jsx
index 07d2933..a040219 100644
--- a/superset-frontend/src/explore/components/AdhocFilterEditPopoverSimpleTabContent.jsx
+++ b/superset-frontend/src/explore/components/AdhocFilterEditPopoverSimpleTabContent.jsx
@@ -100,7 +100,7 @@ export default class AdhocFilterEditPopoverSimpleTabContent extends React.Compon
     };
 
     this.menuPortalProps = {
-      menuPortalTarget: props.popoverRef?.current || document.body,
+      menuPortalTarget: props.popoverRef,
       menuPosition: 'fixed',
       menuPlacement: 'bottom',
     };
diff --git a/superset-frontend/src/explore/components/AdhocMetricEditPopover.jsx b/superset-frontend/src/explore/components/AdhocMetricEditPopover.jsx
index 2bc1f1e..3204948 100644
--- a/superset-frontend/src/explore/components/AdhocMetricEditPopover.jsx
+++ b/superset-frontend/src/explore/components/AdhocMetricEditPopover.jsx
@@ -100,9 +100,11 @@ export default class AdhocMetricEditPopover extends React.Component {
   }
 
   onSave() {
+    // unset isNew here in case save button was clicked when no changes were made
     this.props.onChange({
       ...this.state.adhocMetric,
       ...this.props.title,
+      isNew: false,
     });
     this.props.onClose();
   }