From a07c9d591b073203be042b5512c52fbb47184189 Mon Sep 17 00:00:00 2001 From: Ville Brofeldt <33317356+villebro@users.noreply.github.com> Date: Fri, 1 Oct 2021 17:13:38 +0200 Subject: [PATCH] fix(dashboard): recursive parent on dashboard components (#16933) * fix(dashboard): don't add recursive parents on wrapper component * add test * refine logic and add new test --- .../dashboard/util/newEntitiesFromDrop_spec.js | 8 ++++++-- .../src/dashboard/util/newEntitiesFromDrop.js | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/superset-frontend/spec/javascripts/dashboard/util/newEntitiesFromDrop_spec.js b/superset-frontend/spec/javascripts/dashboard/util/newEntitiesFromDrop_spec.js index 339ab1e382..6ab80569de 100644 --- a/superset-frontend/spec/javascripts/dashboard/util/newEntitiesFromDrop_spec.js +++ b/superset-frontend/spec/javascripts/dashboard/util/newEntitiesFromDrop_spec.js @@ -94,7 +94,11 @@ describe('newEntitiesFromDrop', () => { expect(result.a.children).toHaveLength(1); expect(Object.keys(result)).toHaveLength(3); - expect(result[newRowId].type).toBe(ROW_TYPE); - expect(result[newChartId].type).toBe(CHART_TYPE); + const newRow = result[newRowId]; + expect(newRow.type).toBe(ROW_TYPE); + expect(newRow.parents).toEqual(['a']); + const newChart = result[newChartId]; + expect(newChart.type).toBe(CHART_TYPE); + expect(newChart.parents).toEqual(['a', newRowId]); }); }); diff --git a/superset-frontend/src/dashboard/util/newEntitiesFromDrop.js b/superset-frontend/src/dashboard/util/newEntitiesFromDrop.js index c0e515768b..3b3a9148eb 100644 --- a/superset-frontend/src/dashboard/util/newEntitiesFromDrop.js +++ b/superset-frontend/src/dashboard/util/newEntitiesFromDrop.js @@ -51,8 +51,8 @@ export default function newEntitiesFromDrop({ dropResult, layout }) { rowWrapper.children = [newDropChild.id]; rowWrapper.parents = (dropEntity.parents || []).concat(dropEntity.id); newEntities[rowWrapper.id] = rowWrapper; - newDropChild = rowWrapper; newDropChild.parents = rowWrapper.parents.concat(rowWrapper.id); + newDropChild = rowWrapper; } else if (dragType === TABS_TYPE) { // create a new tab component const tabChild = newComponentFactory(TAB_TYPE);