PromucFlow_constructor/app/client
Rahul Barwal 6507f90e05
fix: Incorrect updation of selctedRowIndex when primary column is set. (#36393)
## Description
<ins> Problem statement </ins>
1. Table should have a primary column set.
2. The table should be filtered(via search or client side filters)
3. there should be a selectedRow in table
a. One way to ensure is add a text widget and bind it to table's
`selectedRowIndex` property.

If you now run a query that updates the data behind the table: the
`selectedRow` is updated to (seemingly) random row and selectedRowIndex
is updated as well

<ins> Rootcause </ins>
We have a mechanism of preserving `selectedRow` when data updates
happen.
Underlying logic gets the previous selected row and tries to find it in
the new data using the primary key.
* If it finds it, it updates the selectedRowIndex to the
`__original_index__` of the found row i.e. its position in the original
data before any filters were applied.

<ins> Solution </ins>
We update the selectedRowIndex to the index in the new filtered data.

<ins> How to test </ins>
1. Create a table with a primary key
2. Add a text widget and bind it to table's `selectedRowIndex` property
3. Filter the table
4. Click on a row to select it
5. Run a query that updates the data behind the table
6. Assert that the selected row is the same and that the
selectedRowIndex is updated to the new index


Fixes #36080
_or_  
Fixes `Issue URL`
> [!WARNING]  
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._

## Automation

/ok-to-test tags="@tag.Table, @tag.Binding, @tag.Sanity"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/10953679202>
> Commit: 1a2d64467e453229940b67b29da1ce9d0e9ac24d
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10953679202&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Table, @tag.Binding, @tag.Sanity`
> Spec:
> <hr>Fri, 20 Sep 2024 06:30:08 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

## Summary by CodeRabbit

- **Improvements**
- Enhanced the efficiency of the TableWidgetV2 by streamlining the
method for retrieving the index of selected rows.
- Improved code readability and maintainability without altering the
overall functionality.

- **New Features**
- Introduced new test cases to validate filtering and searching
functionalities within the Table Widget V2.
- Added a JSON configuration for a data-driven table interface,
supporting sorting, filtering, and dynamic data binding.
- Introduced fixture data for testing, allowing for comprehensive
validation of table behavior under various conditions.
- Added a JavaScript object containing employee data to facilitate
filtering and display in the table.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-09-20 12:25:23 +05:30
..
.husky ci: Add pre push hook to not allow ee changes in ce (#35276) 2024-07-30 12:11:27 +05:30
.yarn
cypress fix: Incorrect updation of selctedRowIndex when primary column is set. (#36393) 2024-09-20 12:25:23 +05:30
docker/templates
generators
packages chore:delete unused files (#36368) 2024-09-19 16:01:03 +03:00
public chore: add reo client sdk to index.html (#36408) 2024-09-20 10:51:45 +05:30
src fix: Incorrect updation of selctedRowIndex when primary column is set. (#36393) 2024-09-20 12:25:23 +05:30
test fix: Prevent Errors in Debugger When Deleting List Widget (#35820) 2024-08-30 10:38:19 +01:00
typings
.babelrc chore: rename old ADS package (#35517) 2024-08-08 15:55:00 +03:00
.dockerignore
.editorconfig
.eslintrc.base.json chore: add blank line eslint rule (#36369) 2024-09-18 19:35:28 +03:00
.eslintrc.js fix: change appsmith alias (#35349) 2024-08-06 17:52:22 +03:00
.fork-ts-checkerrc
.gitignore
.lintstagedrc.json
.nvmrc
.prettierignore
.prettierrc
.sentryclirc
.yarnrc.yml
build.sh chore: reverted client profiled build (#35306) 2024-07-31 15:23:08 +05:30
craco.build.config.js chore: Prefetch module apis in service worker (#34003) 2024-06-14 16:30:23 +05:30
craco.common.config.js
craco.dev.config.js chore: Prefetch module apis in service worker (#34003) 2024-06-14 16:30:23 +05:30
cypress_ci_custom.config.ts chore: change snapshot package (#35867) 2024-09-12 11:09:42 +03:00
cypress_ci_hosted.config.ts chore: change snapshot package (#35867) 2024-09-12 11:09:42 +03:00
cypress_ci.config.ts chore: change snapshot package (#35867) 2024-09-12 11:09:42 +03:00
cypress-add-tags.js
cypress.config.ts chore: change snapshot package (#35867) 2024-09-12 11:09:42 +03:00
download-assets.js
jest.config.js chore: Rename wds packages (#35686) 2024-08-16 11:19:42 +05:30
knip.json chore:delete unused files (#36368) 2024-09-19 16:01:03 +03:00
package.json chore:delete unused files (#36368) 2024-09-19 16:01:03 +03:00
README.md
README.old.md
start-caddy.sh chore: Remove deprecated start-https.sh message (#33856) 2024-05-31 07:18:57 +05:30
start-https.sh chore: Remove deprecated start-https.sh message (#33856) 2024-05-31 07:18:57 +05:30
tailwind.config.js
tsconfig.json chore: upgrade typescript to 5.4 (#35181) 2024-07-30 16:15:48 +02:00
tsconfig.path.json chore: rename old ADS package (#35517) 2024-08-08 15:55:00 +03:00
vercel.json
yarn.lock chore:delete unused files (#36368) 2024-09-19 16:01:03 +03:00

Appsmith Client

This project was bootstrapped with Create React App.

For details on setting up your development machine, please refer to the Setup Guide