## Description
- This PR adds setter methods to update widget property
programmatically.
Example:-
`Input1.setText("setter methods are cool!");`
Docs link :
https://docs.appsmith.com/reference/widgets
For any selected widget check the `Methods` section
#### PR fixes following issue(s)
Fixes
#### Type of change
- New feature (non-breaking change which adds functionality)
## Testing
>
#### How Has This Been Tested?
- [x] Manual
- [x] Jest
- [x] Cypress
>
>
#### Test Plan
https://github.com/appsmithorg/TestSmith/issues/2409
#### Issues raised during DP testing
- [x] [Errors are not logged in the
debugger](https://github.com/appsmithorg/appsmith/pull/23441#issuecomment-1564017346)
separate GitHub issue
https://github.com/appsmithorg/appsmith/issues/24609
- [x]
https://github.com/appsmithorg/appsmith/pull/23441#issuecomment-1564155545
( `setVisibility("false")` )
- [x]
https://github.com/appsmithorg/appsmith/pull/23441#issuecomment-1580525843
- [x]
https://github.com/appsmithorg/appsmith/pull/23441#issuecomment-1576582825
- Blocker for testing
- [x]
https://github.com/appsmithorg/appsmith/pull/23441#issuecomment-1577956441
- [x]
https://github.com/appsmithorg/appsmith/pull/23441#issuecomment-1577930108
- Not a issue (lint error query)
- [x]
https://github.com/appsmithorg/appsmith/pull/23441#issuecomment-1593471791
- [x]
https://github.com/appsmithorg/appsmith/pull/23441#issuecomment-1591440488
- [x]
https://github.com/appsmithorg/appsmith/pull/23441#issuecomment-1586747864
- [x]
https://github.com/appsmithorg/appsmith/pull/23441#issuecomment-1596738201
- [x]
https://github.com/appsmithorg/appsmith/pull/23441#issuecomment-1598541537
- [x]
https://github.com/appsmithorg/appsmith/pull/23441#issuecomment-1611413076
- [x]
https://github.com/appsmithorg/appsmith/pull/23441#issuecomment-1612621567
- [ ]
https://github.com/appsmithorg/appsmith/pull/23441#issuecomment-1619654507
- [ ]
https://github.com/appsmithorg/appsmith/pull/23441#issuecomment-1621256722
>
>
## Checklist:
#### Dev activity
- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
#### QA activity:
- [ ] [Speedbreak
features](https://github.com/appsmithorg/TestSmith/wiki/Test-plan-implementation#speedbreaker-features-to-consider-for-every-change)
have been covered
- [x] Test plan covers all impacted features and [areas of
interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans/_edit#areas-of-interest)
- [x] Test plan has been peer reviewed by project stakeholders and other
QA members
- [ ] Manually tested functionality on DP
- [ ] We had an implementation alignment call with stakeholders post QA
Round 2
- [ ] Cypress test cases have been added and approved by SDET/manual QA
- [ ] Added `Test Plan Approved` label after Cypress tests were reviewed
- [ ] Added `Test Plan Approved` label after JUnit tests were reviewed
---------
Co-authored-by: Rishabh Rathod <rishabh.rathod@appsmith.com>
104 lines
3.3 KiB
TypeScript
104 lines
3.3 KiB
TypeScript
import type {
|
|
ConfigTree,
|
|
DataTree,
|
|
UnEvalTree,
|
|
} from "entities/DataTree/dataTreeFactory";
|
|
import { dataTreeEvaluator } from "./handlers/evalTree";
|
|
import type { DataTreeDiff } from "@appsmith/workers/Evaluation/evaluationUtils";
|
|
import type { EvalMetaUpdates } from "@appsmith/workers/common/DataTreeEvaluator/types";
|
|
import type { DependencyMap, EvalError } from "utils/DynamicBindingUtils";
|
|
import { makeEntityConfigsAsObjProperties } from "@appsmith/workers/Evaluation/dataTreeUtils";
|
|
import type { EvalTreeResponseData } from "./types";
|
|
import { MessageType, sendMessage } from "utils/MessageUtil";
|
|
import { MAIN_THREAD_ACTION } from "@appsmith/workers/Evaluation/evalWorkerActions";
|
|
import type { UpdateDataTreeMessageData } from "sagas/EvalWorkerActionSagas";
|
|
import type { JSUpdate } from "utils/JSPaneUtils";
|
|
import { setEvalContext } from "./evaluate";
|
|
|
|
export function evalTreeWithChanges(
|
|
updatedValuePaths: string[][],
|
|
metaUpdates: EvalMetaUpdates = [],
|
|
) {
|
|
let evalOrder: string[] = [];
|
|
let jsUpdates: Record<string, JSUpdate> = {};
|
|
let unEvalUpdates: DataTreeDiff[] = [];
|
|
let nonDynamicFieldValidationOrder: string[] = [];
|
|
const isCreateFirstTree = false;
|
|
let dataTree: DataTree = {};
|
|
const errors: EvalError[] = [];
|
|
const logs: any[] = [];
|
|
const dependencies: DependencyMap = {};
|
|
let evalMetaUpdates: EvalMetaUpdates = metaUpdates;
|
|
let staleMetaIds: string[] = [];
|
|
const pathsToClearErrorsFor: any[] = [];
|
|
let unevalTree: UnEvalTree = {};
|
|
let configTree: ConfigTree = {};
|
|
|
|
if (dataTreeEvaluator) {
|
|
const setupUpdateTreeResponse =
|
|
dataTreeEvaluator.setupUpdateTreeWithDifferences(updatedValuePaths);
|
|
|
|
evalOrder = setupUpdateTreeResponse.evalOrder;
|
|
unEvalUpdates = setupUpdateTreeResponse.unEvalUpdates;
|
|
jsUpdates = setupUpdateTreeResponse.jsUpdates;
|
|
|
|
nonDynamicFieldValidationOrder =
|
|
setupUpdateTreeResponse.nonDynamicFieldValidationOrder;
|
|
const updateResponse = dataTreeEvaluator.evalAndValidateSubTree(
|
|
evalOrder,
|
|
nonDynamicFieldValidationOrder,
|
|
dataTreeEvaluator.oldConfigTree,
|
|
unEvalUpdates,
|
|
);
|
|
|
|
setEvalContext({
|
|
dataTree: dataTreeEvaluator.getEvalTree(),
|
|
configTree: dataTreeEvaluator.getConfigTree(),
|
|
isDataField: false,
|
|
isTriggerBased: true,
|
|
});
|
|
|
|
dataTree = makeEntityConfigsAsObjProperties(dataTreeEvaluator.evalTree, {
|
|
evalProps: dataTreeEvaluator.evalProps,
|
|
});
|
|
|
|
evalMetaUpdates = JSON.parse(
|
|
JSON.stringify(updateResponse.evalMetaUpdates),
|
|
);
|
|
staleMetaIds = updateResponse.staleMetaIds;
|
|
unevalTree = dataTreeEvaluator.getOldUnevalTree();
|
|
configTree = dataTreeEvaluator.oldConfigTree;
|
|
}
|
|
|
|
const evalTreeResponse: EvalTreeResponseData = {
|
|
dataTree,
|
|
dependencies,
|
|
errors,
|
|
evalMetaUpdates,
|
|
evaluationOrder: evalOrder,
|
|
jsUpdates,
|
|
logs,
|
|
unEvalUpdates,
|
|
isCreateFirstTree,
|
|
configTree,
|
|
staleMetaIds,
|
|
pathsToClearErrorsFor,
|
|
isNewWidgetAdded: false,
|
|
undefinedEvalValuesMap: dataTreeEvaluator?.undefinedEvalValuesMap || {},
|
|
jsVarsCreatedEvent: [],
|
|
};
|
|
|
|
const data: UpdateDataTreeMessageData = {
|
|
workerResponse: evalTreeResponse,
|
|
unevalTree,
|
|
};
|
|
|
|
sendMessage.call(self, {
|
|
messageType: MessageType.DEFAULT,
|
|
body: {
|
|
data,
|
|
method: MAIN_THREAD_ACTION.UPDATE_DATATREE,
|
|
},
|
|
});
|
|
}
|