PromucFlow_constructor/app/client/src/workers/Evaluation/replayUtils.ts

181 lines
3.8 KiB
TypeScript
Raw Normal View History

feat: Simplified Google Sheets queries (#14869) * Client changes 1 * add DSL functionality * Temp commit for refactoring changes * Do I even know what I'm doing here? * chore: Second GS layout * Update: Visibility conditional outputs for schemas - Added the output from conditional outputs for schema children too * Update: Entity selector visibility control - Added logic for controlling visibility of sub components via the JS expressions system * Update: Passing disabled prop to toggle button * Update: Passing disabled prop to toggle btn * Update: Styled component for toggle button - Added disabled styles based on the disabled prop sent to the toggle form view JSON button * Update: configProperty role in Entity Selector - Removed dependance of the configProperty of the entity selector children to it's parent component * Update: type of placeholder key - Made placeholder key from form config JSON to accept either string or an object - Earlier only string was accepted - This is for pagination component * Update: Added placeholder control for pagination * Client changes 1 * add DSL functionality * Do I even know what I'm doing here? * fix: updated uqi forms ui, clubbed JS switch button to ads, updated tooltip design * fix: updated tooltip component for wrong ui on entity explore * temp triggers * fix: updated uqi forms ui, clubbed JS switch button to ads, updated tooltip design (#12395) * fix: updated uqi forms ui, clubbed JS switch button to ads, updated tooltip design * fix: updated tooltip component for wrong ui on entity explore * fix: updated tooltip ui, where condition placement, sort by ui * temp form data access logic * fix: updated sorting type width ui * fix: updated ui for spacing, width and text issues * Update: Type for tooltip of UQI forms - Added option to send an object to the tooltipText object. - This allows for composite components like pagination to have tooltips for each sub component * Update: tooltip for pagination component - Added handling to parse the tooltip for multiple components. - This allows for composite components like pagination to have tooltips for each sub component * Update: Type cast for tooltip component - Made the content passed to tooltip component as a string only * Update: Fixed tooltip component CSS * Update: Dropdown option component - Added a tooltip wrapper to each option - This is to show on hover text like disabled state * fix: updated ẇhere clause broken ui for condition * Add: functions to check and extract expressions - Loop through the formConfig and find any keys that have a value that is bindable - Used pre defined regex to check if value is a moustache binding * Add: Types for evaluated form configs - Added types for the form configs to be evaluated and their output post eval * Add: Flow to run the form config - Run the form config and update the result to the redux state * Update: Name of the type for formconfigs - Updated since it was clashing with a component of the same name * Add: Function to enforce config type checks - This is done so that the improper configs can be weeded out and the rest of the form can be shown * Add: Function to update evaluated config - Added option to update the config if it's values needed evaluation * Add: Type check for schema sections * Update: Error handling for invalid control type - We were throwing an exception till now, changed it to a warning text * Add: Exposed tooltip for dropdown option disabled state * Update: switch to json mode functionality - Added logic to convert data to a string rather than an object when the first switch to JSON mode happens * Update: Added key to tooltip for dropdown options * Trigger API modification * Add: function to fetch default trigger URL * Update: Made URL optional in dynamic trigger config * Update: Dynamic trigger API call - Made the API call for dynamic triggers have URL as optional field - Added type check to the response of the API call * Update: resp type for trigger APIs * Update: Moved code to utils folder - Moved functions for UQI form eval processing to utils file * Update: passing original controltype to JS switch * Update: config for JSON editor mode - Updated the config to have different options for JSON mode depending on the original control type * Update: Connected line numbers flag to config * Revert: CSS changes for tooltip * Refactor: Removed consle * Add: type for the config of dynamic values * Add: Feature to evaluate config for triggers * Refactor: fix type check errors * fix: dropdown ui width with text alignment * Update: fixed selector for dynamic values * Update: selector call for fetchDynamicValues * Add table header index prop for columns selector * migration partial commit * migration partial commit * Refactor: removed unused import * Update: reused function for checking dynamic value * Update: removed unused import * Fix format JSON issues * Retrieve binding paths from entity selector components * Fixes 6 remaining issues with UQI implementation * Fix dropdown issues * Fix dropdown height issues and fixes triggering of APIs when option is deselected * Migration changes * Fix QA generated UQI issues * Fix projection component height and route change logic * Fix multi select dropdown placeholder text issue and json stringify issue with switching view types * Reset entity type value when command value changes * Test changes * Review comments * Moved migrations around * Corrected import statement * Added JSON schema migration * Updated schema version * perf improvements and filter dropdown options feature * Fix Code mirror component config for toggleComponentToJson input fields. * Fix prettier issues * fix prettier issues * Fix style issues as a result of the merged conflicts * Fix failing test case * Fixed a few other flows (#14225) * Fixed a few other flows * Review comments * Fix generate CRUD, fix evaluation of dynamic bindings and fix various styling issues. * More fixes (#14367) * Factor in the root formconfig parent key. * Fix flickering issues, and evaluatedFormConfig issues * fix: Teeny bugs (#14455) * Teeny bugs * Added previous functionality as is * Improvements in the way we fetch dynamic values * Fix stringiification issue and cyclic dependency issues * Resolve projection component values deletion * Resolve merge conflicts and fix prettier issues * fix: Tsc issues * Fix property pane connection navigation * updating ee locator * updating inputfield locator * dropdown locator update * Merge conflict not properly resolved. * Fix s3 spec * Fix Mongo Spec * Fix some more tests * fix: prevent cyclic dependency when switching to js mode (#14668) * add delete events for change from array to string in diff * add test to assert absence of cyclic dependency error when switching to js in switchgroup widget * Assert that evaluation is not disabled when no cyclic dependency happens * Cypress test preparations for google sheets and form controls * Fixed a few test errors (#14874) * Add: unit tests for uqi UI updates - view type tests - conditional output extraction - processing conditional output to handle view/enabled state of the component * Add: completed isValidFormConfig test * Update: improved tests for update config - These tests cover the functionality to update a section config after it's components are done evaluating * Fix failing cypress tests and cyclic dependency issue * Fixes some more tests * Fixed migration of row objects (#14896) * Bumped the version of design system package * Update: reverted change to EE selector * Fix deletion pointer * Update: selector for js on load spec - Synced with changes related to ADS dropdown * Fix mongoDBShoppingCart spec * Remove comments * Fix: mongo shopping cart test failures * fix: mongo shopping cart spec * Dummy push to retrigger vercel * fix: mongo shopping cart spec * Update MongoDBShoppingCart_spec.js * fix: removed unused click away * dummy commit * Update: moved helper functions to separate file * Add: added tests for saga functions - Worked on testing for - extractFetchDynamicValueFormConfigs - extractQueueOfValuesToBeFetched * Add if check for queueOfValuesToBeFetched * Resolve review comments * Empty-Commit Co-authored-by: Irongade <adeoluayangade@yahoo.com> Co-authored-by: Ayush Pahwa <ayush@appsmith.com> Co-authored-by: Aman Agarwal <aman@appsmith.com> Co-authored-by: Ayangade Adeoluwa <37867493+Irongade@users.noreply.github.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com> Co-authored-by: Favour Ohanekwu <fohanekwu@gmail.com> Co-authored-by: Albin <albin@appsmith.com>
2022-07-04 05:43:27 +00:00
import { get, set } from "lodash";
chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> ## Description This PR upgrades Prettier to v2 + enforces TypeScript’s [`import type`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export) syntax where applicable. It’s submitted as a separate PR so we can merge it easily. As a part of this PR, we reformat the codebase heavily: - add `import type` everywhere where it’s required, and - re-format the code to account for Prettier 2’s breaking changes: https://prettier.io/blog/2020/03/21/2.0.0.html#breaking-changes This PR is submitted against `release` to make sure all new code by team members will adhere to new formatting standards, and we’ll have fewer conflicts when merging `bundle-optimizations` into `release`. (I’ll merge `release` back into `bundle-optimizations` once this PR is merged.) ### Why is this needed? This PR is needed because, for the Lodash optimization from https://github.com/appsmithorg/appsmith/commit/7cbb12af886621256224be0c93e6a465dd710ad3, we need to use `import type`. Otherwise, `babel-plugin-lodash` complains that `LoDashStatic` is not a lodash function. However, just using `import type` in the current codebase will give you this: <img width="962" alt="Screenshot 2023-03-08 at 17 45 59" src="https://user-images.githubusercontent.com/2953267/223775744-407afa0c-e8b9-44a1-90f9-b879348da57f.png"> That’s because Prettier 1 can’t parse `import type` at all. To parse it, we need to upgrade to Prettier 2. ### Why enforce `import type`? Apart from just enabling `import type` support, this PR enforces specifying `import type` everywhere it’s needed. (Developers will get immediate TypeScript and ESLint errors when they forget to do so.) I’m doing this because I believe `import type` improves DX and makes refactorings easier. Let’s say you had a few imports like below. Can you tell which of these imports will increase the bundle size? (Tip: it’s not all of them!) ```ts // app/client/src/workers/Linting/utils.ts import { Position } from "codemirror"; import { LintError as JSHintError, LintOptions } from "jshint"; import { get, isEmpty, isNumber, keys, last, set } from "lodash"; ``` It’s pretty hard, right? What about now? ```ts // app/client/src/workers/Linting/utils.ts import type { Position } from "codemirror"; import type { LintError as JSHintError, LintOptions } from "jshint"; import { get, isEmpty, isNumber, keys, last, set } from "lodash"; ``` Now, it’s clear that only `lodash` will be bundled. This helps developers to see which imports are problematic, but it _also_ helps with refactorings. Now, if you want to see where `codemirror` is bundled, you can just grep for `import \{.*\} from "codemirror"` – and you won’t get any type-only imports. This also helps (some) bundlers. Upon transpiling, TypeScript erases type-only imports completely. In some environment (not ours), this makes the bundle smaller, as the bundler doesn’t need to bundle type-only imports anymore. ## Type of change - Chore (housekeeping or task changes that don't impact user perception) ## How Has This Been Tested? This was tested to not break the build. ### Test Plan > Add Testsmith test cases links that relate to this PR ### Issues raised during DP testing > Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR) ## Checklist: ### Dev activity - [x] 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 - [x] 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: - [ ] Test plan has been approved by relevant developers - [ ] Test plan has been peer reviewed by QA - [ ] Cypress test cases have been added and approved by either SDET or manual QA - [ ] Organized project review call with relevant stakeholders after Round 1/2 of QA - [ ] Added Test Plan Approved label after reveiwing all Cypress test --------- Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com>
2023-03-16 11:41:47 +00:00
import type { Diff } from "deep-diff";
feat: Simplified Google Sheets queries (#14869) * Client changes 1 * add DSL functionality * Temp commit for refactoring changes * Do I even know what I'm doing here? * chore: Second GS layout * Update: Visibility conditional outputs for schemas - Added the output from conditional outputs for schema children too * Update: Entity selector visibility control - Added logic for controlling visibility of sub components via the JS expressions system * Update: Passing disabled prop to toggle button * Update: Passing disabled prop to toggle btn * Update: Styled component for toggle button - Added disabled styles based on the disabled prop sent to the toggle form view JSON button * Update: configProperty role in Entity Selector - Removed dependance of the configProperty of the entity selector children to it's parent component * Update: type of placeholder key - Made placeholder key from form config JSON to accept either string or an object - Earlier only string was accepted - This is for pagination component * Update: Added placeholder control for pagination * Client changes 1 * add DSL functionality * Do I even know what I'm doing here? * fix: updated uqi forms ui, clubbed JS switch button to ads, updated tooltip design * fix: updated tooltip component for wrong ui on entity explore * temp triggers * fix: updated uqi forms ui, clubbed JS switch button to ads, updated tooltip design (#12395) * fix: updated uqi forms ui, clubbed JS switch button to ads, updated tooltip design * fix: updated tooltip component for wrong ui on entity explore * fix: updated tooltip ui, where condition placement, sort by ui * temp form data access logic * fix: updated sorting type width ui * fix: updated ui for spacing, width and text issues * Update: Type for tooltip of UQI forms - Added option to send an object to the tooltipText object. - This allows for composite components like pagination to have tooltips for each sub component * Update: tooltip for pagination component - Added handling to parse the tooltip for multiple components. - This allows for composite components like pagination to have tooltips for each sub component * Update: Type cast for tooltip component - Made the content passed to tooltip component as a string only * Update: Fixed tooltip component CSS * Update: Dropdown option component - Added a tooltip wrapper to each option - This is to show on hover text like disabled state * fix: updated ẇhere clause broken ui for condition * Add: functions to check and extract expressions - Loop through the formConfig and find any keys that have a value that is bindable - Used pre defined regex to check if value is a moustache binding * Add: Types for evaluated form configs - Added types for the form configs to be evaluated and their output post eval * Add: Flow to run the form config - Run the form config and update the result to the redux state * Update: Name of the type for formconfigs - Updated since it was clashing with a component of the same name * Add: Function to enforce config type checks - This is done so that the improper configs can be weeded out and the rest of the form can be shown * Add: Function to update evaluated config - Added option to update the config if it's values needed evaluation * Add: Type check for schema sections * Update: Error handling for invalid control type - We were throwing an exception till now, changed it to a warning text * Add: Exposed tooltip for dropdown option disabled state * Update: switch to json mode functionality - Added logic to convert data to a string rather than an object when the first switch to JSON mode happens * Update: Added key to tooltip for dropdown options * Trigger API modification * Add: function to fetch default trigger URL * Update: Made URL optional in dynamic trigger config * Update: Dynamic trigger API call - Made the API call for dynamic triggers have URL as optional field - Added type check to the response of the API call * Update: resp type for trigger APIs * Update: Moved code to utils folder - Moved functions for UQI form eval processing to utils file * Update: passing original controltype to JS switch * Update: config for JSON editor mode - Updated the config to have different options for JSON mode depending on the original control type * Update: Connected line numbers flag to config * Revert: CSS changes for tooltip * Refactor: Removed consle * Add: type for the config of dynamic values * Add: Feature to evaluate config for triggers * Refactor: fix type check errors * fix: dropdown ui width with text alignment * Update: fixed selector for dynamic values * Update: selector call for fetchDynamicValues * Add table header index prop for columns selector * migration partial commit * migration partial commit * Refactor: removed unused import * Update: reused function for checking dynamic value * Update: removed unused import * Fix format JSON issues * Retrieve binding paths from entity selector components * Fixes 6 remaining issues with UQI implementation * Fix dropdown issues * Fix dropdown height issues and fixes triggering of APIs when option is deselected * Migration changes * Fix QA generated UQI issues * Fix projection component height and route change logic * Fix multi select dropdown placeholder text issue and json stringify issue with switching view types * Reset entity type value when command value changes * Test changes * Review comments * Moved migrations around * Corrected import statement * Added JSON schema migration * Updated schema version * perf improvements and filter dropdown options feature * Fix Code mirror component config for toggleComponentToJson input fields. * Fix prettier issues * fix prettier issues * Fix style issues as a result of the merged conflicts * Fix failing test case * Fixed a few other flows (#14225) * Fixed a few other flows * Review comments * Fix generate CRUD, fix evaluation of dynamic bindings and fix various styling issues. * More fixes (#14367) * Factor in the root formconfig parent key. * Fix flickering issues, and evaluatedFormConfig issues * fix: Teeny bugs (#14455) * Teeny bugs * Added previous functionality as is * Improvements in the way we fetch dynamic values * Fix stringiification issue and cyclic dependency issues * Resolve projection component values deletion * Resolve merge conflicts and fix prettier issues * fix: Tsc issues * Fix property pane connection navigation * updating ee locator * updating inputfield locator * dropdown locator update * Merge conflict not properly resolved. * Fix s3 spec * Fix Mongo Spec * Fix some more tests * fix: prevent cyclic dependency when switching to js mode (#14668) * add delete events for change from array to string in diff * add test to assert absence of cyclic dependency error when switching to js in switchgroup widget * Assert that evaluation is not disabled when no cyclic dependency happens * Cypress test preparations for google sheets and form controls * Fixed a few test errors (#14874) * Add: unit tests for uqi UI updates - view type tests - conditional output extraction - processing conditional output to handle view/enabled state of the component * Add: completed isValidFormConfig test * Update: improved tests for update config - These tests cover the functionality to update a section config after it's components are done evaluating * Fix failing cypress tests and cyclic dependency issue * Fixes some more tests * Fixed migration of row objects (#14896) * Bumped the version of design system package * Update: reverted change to EE selector * Fix deletion pointer * Update: selector for js on load spec - Synced with changes related to ADS dropdown * Fix mongoDBShoppingCart spec * Remove comments * Fix: mongo shopping cart test failures * fix: mongo shopping cart spec * Dummy push to retrigger vercel * fix: mongo shopping cart spec * Update MongoDBShoppingCart_spec.js * fix: removed unused click away * dummy commit * Update: moved helper functions to separate file * Add: added tests for saga functions - Worked on testing for - extractFetchDynamicValueFormConfigs - extractQueueOfValuesToBeFetched * Add if check for queueOfValuesToBeFetched * Resolve review comments * Empty-Commit Co-authored-by: Irongade <adeoluayangade@yahoo.com> Co-authored-by: Ayush Pahwa <ayush@appsmith.com> Co-authored-by: Aman Agarwal <aman@appsmith.com> Co-authored-by: Ayangade Adeoluwa <37867493+Irongade@users.noreply.github.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com> Co-authored-by: Favour Ohanekwu <fohanekwu@gmail.com> Co-authored-by: Albin <albin@appsmith.com>
2022-07-04 05:43:27 +00:00
chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> ## Description This PR upgrades Prettier to v2 + enforces TypeScript’s [`import type`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export) syntax where applicable. It’s submitted as a separate PR so we can merge it easily. As a part of this PR, we reformat the codebase heavily: - add `import type` everywhere where it’s required, and - re-format the code to account for Prettier 2’s breaking changes: https://prettier.io/blog/2020/03/21/2.0.0.html#breaking-changes This PR is submitted against `release` to make sure all new code by team members will adhere to new formatting standards, and we’ll have fewer conflicts when merging `bundle-optimizations` into `release`. (I’ll merge `release` back into `bundle-optimizations` once this PR is merged.) ### Why is this needed? This PR is needed because, for the Lodash optimization from https://github.com/appsmithorg/appsmith/commit/7cbb12af886621256224be0c93e6a465dd710ad3, we need to use `import type`. Otherwise, `babel-plugin-lodash` complains that `LoDashStatic` is not a lodash function. However, just using `import type` in the current codebase will give you this: <img width="962" alt="Screenshot 2023-03-08 at 17 45 59" src="https://user-images.githubusercontent.com/2953267/223775744-407afa0c-e8b9-44a1-90f9-b879348da57f.png"> That’s because Prettier 1 can’t parse `import type` at all. To parse it, we need to upgrade to Prettier 2. ### Why enforce `import type`? Apart from just enabling `import type` support, this PR enforces specifying `import type` everywhere it’s needed. (Developers will get immediate TypeScript and ESLint errors when they forget to do so.) I’m doing this because I believe `import type` improves DX and makes refactorings easier. Let’s say you had a few imports like below. Can you tell which of these imports will increase the bundle size? (Tip: it’s not all of them!) ```ts // app/client/src/workers/Linting/utils.ts import { Position } from "codemirror"; import { LintError as JSHintError, LintOptions } from "jshint"; import { get, isEmpty, isNumber, keys, last, set } from "lodash"; ``` It’s pretty hard, right? What about now? ```ts // app/client/src/workers/Linting/utils.ts import type { Position } from "codemirror"; import type { LintError as JSHintError, LintOptions } from "jshint"; import { get, isEmpty, isNumber, keys, last, set } from "lodash"; ``` Now, it’s clear that only `lodash` will be bundled. This helps developers to see which imports are problematic, but it _also_ helps with refactorings. Now, if you want to see where `codemirror` is bundled, you can just grep for `import \{.*\} from "codemirror"` – and you won’t get any type-only imports. This also helps (some) bundlers. Upon transpiling, TypeScript erases type-only imports completely. In some environment (not ours), this makes the bundle smaller, as the bundler doesn’t need to bundle type-only imports anymore. ## Type of change - Chore (housekeeping or task changes that don't impact user perception) ## How Has This Been Tested? This was tested to not break the build. ### Test Plan > Add Testsmith test cases links that relate to this PR ### Issues raised during DP testing > Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR) ## Checklist: ### Dev activity - [x] 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 - [x] 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: - [ ] Test plan has been approved by relevant developers - [ ] Test plan has been peer reviewed by QA - [ ] Cypress test cases have been added and approved by either SDET or manual QA - [ ] Organized project review call with relevant stakeholders after Round 1/2 of QA - [ ] Added Test Plan Approved label after reveiwing all Cypress test --------- Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com>
2023-03-16 11:41:47 +00:00
import type { CanvasWidgetsReduxState } from "reducers/entityReducers/canvasWidgetsReducer";
feat: Simplified Google Sheets queries (#14869) * Client changes 1 * add DSL functionality * Temp commit for refactoring changes * Do I even know what I'm doing here? * chore: Second GS layout * Update: Visibility conditional outputs for schemas - Added the output from conditional outputs for schema children too * Update: Entity selector visibility control - Added logic for controlling visibility of sub components via the JS expressions system * Update: Passing disabled prop to toggle button * Update: Passing disabled prop to toggle btn * Update: Styled component for toggle button - Added disabled styles based on the disabled prop sent to the toggle form view JSON button * Update: configProperty role in Entity Selector - Removed dependance of the configProperty of the entity selector children to it's parent component * Update: type of placeholder key - Made placeholder key from form config JSON to accept either string or an object - Earlier only string was accepted - This is for pagination component * Update: Added placeholder control for pagination * Client changes 1 * add DSL functionality * Do I even know what I'm doing here? * fix: updated uqi forms ui, clubbed JS switch button to ads, updated tooltip design * fix: updated tooltip component for wrong ui on entity explore * temp triggers * fix: updated uqi forms ui, clubbed JS switch button to ads, updated tooltip design (#12395) * fix: updated uqi forms ui, clubbed JS switch button to ads, updated tooltip design * fix: updated tooltip component for wrong ui on entity explore * fix: updated tooltip ui, where condition placement, sort by ui * temp form data access logic * fix: updated sorting type width ui * fix: updated ui for spacing, width and text issues * Update: Type for tooltip of UQI forms - Added option to send an object to the tooltipText object. - This allows for composite components like pagination to have tooltips for each sub component * Update: tooltip for pagination component - Added handling to parse the tooltip for multiple components. - This allows for composite components like pagination to have tooltips for each sub component * Update: Type cast for tooltip component - Made the content passed to tooltip component as a string only * Update: Fixed tooltip component CSS * Update: Dropdown option component - Added a tooltip wrapper to each option - This is to show on hover text like disabled state * fix: updated ẇhere clause broken ui for condition * Add: functions to check and extract expressions - Loop through the formConfig and find any keys that have a value that is bindable - Used pre defined regex to check if value is a moustache binding * Add: Types for evaluated form configs - Added types for the form configs to be evaluated and their output post eval * Add: Flow to run the form config - Run the form config and update the result to the redux state * Update: Name of the type for formconfigs - Updated since it was clashing with a component of the same name * Add: Function to enforce config type checks - This is done so that the improper configs can be weeded out and the rest of the form can be shown * Add: Function to update evaluated config - Added option to update the config if it's values needed evaluation * Add: Type check for schema sections * Update: Error handling for invalid control type - We were throwing an exception till now, changed it to a warning text * Add: Exposed tooltip for dropdown option disabled state * Update: switch to json mode functionality - Added logic to convert data to a string rather than an object when the first switch to JSON mode happens * Update: Added key to tooltip for dropdown options * Trigger API modification * Add: function to fetch default trigger URL * Update: Made URL optional in dynamic trigger config * Update: Dynamic trigger API call - Made the API call for dynamic triggers have URL as optional field - Added type check to the response of the API call * Update: resp type for trigger APIs * Update: Moved code to utils folder - Moved functions for UQI form eval processing to utils file * Update: passing original controltype to JS switch * Update: config for JSON editor mode - Updated the config to have different options for JSON mode depending on the original control type * Update: Connected line numbers flag to config * Revert: CSS changes for tooltip * Refactor: Removed consle * Add: type for the config of dynamic values * Add: Feature to evaluate config for triggers * Refactor: fix type check errors * fix: dropdown ui width with text alignment * Update: fixed selector for dynamic values * Update: selector call for fetchDynamicValues * Add table header index prop for columns selector * migration partial commit * migration partial commit * Refactor: removed unused import * Update: reused function for checking dynamic value * Update: removed unused import * Fix format JSON issues * Retrieve binding paths from entity selector components * Fixes 6 remaining issues with UQI implementation * Fix dropdown issues * Fix dropdown height issues and fixes triggering of APIs when option is deselected * Migration changes * Fix QA generated UQI issues * Fix projection component height and route change logic * Fix multi select dropdown placeholder text issue and json stringify issue with switching view types * Reset entity type value when command value changes * Test changes * Review comments * Moved migrations around * Corrected import statement * Added JSON schema migration * Updated schema version * perf improvements and filter dropdown options feature * Fix Code mirror component config for toggleComponentToJson input fields. * Fix prettier issues * fix prettier issues * Fix style issues as a result of the merged conflicts * Fix failing test case * Fixed a few other flows (#14225) * Fixed a few other flows * Review comments * Fix generate CRUD, fix evaluation of dynamic bindings and fix various styling issues. * More fixes (#14367) * Factor in the root formconfig parent key. * Fix flickering issues, and evaluatedFormConfig issues * fix: Teeny bugs (#14455) * Teeny bugs * Added previous functionality as is * Improvements in the way we fetch dynamic values * Fix stringiification issue and cyclic dependency issues * Resolve projection component values deletion * Resolve merge conflicts and fix prettier issues * fix: Tsc issues * Fix property pane connection navigation * updating ee locator * updating inputfield locator * dropdown locator update * Merge conflict not properly resolved. * Fix s3 spec * Fix Mongo Spec * Fix some more tests * fix: prevent cyclic dependency when switching to js mode (#14668) * add delete events for change from array to string in diff * add test to assert absence of cyclic dependency error when switching to js in switchgroup widget * Assert that evaluation is not disabled when no cyclic dependency happens * Cypress test preparations for google sheets and form controls * Fixed a few test errors (#14874) * Add: unit tests for uqi UI updates - view type tests - conditional output extraction - processing conditional output to handle view/enabled state of the component * Add: completed isValidFormConfig test * Update: improved tests for update config - These tests cover the functionality to update a section config after it's components are done evaluating * Fix failing cypress tests and cyclic dependency issue * Fixes some more tests * Fixed migration of row objects (#14896) * Bumped the version of design system package * Update: reverted change to EE selector * Fix deletion pointer * Update: selector for js on load spec - Synced with changes related to ADS dropdown * Fix mongoDBShoppingCart spec * Remove comments * Fix: mongo shopping cart test failures * fix: mongo shopping cart spec * Dummy push to retrigger vercel * fix: mongo shopping cart spec * Update MongoDBShoppingCart_spec.js * fix: removed unused click away * dummy commit * Update: moved helper functions to separate file * Add: added tests for saga functions - Worked on testing for - extractFetchDynamicValueFormConfigs - extractQueueOfValuesToBeFetched * Add if check for queueOfValuesToBeFetched * Resolve review comments * Empty-Commit Co-authored-by: Irongade <adeoluayangade@yahoo.com> Co-authored-by: Ayush Pahwa <ayush@appsmith.com> Co-authored-by: Aman Agarwal <aman@appsmith.com> Co-authored-by: Ayangade Adeoluwa <37867493+Irongade@users.noreply.github.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com> Co-authored-by: Favour Ohanekwu <fohanekwu@gmail.com> Co-authored-by: Albin <albin@appsmith.com>
2022-07-04 05:43:27 +00:00
export type DSLDiff = Diff<CanvasWidgetsReduxState, CanvasWidgetsReduxState>;
const positionProps = [
"leftColumn",
"rightColumn",
"topRow",
"bottomRow",
"minHeight",
"parentColumnSpace",
"parentRowSpace",
"children",
"parentId",
"renderMode",
"detachFromLayout",
"noContainerOffset",
"isCanvas",
feat: Automatic height updates for widgets based on contents (Auto Height) (#18341) * added multi select back * (WIP): Complete the dynamc height update logic * (WIP): Dynamic height logic * (WIP): Container computation logic, Next steps: Prevent reflow when resize is disabled. Fix logic of widgets randomly changing positions (Debug) * Fix logic in container computations * Integrate for PoC * fixed the no initial load dynamic height updates * Stop vertical resize and reflow when dynamic height is enabled for a widget * added another container in text widget * enabled dynamic height for container widgets * removed dynamic height feature from list widget * Fixed Button and Input components height increase * added an experiment to overflow the content if maxHEight is less * removed the ref of Textwidget by mistake, added it back * fixed text widget height overflow problem with a little hack * added long labels with text * fixed the table scroll issue * overflow fixed for json form widget * added extra 8px height for Switch, Rating and Checkbox Height * (WIP): Resolve issues * (WIP): Fix widget padding issue * added overflow container for Radio and Switch group widgets * (WIP): Have modals work with dynamic height * added the overlay and the handles * added dragging behavior to the dots * fixed the overlapping with the selection tool * (WIP): Fix issues reported * now we can update the property pane values back from overlay handles * now we can update the property pane values back from overlay handles * (WIP): Fix table widget * Fix package.json * Remove unit tests temporarily * Fix unit test * (WIP): Fix modal resize. Fix cursors. Fix border issue on non-resizable widgets * fetch component heights using the requestAnimationFrame callback * behavioural changes * (WIP): Fix issues on the platform * Update main container size appropriately * more behavioural changes * overlay now only be visible when hovering over the dots * grid showing and widget reselecting * added onfocus and onblur events to property pane listeners * added onfocus and onblur events to property pane listeners * added a range slider for min and max * added demarcations for slider values * (WIP): Fix platform workflows for dynamic height * Fix issues with widgets * Fix removed import * - Add missing cypress files * set the limits * limit increase on change * Fix z-index of min max limit indicators. Fix unused-vars warnings * Fix Table Widget and Text Widget issues * Fix: all the bugs in the bug master list for DH (#16268) * changed the zindex for the signifiers * showing signifiers only when the widget is selected * made changes suggested by Momcilo * activate the dots when the fields are active * created a new centered dot handle * removed overlays on focus and made the border more like deisgn * handles on top of other widgets * hide the overlay when multiple widgets are selected * added a white border * added a white border * bug #15509 resolved * changed the minDynamicHeightLimit to 2 instead of 4 to fix the Bug #15527 * removed the height auto fix from BaseInputComponent to fix the Bug #15388 * removed the condition to not ccalculate dynamic height when the row difference is less than 2 to fix the bug 15353 * made fixes for the bug #16307 * made fixes for the bug #16308 * made fixes for bug 16310 * made fixes for the bug #16402 * removed some log statements * made fixes for the bug #16407 * fixed label problem found in the issue #16543 * made fixes for the issue #16547 * made fixes for the bug #16492 * redeploy * (WIP): Fix to make this branch functional * imported LabelWithTooltip back from design system * signifier is now centered * filled the signifier with primary color * overlay hidden while dragging * made the signifier dashed border also draggable * Fix issue #16590 (#16798) * set the limits to 4 rows * replaced the static 40 value * added signifiers for modal widget * added signifiers for modal widget * tried solving the scroll issue for widgets when there are limits * solved the height problem using ResizeObserver * (WIP): Fix maxDynamicHeight issue with container widgets: * made the changes as per the review * fixed the issue for input widget when label gets out of border * hide text widget overflow options if auto height is enabled * (WIP): In view mode, invisible widgets now donot take space (#16920) * (WIP): In view mode, invisible widgets now donot take space * (WIP): Enable the feature where invisible widgets in view mode don't take space to all widgets irrespective of the dynamic height feature * Remove Replay conditional * removed the scroll container for container type widgets * removed the scroll container for container type widgets * updated the hook to set overflow none for text widget * fixed the should dynamic height logic to respect the min height limit * Modal widget adheres to dynamic height (#16995) * Modal widget adheres to dynamic height * WIP: POC: fix dynamic height issues (#16996) Fix height less than 4 issue. Fix JSONForm adherence to min and max height * POC: Dynamic height undo redo issue (#17085) * Revert debouce timeout * (WIP): Fix issue with undo-redo in dynamic height * fix: Dynamic height issue fixes (#17153) * Dynamic height issue fixes == - Fix issue where nested widgets did not ensure parent dynamic height updates - Fix issue where Modal widget updates came in subsequent renders - Fix issue where JSONForm collapses - Fix performance issue for independent updates * Use functions to get min and max dynamic height * Fix issue where variable might have been undefined * added the dynamic container into the deploy mode as well * added overflow-x hidden when overflow-y is active in the dynamic height container * fix: Dynamic height Issue fixes (#17204) Fix preview mode invisible widgets. Fix Tabs widget dynamic height. * removed a console.log statement * removed the slider control file * imported the LabelWithTooltip from the repo rather than ds * word-break CSS rules added for Switch and Checkbox widget when Dynamic Height is enabled * abstracted the check for dynamic height with limits enabled as isDynamicHeightWithLimitsEnabledForWidget * abstracted the static value of 10 in dynamic height overlay to GridDefaults * abstracted min and max dynamic height limits to getters * fix: replaced all the refs for simpler widgets (#17353) * replaced all the refs for simpler widgets * removed the updateDynamicHeight from componentDidUpdate in BaseWidget * added back lifecycle methods back to BaseWidget * removed the contentRef from SwitchGroup and Table * updating the height from the auto height with limits as well * some hacks to make the limits work * working solution * used setTimeout to send an update to updateDynamicHeight from overlay update * removed a log * added requestanimationframe in settimeout Co-authored-by: Ankur Singhal <ankursinghal@Ankurs-MacBook-Pro-2.local> Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * Fix issues caused during merge * Remove unneeded derived property * removed more unnecessary code which should have been removed after removing the ref dependency * fixed the maxDynamicHeight issue * Fix issue where property configs were not being sent * fix: Auto Height Feature - add selectors for tests (#17687) Add selectors for auto height cypress tests * fix: removed height auto default theme (#17415) removed height auto css rule from the default theme Co-authored-by: Ankur Singhal <ankursinghal@Ankurs-MacBook-Pro-2.local> * fix: Auto Height Feature - Resolve issues and restructure code (#17686) * Fix issues in dynamic height. Restructure code and reduce abstraction leaks * Fix typescript issues * Update based on review comments. Comment migrations, as a cyclic import is causing the jest tests to fail. * Remove unused imports * Decrease code nesting * added the base styles for the overlay like position and z-index in its styled component css * used the isDynamicHeightEnabled prop to set the height of SwitchGroup and RadioGroup widgets from 32px to 100% in case of inline mode * fix: Auto Height - Resolve issues (#17737) * Fix Tabs Widget showTabs toggle based auto height. Revert removal of BaseWidget code. Remove box-intersect and use a bruteforce algorithm. Add base logic for having containers collapse due to hidden child widgets * Hide scroll contents and overflow property pane controls when dynamic height is enabled * Removed the class property expectedHeight from BaseWidget as it is not useful in the overlay logic after some changes * fixed the left alignment issue of label in the rich text editor by adding some styles applied only when the dynamic height is enabled * fixed the input field stretching issue in case of Dynamic height by adding some CSS styles when isDynamicHeight is true * Fix failing modal widget cypress tests * Fix issue with scrollContents and Tabs Widget defaulTab * added a little bit padding of 4px to the right of scroll container of dynamic height with limit * Add test locators for resize handles * removed the dynamic height logic from the table widget * fix: Auto-Height invisible widgets (#17849) * Fix issue where invisible widgets were still taking space * Make sure to collapse only if dynamic height is enabled * Fix issues with reflow (not the invisible widgets) * Fix container min height issues * Fix reflow with original bottom and top values. Testing needed * Fix invisible widgets * fix: enabled dynamic height for stat box widget (#17971) enabled dynamic height for stat box widget Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * fix: added a min height to rich text editor so that it does not collapse (#17970) added a min height to rich text editor so that it does not collapse Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * Fix issue with resizing auto height widget * Add helper text to educate users regarding the scroll disconnect in WYSIWYG * fix: Auto Height Fixes (#18111) AUTO HEIGHT FIXES - Fix JSONForm height discrepancy - Fix issue where widgets moved below the other - Fix droptarget height after parent container resize * fix: sliced up the DynamicHeightOverlay component a little bit (#18100) * sliced up the DynamicHeightOverlay component a little bit * more refactoring * more refactoring * used release event emitter and refactored more Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * fix: rich text editor center alignment issue (#18142) * removed the center alignment from rich text editor * dummy commit Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * fix: old DSL container collapse (#18160) * Fix issue where old containers from old DSLs used to collapse when auto height was enabled * Fix issue where old containers don't allow new widgets to be added when auto height is enabled, this is because the shouldScrollContents is undefined * fix: input widgets issue (#18172) fixed the auto height not working issue Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * fix: preview deploy mode (#18174) fixed the preview and deploy mode Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * fix: auto height limits label intersection with handle dot (#18186) fixed the position of the limits label to the right so that it will not intersect with the handle dot Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * fix: auto height limits rich text editor min height (#18187) decrease the min height of the RTE so that it does not have the boundary issue with the max limit when auto height with limits is enabled Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * fix: grammatical error in the help text (#18188) changed react to reacts in the helpText of the dynamic height property in the proeprty pane Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * fix: auto height tabs double scroll (#18210) solved the issue by disabling the scroll for the child canvas widget in the tabs widget Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * fix: auto height limits resizing (#18213) * fixed the auto height limits resizing issue * made the auto height overlay independent of isResizing and used its own property to show the grid * some more refactoring Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * dummy commit * fix: old apps container issue (#18255) filtered out the widgets which are detached from layout Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * fix: fixing auto height in childless containers. (#18263) fixing auto height in childless containers. * task: Dynamic height reflow fixes in Branch (#18244) dynamic height reflow fixes * fix: compact label issue and min and max limits numeric input (#18282) fixed compact label issue and turned min and max limits to numeric input Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * fix: LabelWithTooltip help icon fix * fix: NaN and min limit for min and max (#18284) * fixed compact label issue and turned min and max limits to numeric input * fixed NaN and set min to be 4 Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * fix: validation issues for min max (#18286) * fixed compact label issue and turned min and max limits to numeric input * fixed NaN and set min to be 4 * validations start working min max Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * added a full stop to container scroll helper text * validations start working min max * dummy commit * feat: stop resizing auto height widgets vertically because of Drag n Drop Reflow (#18267) * reflow fixes * stop resizing auto height widgets vertically because of Drag n Drop Reflow * feat: Analytics for Dynamic height (#18279) * Fix canvas min height issue and invisible widgets issue and remove logs and fix issue where widgets overlapped when coming back from preview mode to edit mode * Fix issue with containers not respecting auto height and decreasing height * Fix issue with modal widget not hugging contents, and container widgets never become visible after going invisible * Fix issue where existing containers don't have correct min height for child canvas * fix: canvasLevelsReducers test (#18301) fixed the canvasLevelsReducers test Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * fix: removed auto height min max config from widget features (#18316) removed auto height min max config from widget features Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * fix: Fixing Modal Height updates (#18317) Fixing Modal Height updates * fix: text widget background auto height (#18319) added background color of Text widget back to the auto height container Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * test: cypress tests for auto height (#17676) * Added tests for dynamic height * updated tests for another usecase * moved locators into commonfile * updated common method * added tests for some more widgets * Added tests for jsonForm / Form widget * Updated the test * updated test for multiple text widgets * updated test with few more usecases * updated the dsl * updated tests for text change * updated tests based on new changes * updated cypress test fixes * fix: auto height container merge poc wrt release (#18334) updated the poc wrt PR already merged in the release regarding the auto height container Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * fix: renamed auto height overlay components and added some tests (#18333) * renamed auto height overlay components and added some tests * replaced the 10 value with GridDefaults * avoiding event to reach drop target Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * updated tests * Merge all code into one branch * Fix failing AutoHeightcontainer test * fix: Fix reflow computations which were causing widget overlap (#18300) * Fix reflow computations which were causing widget overlap * Fix issues with parent container height and overlapping widgets * Remove console logs * Revert comment * Fix issues related to reflow of containers * feat: Making getEffectedBoxes a Recursive function in autoHeight Reflow (#18336) Making getEffectedBoxes a Recursive function in autoHeight Reflow * Return null for invisible widgets from withWidgetProps * Remove duplicate import Co-authored-by: rahulramesha <71900764+rahulramesha@users.noreply.github.com> * Remove missed console log * fix: Label position gets deselected on selecting already selected option (#18298) * fix: Label position gets deselected on selecting the already selected value * Added migration for Currency & Phone input widgets * simplify migration function using a utility * combine conditions * Increments LATEST_PAGE_VERSION * Update DynamicHeight_Visibility_spec.js updated a check wrt auto height * Handling Modals for canvas size calculations * fix: migrate label position test failing issue (#18365) fixed migrate label postition test failing issue Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * removed the two unwanted imports from DSLMigrations to fix client build * fix: Auto height zero and limits issue (#18366) fixed the auto height zero and limits issue Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> * fix: Auto height regression issues (#18367) * Fix auto height regression issues #18367 * feat: auto height migrations (#18368) Add auto height migrations * Increase file caching size * Use manual array for list of auto height enabled widgets * Fix cypress test dsl versions * Revert changes to shouldUpdateHeightDynamically * Update test results based on code changes * Marginally increase the workbox file size cache * review comment incorporated for test spec * Update container auto height property on drop * added small wait for validation Co-authored-by: Ankur Singhal <ankur@appsmith.com> Co-authored-by: rahulramesha <rahul@appsmith.com> Co-authored-by: Abhinav Jha <zatanna@Abhinavs-iMac.lan> Co-authored-by: Ankur Singhal <ankursinghal@Ankurs-MacBook-Pro-2.local> Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com> Co-authored-by: Ashok Kumar M <35134347+marks0351@users.noreply.github.com> Co-authored-by: rahulramesha <71900764+rahulramesha@users.noreply.github.com> Co-authored-by: Albin <albin@appsmith.com> Co-authored-by: Aswath K <aswath.sana@gmail.com> Co-authored-by: NandanAnantharamu <67676905+NandanAnantharamu@users.noreply.github.com> Co-authored-by: Apple <nandan@thinkify.io>
2022-11-23 09:48:23 +00:00
"height",
feat: Simplified Google Sheets queries (#14869) * Client changes 1 * add DSL functionality * Temp commit for refactoring changes * Do I even know what I'm doing here? * chore: Second GS layout * Update: Visibility conditional outputs for schemas - Added the output from conditional outputs for schema children too * Update: Entity selector visibility control - Added logic for controlling visibility of sub components via the JS expressions system * Update: Passing disabled prop to toggle button * Update: Passing disabled prop to toggle btn * Update: Styled component for toggle button - Added disabled styles based on the disabled prop sent to the toggle form view JSON button * Update: configProperty role in Entity Selector - Removed dependance of the configProperty of the entity selector children to it's parent component * Update: type of placeholder key - Made placeholder key from form config JSON to accept either string or an object - Earlier only string was accepted - This is for pagination component * Update: Added placeholder control for pagination * Client changes 1 * add DSL functionality * Do I even know what I'm doing here? * fix: updated uqi forms ui, clubbed JS switch button to ads, updated tooltip design * fix: updated tooltip component for wrong ui on entity explore * temp triggers * fix: updated uqi forms ui, clubbed JS switch button to ads, updated tooltip design (#12395) * fix: updated uqi forms ui, clubbed JS switch button to ads, updated tooltip design * fix: updated tooltip component for wrong ui on entity explore * fix: updated tooltip ui, where condition placement, sort by ui * temp form data access logic * fix: updated sorting type width ui * fix: updated ui for spacing, width and text issues * Update: Type for tooltip of UQI forms - Added option to send an object to the tooltipText object. - This allows for composite components like pagination to have tooltips for each sub component * Update: tooltip for pagination component - Added handling to parse the tooltip for multiple components. - This allows for composite components like pagination to have tooltips for each sub component * Update: Type cast for tooltip component - Made the content passed to tooltip component as a string only * Update: Fixed tooltip component CSS * Update: Dropdown option component - Added a tooltip wrapper to each option - This is to show on hover text like disabled state * fix: updated ẇhere clause broken ui for condition * Add: functions to check and extract expressions - Loop through the formConfig and find any keys that have a value that is bindable - Used pre defined regex to check if value is a moustache binding * Add: Types for evaluated form configs - Added types for the form configs to be evaluated and their output post eval * Add: Flow to run the form config - Run the form config and update the result to the redux state * Update: Name of the type for formconfigs - Updated since it was clashing with a component of the same name * Add: Function to enforce config type checks - This is done so that the improper configs can be weeded out and the rest of the form can be shown * Add: Function to update evaluated config - Added option to update the config if it's values needed evaluation * Add: Type check for schema sections * Update: Error handling for invalid control type - We were throwing an exception till now, changed it to a warning text * Add: Exposed tooltip for dropdown option disabled state * Update: switch to json mode functionality - Added logic to convert data to a string rather than an object when the first switch to JSON mode happens * Update: Added key to tooltip for dropdown options * Trigger API modification * Add: function to fetch default trigger URL * Update: Made URL optional in dynamic trigger config * Update: Dynamic trigger API call - Made the API call for dynamic triggers have URL as optional field - Added type check to the response of the API call * Update: resp type for trigger APIs * Update: Moved code to utils folder - Moved functions for UQI form eval processing to utils file * Update: passing original controltype to JS switch * Update: config for JSON editor mode - Updated the config to have different options for JSON mode depending on the original control type * Update: Connected line numbers flag to config * Revert: CSS changes for tooltip * Refactor: Removed consle * Add: type for the config of dynamic values * Add: Feature to evaluate config for triggers * Refactor: fix type check errors * fix: dropdown ui width with text alignment * Update: fixed selector for dynamic values * Update: selector call for fetchDynamicValues * Add table header index prop for columns selector * migration partial commit * migration partial commit * Refactor: removed unused import * Update: reused function for checking dynamic value * Update: removed unused import * Fix format JSON issues * Retrieve binding paths from entity selector components * Fixes 6 remaining issues with UQI implementation * Fix dropdown issues * Fix dropdown height issues and fixes triggering of APIs when option is deselected * Migration changes * Fix QA generated UQI issues * Fix projection component height and route change logic * Fix multi select dropdown placeholder text issue and json stringify issue with switching view types * Reset entity type value when command value changes * Test changes * Review comments * Moved migrations around * Corrected import statement * Added JSON schema migration * Updated schema version * perf improvements and filter dropdown options feature * Fix Code mirror component config for toggleComponentToJson input fields. * Fix prettier issues * fix prettier issues * Fix style issues as a result of the merged conflicts * Fix failing test case * Fixed a few other flows (#14225) * Fixed a few other flows * Review comments * Fix generate CRUD, fix evaluation of dynamic bindings and fix various styling issues. * More fixes (#14367) * Factor in the root formconfig parent key. * Fix flickering issues, and evaluatedFormConfig issues * fix: Teeny bugs (#14455) * Teeny bugs * Added previous functionality as is * Improvements in the way we fetch dynamic values * Fix stringiification issue and cyclic dependency issues * Resolve projection component values deletion * Resolve merge conflicts and fix prettier issues * fix: Tsc issues * Fix property pane connection navigation * updating ee locator * updating inputfield locator * dropdown locator update * Merge conflict not properly resolved. * Fix s3 spec * Fix Mongo Spec * Fix some more tests * fix: prevent cyclic dependency when switching to js mode (#14668) * add delete events for change from array to string in diff * add test to assert absence of cyclic dependency error when switching to js in switchgroup widget * Assert that evaluation is not disabled when no cyclic dependency happens * Cypress test preparations for google sheets and form controls * Fixed a few test errors (#14874) * Add: unit tests for uqi UI updates - view type tests - conditional output extraction - processing conditional output to handle view/enabled state of the component * Add: completed isValidFormConfig test * Update: improved tests for update config - These tests cover the functionality to update a section config after it's components are done evaluating * Fix failing cypress tests and cyclic dependency issue * Fixes some more tests * Fixed migration of row objects (#14896) * Bumped the version of design system package * Update: reverted change to EE selector * Fix deletion pointer * Update: selector for js on load spec - Synced with changes related to ADS dropdown * Fix mongoDBShoppingCart spec * Remove comments * Fix: mongo shopping cart test failures * fix: mongo shopping cart spec * Dummy push to retrigger vercel * fix: mongo shopping cart spec * Update MongoDBShoppingCart_spec.js * fix: removed unused click away * dummy commit * Update: moved helper functions to separate file * Add: added tests for saga functions - Worked on testing for - extractFetchDynamicValueFormConfigs - extractQueueOfValuesToBeFetched * Add if check for queueOfValuesToBeFetched * Resolve review comments * Empty-Commit Co-authored-by: Irongade <adeoluayangade@yahoo.com> Co-authored-by: Ayush Pahwa <ayush@appsmith.com> Co-authored-by: Aman Agarwal <aman@appsmith.com> Co-authored-by: Ayangade Adeoluwa <37867493+Irongade@users.noreply.github.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com> Co-authored-by: Favour Ohanekwu <fohanekwu@gmail.com> Co-authored-by: Albin <albin@appsmith.com>
2022-07-04 05:43:27 +00:00
];
export const TOASTS = "toasts";
export const FOCUSES = "needsFocus";
export const UPDATES = "propertyUpdates";
export const WIDGETS = "widgets";
/**
* this function update the replay object that holds info about change happened in widgets
* also, it creates toast for new/deleted widgets on undo/redo
*
* @param dsl
* @param diff
* @param replay
* @param isUndo
* @returns
*/
export function processDiff(
dsl: CanvasWidgetsReduxState,
diff: DSLDiff,
replay: any,
isUndo: boolean,
) {
if (!diff || !diff.path || !diff.path.length || diff.path[0] === "0") return;
const widgetId = diff.path[0];
switch (diff.kind) {
// new elements is added in dsl
case "N":
if (diff.path.length == 1) {
const toast = createToast(
diff.rhs,
dsl[widgetId],
widgetId,
isUndo,
!isUndo,
);
addToArray(replay, TOASTS, toast);
} else {
setPropertyUpdate(replay, [WIDGETS, widgetId, UPDATES], diff.path);
}
break;
// element is deleted in dsl
case "D":
if (diff.path.length == 1) {
const toast = createToast(
diff.lhs,
dsl[widgetId],
widgetId,
isUndo,
isUndo,
);
addToArray(replay, TOASTS, toast);
} else {
setPropertyUpdate(replay, [WIDGETS, widgetId, UPDATES], diff.path);
}
break;
// element is edited
case "E":
if (isPositionUpdate(diff.path[diff.path.length - 1])) {
set(replay, [WIDGETS, widgetId, FOCUSES], true);
} else {
setPropertyUpdate(replay, [WIDGETS, widgetId, UPDATES], diff.path);
}
break;
default:
break;
}
}
/**
* creates toast on undo/redo ( most used in addition/deletion of widgets )
*
* @param diffWidget
* @param dslWidget
* @param widgetId
* @param isUndo
* @param isCreated
* @returns
*/
function createToast(
diffWidget: CanvasWidgetsReduxState,
dslWidget: CanvasWidgetsReduxState | undefined,
widgetId: string,
isUndo: boolean,
isCreated: boolean,
) {
const widgetName = isCreated ? diffWidget.widgetName : dslWidget?.widgetName;
return {
isCreated,
isUndo,
widgetName,
widgetId,
};
}
/**
* checks property changed is a positional property
*
* @param widgetProperty
* @returns
*/
function isPositionUpdate(widgetProperty: string) {
return positionProps.indexOf(widgetProperty) !== -1;
}
/**
* checks the existing value and sets he propertyUpdate if required
*
* @param replay
* @param path
* @param value
* @returns
*/
function setPropertyUpdate(replay: any, path: string[], value: string[]) {
const existingPathValue = get(replay, path);
if (!existingPathValue || existingPathValue.length > 2) {
set(replay, path, value);
set(replay, UPDATES, true);
}
}
/**
* pushes value to array element in array of objects
*
* @param obj
* @param key
* @param value
* @returns
*/
function addToArray(obj: any, key: string, value: any) {
if (!obj) return;
if (obj[key] && Array.isArray(obj[key])) {
obj[key].push(value);
} else {
obj[key] = [value];
}
}
/**
* creates paths changed from diffs array
*
* @param diffs
* @returns
*/
export function getPathsFromDiff(diffs: any) {
const paths = [];
for (const diff of diffs) {
paths.push(diff.path.join("."));
}
return paths;
}