diff --git a/app/client/src/components/editorComponents/Debugger/helpers.test.ts b/app/client/src/components/editorComponents/Debugger/helpers.test.ts index fa7e67d134..3dc059c6ce 100644 --- a/app/client/src/components/editorComponents/Debugger/helpers.test.ts +++ b/app/client/src/components/editorComponents/Debugger/helpers.test.ts @@ -27,6 +27,215 @@ describe("getDependencies", () => { getDependenciesFromInverseDependencies(input, "Button1"), ).toStrictEqual(output); }); + it("Check if getDependencies returns correct dependencies when widget names are overlapping", () => { + const input = { + "SelectQuery.data": ["SelectQuery", "data_table.tableData"], + "Input1.defaultText": ["Input1.text", "Input1"], + "Input1.text": ["Input1.value", "Input1.isValid", "Input1"], + "Input1.inputType": ["Input1.isValid", "Input1"], + "Input1.isRequired": ["Input1.isValid", "Input1"], + "Input1.isValid": ["Input1"], + "Input1.value": ["Input1"], + "data_table.defaultSelectedRow": [ + "data_table.selectedRowIndex", + "data_table.selectedRowIndices", + "data_table", + ], + "data_table.selectedRowIndex": [ + "Form1.isVisible", + "data_table.selectedRow", + "data_table", + ], + "Form1.isVisible": ["Form1"], + "col_text_2.text": ["col_text_2.value", "col_text_2"], + "col_text_2.value": ["col_text_2"], + "col_text_1.text": ["col_text_1.value", "col_text_1"], + "col_text_1.value": ["col_text_1"], + "data_table.tableData": [ + "data_table.sanitizedTableData", + "insert_col_input5.placeholderText", + "insert_col_input2.placeholderText", + "insert_col_input1.placeholderText", + "data_table", + ], + "data_table.defaultSearchText": ["data_table.searchText", "data_table"], + "data_table.sanitizedTableData": [ + "data_table.primaryColumns.Description.computedValue", + "data_table.primaryColumns.Name.computedValue", + "data_table.primaryColumns.rowIndex.computedValue", + "data_table.primaryColumns.customColumn1.buttonLabel", + "data_table.tableColumns", + "data_table.filteredTableData", + "data_table.selectedRow", + "data_table.selectedRows", + "data_table", + ], + "data_table.primaryColumns.Description.computedValue": [ + "data_table.primaryColumns.Description", + ], + "data_table.primaryColumns.Name.computedValue": [ + "data_table.primaryColumns.Name", + ], + "data_table.primaryColumns.rowIndex.computedValue": [ + "data_table.primaryColumns.rowIndex", + ], + "data_table.primaryColumns.customColumn1.buttonLabel": [ + "data_table.primaryColumns.customColumn1", + ], + "data_table.primaryColumns.customColumn1": ["data_table.primaryColumns"], + "data_table.primaryColumns.rowIndex": ["data_table.primaryColumns"], + "data_table.primaryColumns.Name": ["data_table.primaryColumns"], + "data_table.primaryColumns.Description": ["data_table.primaryColumns"], + "data_table.primaryColumns": [ + "data_table.tableColumns", + "data_table.filteredTableData", + "data_table", + ], + "data_table.sortOrder.column": [ + "data_table.tableColumns", + "data_table.filteredTableData", + "data_table.sortOrder", + ], + "data_table.sortOrder.order": [ + "data_table.tableColumns", + "data_table.filteredTableData", + "data_table.sortOrder", + ], + "data_table.columnOrder": ["data_table.tableColumns", "data_table"], + "data_table.derivedColumns": [ + "data_table.filteredTableData", + "data_table", + ], + "data_table.tableColumns": ["data_table.filteredTableData", "data_table"], + "data_table.searchText": ["data_table.filteredTableData", "data_table"], + "data_table.filters": ["data_table.filteredTableData", "data_table"], + "data_table.filteredTableData": [ + "data_table.selectedRow", + "data_table.selectedRows", + "data_table", + ], + "data_table.selectedRow": ["colInput1.defaultText", "data_table"], + "colInput1.defaultText": ["colInput1.text", "colInput1"], + "colInput1.text": ["colInput1.value", "colInput1.isValid", "colInput1"], + "colInput1.validation": ["colInput1.isValid", "colInput1"], + "colInput1.inputType": ["colInput1.isValid", "colInput1"], + "colInput1.isRequired": ["colInput1.isValid", "colInput1"], + "colInput1.isValid": ["colInput1"], + "colInput1.value": ["colInput1"], + "Text13.text": ["Text13.value", "Text13"], + "Text13.value": ["Text13"], + "insert_col_input5.defaultText": [ + "insert_col_input5.text", + "insert_col_input5", + ], + "insert_col_input5.text": [ + "insert_col_input5.value", + "insert_col_input5.isValid", + "insert_col_input5", + ], + "insert_col_input5.validation": [ + "insert_col_input5.isValid", + "insert_col_input5", + ], + "insert_col_input5.inputType": [ + "insert_col_input5.isValid", + "insert_col_input5", + ], + "insert_col_input5.isRequired": [ + "insert_col_input5.isValid", + "insert_col_input5", + ], + "insert_col_input5.placeholderText": ["insert_col_input5"], + "insert_col_input5.isValid": ["insert_col_input5"], + "insert_col_input5.value": ["insert_col_input5"], + "Text24.text": ["Text24.value", "Text24"], + "Text24.value": ["Text24"], + "insert_col_input2.defaultText": [ + "insert_col_input2.text", + "insert_col_input2", + ], + "insert_col_input2.text": [ + "insert_col_input2.value", + "insert_col_input2.isValid", + "insert_col_input2", + ], + "insert_col_input2.validation": [ + "insert_col_input2.isValid", + "insert_col_input2", + ], + "insert_col_input2.inputType": [ + "insert_col_input2.isValid", + "insert_col_input2", + ], + "insert_col_input2.isRequired": [ + "insert_col_input2.isValid", + "insert_col_input2", + ], + "insert_col_input2.placeholderText": ["insert_col_input2"], + "insert_col_input2.isValid": ["insert_col_input2"], + "insert_col_input2.value": ["insert_col_input2"], + "Text22.text": ["Text22.value", "Text22"], + "Text22.value": ["Text22"], + "insert_col_input1.defaultText": [ + "insert_col_input1.text", + "insert_col_input1", + ], + "insert_col_input1.text": [ + "insert_col_input1.value", + "insert_col_input1.isValid", + "insert_col_input1", + ], + "insert_col_input1.validation": [ + "insert_col_input1.isValid", + "insert_col_input1", + ], + "insert_col_input1.inputType": [ + "insert_col_input1.isValid", + "insert_col_input1", + ], + "insert_col_input1.isRequired": [ + "insert_col_input1.isValid", + "insert_col_input1", + ], + "insert_col_input1.placeholderText": ["insert_col_input1"], + "insert_col_input1.isValid": ["insert_col_input1"], + "insert_col_input1.value": ["insert_col_input1"], + "Text21.text": ["Text21.value", "Text21"], + "Text21.value": ["Text21"], + "Text12.text": ["Text12.value", "Text12"], + "Text12.value": ["Text12"], + "delete_button.buttonStyle": [ + "delete_button.prevButtonStyle", + "delete_button", + ], + "delete_button.prevButtonStyle": ["delete_button"], + "Button1.buttonStyle": ["Button1.prevButtonStyle", "Button1"], + "Button1.prevButtonStyle": ["Button1"], + "Text11.text": ["Text11.value", "Text11"], + "Text11.value": ["Text11"], + "Text16.text": ["Text16.value", "Text16"], + "Text16.value": ["Text16"], + "data_table.bottomRow": ["data_table.pageSize", "data_table"], + "data_table.topRow": ["data_table.pageSize", "data_table"], + "data_table.parentRowSpace": ["data_table.pageSize", "data_table"], + "data_table.selectedRowIndices": [ + "data_table.selectedRows", + "data_table", + ], + "data_table.selectedRows": ["data_table"], + "data_table.pageSize": ["data_table"], + "data_table.triggerRowSelection": ["data_table"], + "data_table.sortOrder": ["data_table"], + }; + const output = { + directDependencies: [], + inverseDependencies: [], + }; + + expect( + getDependenciesFromInverseDependencies(input, "Input1"), + ).toStrictEqual(output); + }); it("Get dependency chain", () => { const inputs: string[] = ["Button1.text", "DatePicker1.value"]; diff --git a/app/client/src/components/editorComponents/Debugger/helpers.tsx b/app/client/src/components/editorComponents/Debugger/helpers.tsx index 7f54524ccd..ce528257e3 100644 --- a/app/client/src/components/editorComponents/Debugger/helpers.tsx +++ b/app/client/src/components/editorComponents/Debugger/helpers.tsx @@ -64,30 +64,23 @@ export function getDependenciesFromInverseDependencies( deps: DependencyMap, entityName: string | null, ) { + // eslint-disable-next-line no-console + console.log("DEPENDENCY", deps); if (!entityName) return null; const directDependencies = new Set(); const inverseDependencies = new Set(); Object.entries(deps).forEach(([dependant, dependencies]) => { + const { entityName: entity } = getEntityNameAndPropertyPath(dependant); (dependencies as any).map((dependency: any) => { - if (!dependant.includes(entityName) && dependency.includes(entityName)) { - const entity = dependant - .split(".") - .slice(0, 1) - .join(""); - + const { entityName: entityDependency } = getEntityNameAndPropertyPath( + dependency, + ); + if (entity !== entityName && entityDependency === entityName) { directDependencies.add(entity); - } else if ( - dependant.includes(entityName) && - !dependency.includes(entityName) - ) { - const entity = dependency - .split(".") - .slice(0, 1) - .join(""); - - inverseDependencies.add(entity); + } else if (entity === entityName && entityDependency !== entityName) { + inverseDependencies.add(entityDependency); } }); });