PromucFlow_constructor/app/client
Jacques Ikot f87f17e610
fix: parsing of nested parentheses in TableComputeValue expressions (#40326)
## Problem
The table compute value parser was unable to handle expressions with
nested parentheses, causing incorrect extraction of computation
expressions when functions with multiple parameters or nested function
calls were used. This caused issues when users tried to use more complex
expressions like `JSObject1.somefunction(currentRow["id"] || 0)`.

## Solution
Implemented a proper nested parentheses tracking algorithm that counts
opening and closing parentheses to find the correct end of the
computation expression, rather than simply looking for the first closing
parenthesis sequence.

## Why This Approach
This solution is robust because it:
1. Properly handles any level of nested parentheses in function calls
2. Maintains backward compatibility with existing simple expressions
3. Provides a more accurate way to extract the computation expression

## Testing
- Added a new test case with nested parentheses:
`JSObject1.somefunction(currentRow["id"] || 0)`
- Ensured existing test cases still pass
- Manually verified with complex expressions containing multiple nested
parentheses

This fix enables users to write more complex table computations
involving function calls with multiple parameters and conditions.


Fixes #40265 

## Automation

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

### 🔍 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/14610729968>
> Commit: abbbaebfe5cf723109bee517e5f6f0cebf96a74a
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=14610729968&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Table, @tag.Widget, @tag.Binding, @tag.Sanity,
@tag.PropertyPane`
> Spec:
> <hr>Wed, 23 Apr 2025 07:45:26 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

- **Bug Fixes**
- Improved handling of computed values in table controls to correctly
process nested parentheses and avoid errors from malformed expressions.

- **Tests**
- Added test cases for complex computed expressions with nested
parentheses, logical operators, and malformed inputs to ensure
robustness.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Vivekanand Ilango <vivek@Vivekanands-MacBook-Pro.local>
Co-authored-by: Vivekanand Ilango <vivek.ilango@appsmith.com>
2025-04-25 03:10:03 -07:00
..
.husky ci: Add pre push hook to not allow ee changes in ce (#35276) 2024-07-30 12:11:27 +05:30
.yarn
config fix: sourcemaps (#39301) 2025-02-16 20:05:50 +03:00
cypress ci: Fixing the page actions spec (#40328) 2025-04-22 11:35:14 +05:30
docker/templates chore: add grafana faro sdk (CE) (#38301) 2024-12-26 10:37:41 +05:30
generators
packages fix: Handling erroneous state in Entity item ADS template (#40363) 2025-04-24 17:54:22 +05:30
public chore: add maximum-scale to avoid zoom on inputs in iOS (#40171) 2025-04-08 19:16:31 +05:30
scripts chore: Eject CRA (#39264) 2025-02-14 14:24:41 +05:30
src fix: parsing of nested parentheses in TableComputeValue expressions (#40326) 2025-04-25 03:10:03 -07:00
test chore: Removing feature flag for app IDE new entity explorer (#39912) 2025-04-03 12:07:24 +05:30
typings
.babelrc chore: Eject CRA (#39264) 2025-02-14 14:24:41 +05:30
.dockerignore
.editorconfig
.eslintrc.base.json feat: add react-compiler eslint plugin (#37139) 2024-10-31 16:40:18 +01: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 fix: sourcemaps (#39301) 2025-02-16 20:05:50 +03:00
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: add grafana faro sdk (CE) (#38301) 2024-12-26 10:37:41 +05:30
knip.json chore: Eject CRA (#39264) 2025-02-14 14:24:41 +05:30
package.json fix: storybook build and small improvements for stories (#39936) 2025-03-26 18:04:30 +03:00
README.md
README.old.md
start-caddy.sh
start-https.sh chore: convert consolidated api etag to a weak one (#38939) 2025-01-31 16:35:20 +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: ab test simple git reset in git status api (#39959) 2025-04-01 21:36:08 +05:30

Appsmith Client

This project was bootstrapped with Create React App.

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