PromucFlow_constructor/app/client/src/sagas/EvaluationsSaga.ts

759 lines
21 KiB
TypeScript
Raw Normal View History

import {
actionChannel,
ActionPattern,
all,
call,
delay,
fork,
put,
select,
spawn,
take,
} from "redux-saga/effects";
import {
EvaluationReduxAction,
AnyReduxAction,
ReduxAction,
ReduxActionType,
ReduxActionTypes,
} from "@appsmith/constants/ReduxActionConstants";
import {
getDataTree,
getUnevaluatedDataTree,
} from "selectors/dataTreeSelectors";
feat: Undo/Redo (#6654) * Scaffolding for undo-redo * undo redo working Poc commit * memory performance improvements by diffing * dont run update on undo/redo" * merging widget postion update and canvas bottom row update into one dsl update. * fix tabs widget * Visible updates per undo redo action (#6838) Co-authored-by: Rahul R <rahulramesha@Rahuls-MacBook-Pro.local> * resize atomic operation * fix switch control state issue * disallow undo/redo for snipping and comment mode * disallow undo/redo for snipping and comment mode * fix color picker issue in undo/redo * add test for replayDSL * option control fix, adding logs * minor position change undo redo updates * add test cases for replayHelpers * property Upade visual change * remove unused code * global hot key jest test for undo redo * Fixing batch updates on property change.. * add tests for toggle control in property pane * unwanted utils. * add tests for text control * add tests for deletion * add tests for dropping a new widget * adding jest test for replayUtils * add move widget tests * add tests for color picker control * add analytics for undo/redo * add analytics for undo/redo * tab addition atomic * cypress tests for propertyPane, toasts and radiowidget optionControl * replayDSL end of redo stack fix * property update changes * menu option control debounce input * color picker empty undo fix * fix cypress tests * widget add/remove atomic * revert alternative approach to handle atomic operations * update replayDSL test * add some comments * addressing review comments * flash color for property pane controls * Fixing adding of tabs widget as well. * code review comments. * merging widget postion update and canvas bottom row update into one dsl update. * fix ordering of tabs property control * meta property update canvas min height. * fixing failed specs. * Fixing entity explorer update on deleting tab from entity explorer. * address review comments and minor property update changes * fixing failing tests * merge conflicts * changes to cater widget api. * fix suggested widget table issue * draggable list for undo redo * fix widget name focus * excluding canvas updates. * fixing codeEditor update on propertySection collapse * fixed failing test case Co-authored-by: Abhinav Jha <abhinav@appsmith.com> Co-authored-by: Rahul R <rahulramesha@Rahuls-MacBook-Pro.local> Co-authored-by: root <root@DESKTOP-9GENCK0.localdomain> Co-authored-by: Ashok Kumar M <35134347+marks0351@users.noreply.github.com> Co-authored-by: Pawan Kumar <pawankumar@Pawans-MacBook-Pro.local>
2021-09-21 07:55:56 +00:00
import { getWidgets } from "sagas/selectors";
import WidgetFactory, { WidgetTypeConfigMap } from "utils/WidgetFactory";
2021-02-22 05:00:16 +00:00
import { GracefulWorkerService } from "utils/WorkerUtil";
import Worker from "worker-loader!../workers/evaluation.worker";
import {
EvalError,
EVAL_WORKER_ACTIONS,
PropertyEvaluationErrorType,
} from "utils/DynamicBindingUtils";
import log from "loglevel";
2021-02-22 05:00:16 +00:00
import { WidgetProps } from "widgets/BaseWidget";
import PerformanceTracker, {
PerformanceTransactionName,
} from "utils/PerformanceTracker";
import * as Sentry from "@sentry/react";
2020-12-30 13:26:44 +00:00
import { Action } from "redux";
import {
2021-07-20 10:02:56 +00:00
EVALUATE_REDUX_ACTIONS,
FIRST_EVAL_REDUX_ACTIONS,
setDependencyMap,
setEvaluatedTree,
shouldProcessBatchedAction,
} from "actions/evaluationActions";
import {
2021-07-20 10:02:56 +00:00
evalErrorHandler,
handleJSFunctionExecutionErrorLog,
2021-07-20 10:02:56 +00:00
logSuccessfulBindings,
postEvalActionDispatcher,
updateTernDefinitions,
} from "./PostEvaluationSagas";
import { JSAction } from "entities/JSCollection";
2021-07-30 10:24:22 +00:00
import { getAppMode } from "selectors/applicationSelectors";
import { APP_MODE } from "entities/App";
import { get, isUndefined } from "lodash";
import {
setEvaluatedArgument,
setEvaluatedSnippet,
setGlobalSearchFilterContext,
} from "actions/globalSearchActions";
import {
executeActionTriggers,
TriggerMeta,
} from "./ActionExecution/ActionExecutionSagas";
import { EventType } from "constants/AppsmithActionConstants/ActionConstants";
import { Toaster } from "components/ads/Toast";
import { Variant } from "components/ads/common";
import {
createMessage,
SNIPPET_EXECUTION_FAILED,
SNIPPET_EXECUTION_SUCCESS,
refactor: admin settings (#9906) * refactor admin settings feature * separated save-restart bar to separate component * created new CE dir to facilitate code split * created separate ee dir and exporting everything we have in ce file. * little mod * minor fix * splitting settings types config * using object literals for category types instead of enums * CE: support use of component for each category * minor style fix * authentication page UI changes implemented * github signup doc url added back * removed comments * routing updates * made subcategories listing in left pane optional * added muted saml to auth listing * added breadcrumbs and enabled button * created separate component for auth page and auth config * added callout and disconnect components * updated breadcrumbs component * minor updates to common components * updated warning callout and added icon * ce: test cases fixed * updated test file name * warning banner callout added on auth page * updated callout banner for form login * CE: Split config files * CE: moved the window declaration in EE file as its dependency will be updated in EE * CE: Splitting ApiConstants and SocialLogin constants * CE: split login page * CE: moved getSocialLoginButtonProps func to EE file as it's dependencies will be updated in EE * added key icon * CE: created a factory class to share social auths list * Minor style fix for social btns * Updated the third party auth styles * Small fixes to styling * ce: splitting forms constants * breadcrumbs implemented for all pages in admin settings * Settings breadcrumbs separated * splitted settings breadcrumbs between ce and ee * renamed default import * minor style fix * added login form config. * updated login/signup pages to use form login disabled config * removed common functionality outside * implemented breadcrumb component from scratch without using blueprint * removed unwanted code * Small style update * updated breadcrumb categories file name and breadcrumb icon * added cypress tests for admin settings auth page * added comments * update locator for upgrade button * added link for intercom on upgrade button * removed unnecessary file * minor style fix * style fix for auth option cards * split messages constant * fixed imports for message constants splitting. * added message constants * updated unit test cases * fixed messages import in cypress index * fixed messages import again, cypress fails to read re-exported objs. * added OIDC auth method on authentication page * updated import statements from ee to @appsmith * removed dead code * updated read more link UI * PR comments fixes * some UI fixes * used color and fonts from theme * fixed some imports * fixed some imports * removed warning imports * updated OIDC logo and auth method desc copies * css changes * css changes * css changes * updated cypress test for breadcrumb * moved callout component to ads as calloutv2 * UI changes for form fields * updated css for spacing between form fields * added sub-text on auth pages * added active class for breadcrumb item * added config for disable signup toggle and fixed UI issues of restart banner * fixed admin settings page bugs * assigned true as default state for signup * fixed messages import statements * updated code for PR comments related suggestions * reverted file path change in cypress support * updated cypress test * updated cypress test Co-authored-by: Ankita Kinger <ankita@appsmith.com>
2022-02-11 18:08:46 +00:00
} from "@appsmith/constants/messages";
import { validate } from "workers/validations";
import { diff } from "deep-diff";
2021-12-07 09:45:18 +00:00
import { REPLAY_DELAY } from "entities/Replay/replayUtils";
import { EvaluationVersion } from "api/ApplicationApi";
import { makeUpdateJSCollection } from "sagas/JSPaneSagas";
2021-12-07 09:45:18 +00:00
import { ENTITY_TYPE } from "entities/AppsmithConsole";
import { Replayable } from "entities/Replay/ReplayEntity/ReplayEditor";
import {
logActionExecutionError,
UncaughtPromiseError,
} from "sagas/ActionExecution/errorUtils";
import { Channel } from "redux-saga";
import { ActionDescription } from "entities/DataTree/actionTriggers";
import { FormEvaluationState } from "reducers/evaluationReducers/formEvaluationReducer";
import { FormEvalActionPayload } from "./FormEvaluationSaga";
feat: App Theming (#9714) * fix style bugs * fix select styles * test: fix font size issue for cypress tests * incorporate ashit feedback * test: addresed review comments for cypress tests * add analytics events * height issue in view mode * incorporate code review feedbacks * incorporate code review feedbacks * refactor: addressed review comments; removed border radius and box shadow for text widget; Updated migrations * feat: Makes shadow and radius controls keyboard accessible (#11547) * makes shadow and radius controls keyboard accessible * removes unused imports * moves options out of render method * fix: changed the misnomer background property name to the relevant property name * fix: border radius issue for the map widget * address qa bugs * address qa bugs * fix ux of theming pane when widget is selected * fix: * added backgroundColor to the video widget * restricted pop-over border radius to 0.375rem * added box shadow for the input group for select widget * fix: added delete icon in the delete theme modal * address qa bugs * change checkbox column size in config * add js convertible to button color * remove unused imports * test: fixed jest tests * fix primary color typo * fix: migrations for the theming * fix: * Removed background color from MultiTreeSelect and TreeSelect component. * grouped button's menu button pop over border radius restricting to 0.375rem. * test: updated Dsl migration UT * address qa bugs * address qa bugs * fix: address qa comments * address qa bugs * fix: * migration issue; * unit test cases; * fix rating widget scroll issue * fix youtube video border radius bug * fix select widget * fix select widgets styles * address qa bugs * merge conflicts * makes the reset button keyboard accessible (#12134) * -resolved merge conflicts * address qa bugs * fix: labelTextSize migration fixes * refactor: * made changes to the fontSizeUtils function * fixed the issue related to unit tests * fix button group widget * remove unused imports * fix: fixed the text size migration for the table widget * refactor: addressed review comments for the table widget theming migration * fix button group widget * add init calls for view mode * json form init theme changes * fix: added migration for boxShadow, borderRadius and textSizes for table widget * fix broken fields * test: fixed unit tests * wip * inconsistancy fixes and schemaItem update in updateHook/fieldConfiguration * feat: init json form migration theming * json form primaryColor -> accentColor * update table widget * update table widget * object field label styling * fix: migration related to the JSON form * fix: fixed labelTextSize migration for JSON form nested widgets * property control nested stylesheet lookup * JSONForm label styles form array items * show label for checkbox field array item * fix button group widget * wip * refactor: addressed table widget review comments * refactor: addressed ashit review comments; * added childStylesheet for widgets * feat: Keyboard navigable Color Picker control (#11797) * Makes ColorPicker keyboard accessible * seperate out keyboard and mouse interactions * fix issue with not focusing back to input * Adds test for Color picker * chore: added comment for the boxShadow property * fix: * added unit test cases for the widget and property utils * resolved warning messages * wip * theme config update * fix merge conflicts * refactor: moved theming migration inside the migrations folder * fix qa bugs * fix jest test * fix: unit test cases * fix table column creation logic * refactor: addressed review comments for migrations * fix: Overriding margin and padding for custom render in the dropdown component (#12875) * * fix for custom render padding and margin in ADS dropdown * * fix for removing padding from normal render options * refactor: moved the boxShadow condition to the variable * fix qa bugs * fix: migration QA callouts for audio recorder widget * refactor: added updated comments for boxShadow migration for table widget * fix theme binfings for JSONForm fields under Object * fix table widget theming bug * fix: addressed code review comments * fix: unit test cases * fix: qa migration callouts * fix table widget theming bug * fix JSONForm currency input dropdown not submit form * Added new tests - AppThemingSpec * fix qa bugs * fix unit test * fix JSONForm cellBorderWidth to have default value post migration * fix unit test * fix qa bugs * remove unused imports * fix qa bugs * fix JSONForm input height issue * fix qa bugs * Updating Theming spec * * dropdown color fixes (#13249) * fix caching issue ; * Fixed Theming tests * fix tests * fix tab widget tests * fix: json form children level migration issue * fix table widget tests * Updated test * updated tests * updated test * updated tests * updated tests * updated pageload * fix cypress tests * remove cypress created files * fix color picker issues * Failure fixes * Fixed some more tests * fix: cypress test failures * fix tests * remove consoles * fix table tests * fix qa bugs * updating snapshots for AppPageLayout_spec as per new UI * fix rating widget bug * fix qa bugs * fix: * cypress failing tests * Migration QA callouts * Removed unused imports * update constract check algo * fix color contrast issue * fix: cypress failure test cases * update font sizes labels * fix regression bugs * fix: * JSON form labelTextSize issue fix * Updated comment for the fontSizeUtility function * migrations issues related to table widget borderRadius and boxShadow * fix: default labelTextSize issue for the Input and Select families * fix regression bugs * fix regression bugs * PassingParams spec - added wait time * fix: font family default value issue on JS toggle * fix js toggle issue in text widget * fix tests * fix tests * fix tests * fix cypress tests * fix regression bugs * fix regression bugs * fix: * refactored table widget migration function as per review comments, * added default value to the widget * fix: failing unit test cases * fix theming spec * fix cypress tests * test: fixed failed cypress test * incorporate ashit feedback * fix cypress tests * fix: addressed review comments * comment out table cypress test * fix merge conflicts * comment out color picker tests Co-authored-by: Pawan Kumar <pawankumar@Pawans-MacBook-Pro.local> Co-authored-by: keyurparalkar <keyur@appsmith.com> Co-authored-by: Aswath K <aswath@appsmith.com> Co-authored-by: Nayan <nayan@appsmith.com> Co-authored-by: Ashit Rath <ashit@appsmith.com> Co-authored-by: balajisoundar <balaji@appsmith.com> Co-authored-by: albinAppsmith <87797149+albinAppsmith@users.noreply.github.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com> Co-authored-by: apple <nandan@thinkify.io> Co-authored-by: Parthvi Goswami <parthvigoswami@Parthvis-MacBook-Pro.local>
2022-05-04 09:45:57 +00:00
import { getSelectedAppTheme } from "selectors/appThemingSelectors";
import { updateMetaState } from "actions/metaActions";
import { getAllActionValidationConfig } from "selectors/entitiesSelector";
import { DataTree } from "entities/DataTree/dataTreeFactory";
import { EvalMetaUpdates } from "workers/DataTreeEvaluator/types";
import { JSUpdate } from "utils/JSPaneUtils";
import { DataTreeDiff } from "workers/evaluationUtils";
import { CanvasWidgetsReduxState } from "reducers/entityReducers/canvasWidgetsReducer";
import { AppTheme } from "entities/AppTheming";
import { ActionValidationConfigMap } from "constants/PropertyControlConstants";
feat: console log implementation in appsmith (#16286) * feat: capture console from across the app (#15676) * create: console override file - Adds methods to override the given console functionality to capture the console statements written by the user * update: evaluate function to extract console op - Added logs extraction for both sync and async functions - Adding them to the return object of the evaluations * update: timestamp field to log addition method - Added optional argument to function definition for inputting the timestamp of the log - This is done to maintain timings of the execution of the log * update: interface for log objects * update: post function execution logic - Added logic to push the logs generated by the evaluation to the logs store * update: added handling for sending nested fns - While console logging functions or objects that had functions was causing an error - Added a check for removing functions and replacing them with name of the functions instead * chore: added types and comments * fix: updated evaluation tests * fix: added check for log in returned obj * update: added the source data in the trigger logs - Removed on js execute logs from showing up here since they are already handled. If they are not removed, they will show up on the first page load twice * add: ellipsis function for log title string - This is to keep big object contained in the first line only * update: made logs reset function public * update: resetting logs before new eval - Logs object has to be cleared before next eval can happen to make sure there are no roll overs from last evals * chore: added comments * add: extracting logs after eval of functions * add: storing logs to redux after eval * refactor: updated types * add: func to store logs w/ severity as arg * refactor: updating func call for user logs * chore: fixed elipsis logic * chore: removed unused type * chore: updated preview text logic * add: type for transfer object post eval * update: aded new userLogs obj to dataTreeEvaluator * update: passing logs from object to saga * update: parsing received userlogs * refactor: used predefined fns * refactor: moved resetlogs to common func * chore: updated comments * feat: update redux store and UI for system + user logs (#15936) * update: updated types for the redux store - Added category and data fields in the log object * update: types of log redux store * update: calls for the console log store function * update: icon fetch func for log item UI * update: syncing UI with the new designs (WIP) * chore: fixed lint error * update: filters for logs * update: icon for clearing log filters * update: filtering function - Added checks against category and severity * update: logitem UI - updated type of the UI object - added css based ellipsis - added toggle for console logs - added array of json views for objects/arrays - css tweaks * update: debugger cta - Removed copy option - Updated UI * update: logic for expanding user logs - Removed debugger CTA - Fixed position for the expand/collapse icon - Added joining char for when the log is expanded * update: assets for new UI - updated colors - Added new icon * hotfix: ternserver code * add: search across the text of log * update: icons for the app * update: click to expand/collapse of logs * fix: search keyword update on change within JSObjects * fix: alignment of log items in both states * update: jest tests for debugger errors and filter * fix: drop down options color issue - the icon used was not the standard one - We have a lot of duplicates of the same icon * fix: synced with ADS changes on release * fix: remove dependency from old icon * add: cypress selectors for automation testing * fix: replaced static messages with variables * fix: updated the dependency map for filter * fix: height of the filter drop down * fix: chaining logic for search filter * fix: syncing the padding values to ADS * fix: help icon visibility issue * fix: width of filter dropdown Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> * add: e2e tests for console statements using IIFE * test: added test for console logs in jsobjects * fix: functionality of expanding context menu on msg click * fix: added try catch and handling for numbers * hotfix: handling unwanted toasts * fix: alignment and clickable cursor * fix: alignment of expanded span in console logs * add: analytics event on new console log created * fix: added handling for boolean and undefined * fix: removed log reset from common func - Whenever we are creating global DTO, the logs were being reset. This caused logs to reset whenever a promise was encountered in the logs. * fix: combined JS log saving to widget process * add: new analytics event on filter changed * update: added handling for empty value * update: removed comma between multiple logs * update: synced test changes with release * update: removed unused wait timings * Logs spec script update * update: ts methods in log spec e2e test * logs spec update * update: removed body clicks from test script * Logs spec update * update: removed ask from google option * refactor: ui fixes * fix: text selection of logs * fix: updated dropdown width management * update: made the flushlogs function async * update: added handling for promises * update: added test with promises fail and pass * fix: added sync variant to work for sync objects * refactor: commented out unused tests * update: exceptions in the name of log entity * fix: pagination of logs to handle dynamic data stream * fix: removed unused async function * fix: moved logs handling to separate saga * fix: color for context menu text Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-09-04 11:58:05 +00:00
import { LogObject, UserLogObject } from "workers/UserLog";
import { storeLogs, updateTriggerMeta } from "./DebuggerSagas";
let widgetTypeConfigMap: WidgetTypeConfigMap;
const worker = new GracefulWorkerService(Worker);
export type EvalTreePayload = {
dataTree: DataTree;
dependencies: Record<string, string[]>;
errors: EvalError[];
evalMetaUpdates: EvalMetaUpdates;
evaluationOrder: string[];
jsUpdates: Record<string, JSUpdate>;
logs: any[];
feat: console log implementation in appsmith (#16286) * feat: capture console from across the app (#15676) * create: console override file - Adds methods to override the given console functionality to capture the console statements written by the user * update: evaluate function to extract console op - Added logs extraction for both sync and async functions - Adding them to the return object of the evaluations * update: timestamp field to log addition method - Added optional argument to function definition for inputting the timestamp of the log - This is done to maintain timings of the execution of the log * update: interface for log objects * update: post function execution logic - Added logic to push the logs generated by the evaluation to the logs store * update: added handling for sending nested fns - While console logging functions or objects that had functions was causing an error - Added a check for removing functions and replacing them with name of the functions instead * chore: added types and comments * fix: updated evaluation tests * fix: added check for log in returned obj * update: added the source data in the trigger logs - Removed on js execute logs from showing up here since they are already handled. If they are not removed, they will show up on the first page load twice * add: ellipsis function for log title string - This is to keep big object contained in the first line only * update: made logs reset function public * update: resetting logs before new eval - Logs object has to be cleared before next eval can happen to make sure there are no roll overs from last evals * chore: added comments * add: extracting logs after eval of functions * add: storing logs to redux after eval * refactor: updated types * add: func to store logs w/ severity as arg * refactor: updating func call for user logs * chore: fixed elipsis logic * chore: removed unused type * chore: updated preview text logic * add: type for transfer object post eval * update: aded new userLogs obj to dataTreeEvaluator * update: passing logs from object to saga * update: parsing received userlogs * refactor: used predefined fns * refactor: moved resetlogs to common func * chore: updated comments * feat: update redux store and UI for system + user logs (#15936) * update: updated types for the redux store - Added category and data fields in the log object * update: types of log redux store * update: calls for the console log store function * update: icon fetch func for log item UI * update: syncing UI with the new designs (WIP) * chore: fixed lint error * update: filters for logs * update: icon for clearing log filters * update: filtering function - Added checks against category and severity * update: logitem UI - updated type of the UI object - added css based ellipsis - added toggle for console logs - added array of json views for objects/arrays - css tweaks * update: debugger cta - Removed copy option - Updated UI * update: logic for expanding user logs - Removed debugger CTA - Fixed position for the expand/collapse icon - Added joining char for when the log is expanded * update: assets for new UI - updated colors - Added new icon * hotfix: ternserver code * add: search across the text of log * update: icons for the app * update: click to expand/collapse of logs * fix: search keyword update on change within JSObjects * fix: alignment of log items in both states * update: jest tests for debugger errors and filter * fix: drop down options color issue - the icon used was not the standard one - We have a lot of duplicates of the same icon * fix: synced with ADS changes on release * fix: remove dependency from old icon * add: cypress selectors for automation testing * fix: replaced static messages with variables * fix: updated the dependency map for filter * fix: height of the filter drop down * fix: chaining logic for search filter * fix: syncing the padding values to ADS * fix: help icon visibility issue * fix: width of filter dropdown Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> * add: e2e tests for console statements using IIFE * test: added test for console logs in jsobjects * fix: functionality of expanding context menu on msg click * fix: added try catch and handling for numbers * hotfix: handling unwanted toasts * fix: alignment and clickable cursor * fix: alignment of expanded span in console logs * add: analytics event on new console log created * fix: added handling for boolean and undefined * fix: removed log reset from common func - Whenever we are creating global DTO, the logs were being reset. This caused logs to reset whenever a promise was encountered in the logs. * fix: combined JS log saving to widget process * add: new analytics event on filter changed * update: added handling for empty value * update: removed comma between multiple logs * update: synced test changes with release * update: removed unused wait timings * Logs spec script update * update: ts methods in log spec e2e test * logs spec update * update: removed body clicks from test script * Logs spec update * update: removed ask from google option * refactor: ui fixes * fix: text selection of logs * fix: updated dropdown width management * update: made the flushlogs function async * update: added handling for promises * update: added test with promises fail and pass * fix: added sync variant to work for sync objects * refactor: commented out unused tests * update: exceptions in the name of log entity * fix: pagination of logs to handle dynamic data stream * fix: removed unused async function * fix: moved logs handling to separate saga * fix: color for context menu text Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-09-04 11:58:05 +00:00
userLogs?: UserLogObject[];
unEvalUpdates: DataTreeDiff[];
isCreateFirstTree: boolean;
};
function* evaluateTreeSaga(
postEvalActions?: Array<AnyReduxAction>,
feat: Undo/Redo (#6654) * Scaffolding for undo-redo * undo redo working Poc commit * memory performance improvements by diffing * dont run update on undo/redo" * merging widget postion update and canvas bottom row update into one dsl update. * fix tabs widget * Visible updates per undo redo action (#6838) Co-authored-by: Rahul R <rahulramesha@Rahuls-MacBook-Pro.local> * resize atomic operation * fix switch control state issue * disallow undo/redo for snipping and comment mode * disallow undo/redo for snipping and comment mode * fix color picker issue in undo/redo * add test for replayDSL * option control fix, adding logs * minor position change undo redo updates * add test cases for replayHelpers * property Upade visual change * remove unused code * global hot key jest test for undo redo * Fixing batch updates on property change.. * add tests for toggle control in property pane * unwanted utils. * add tests for text control * add tests for deletion * add tests for dropping a new widget * adding jest test for replayUtils * add move widget tests * add tests for color picker control * add analytics for undo/redo * add analytics for undo/redo * tab addition atomic * cypress tests for propertyPane, toasts and radiowidget optionControl * replayDSL end of redo stack fix * property update changes * menu option control debounce input * color picker empty undo fix * fix cypress tests * widget add/remove atomic * revert alternative approach to handle atomic operations * update replayDSL test * add some comments * addressing review comments * flash color for property pane controls * Fixing adding of tabs widget as well. * code review comments. * merging widget postion update and canvas bottom row update into one dsl update. * fix ordering of tabs property control * meta property update canvas min height. * fixing failed specs. * Fixing entity explorer update on deleting tab from entity explorer. * address review comments and minor property update changes * fixing failing tests * merge conflicts * changes to cater widget api. * fix suggested widget table issue * draggable list for undo redo * fix widget name focus * excluding canvas updates. * fixing codeEditor update on propertySection collapse * fixed failing test case Co-authored-by: Abhinav Jha <abhinav@appsmith.com> Co-authored-by: Rahul R <rahulramesha@Rahuls-MacBook-Pro.local> Co-authored-by: root <root@DESKTOP-9GENCK0.localdomain> Co-authored-by: Ashok Kumar M <35134347+marks0351@users.noreply.github.com> Co-authored-by: Pawan Kumar <pawankumar@Pawans-MacBook-Pro.local>
2021-09-21 07:55:56 +00:00
shouldReplay?: boolean,
) {
const allActionValidationConfig: {
[actionId: string]: ActionValidationConfigMap;
} = yield select(getAllActionValidationConfig);
const unevalTree: DataTree = yield select(getUnevaluatedDataTree);
const widgets: CanvasWidgetsReduxState = yield select(getWidgets);
const theme: AppTheme = yield select(getSelectedAppTheme);
2021-03-31 07:40:59 +00:00
log.debug({ unevalTree });
PerformanceTracker.startAsyncTracking(
PerformanceTransactionName.DATA_TREE_EVALUATION,
);
// @ts-expect-error: Worker Response is unknown
const workerResponse = yield call(
worker.request,
EVAL_WORKER_ACTIONS.EVAL_TREE,
{
unevalTree,
widgetTypeConfigMap,
feat: Undo/Redo (#6654) * Scaffolding for undo-redo * undo redo working Poc commit * memory performance improvements by diffing * dont run update on undo/redo" * merging widget postion update and canvas bottom row update into one dsl update. * fix tabs widget * Visible updates per undo redo action (#6838) Co-authored-by: Rahul R <rahulramesha@Rahuls-MacBook-Pro.local> * resize atomic operation * fix switch control state issue * disallow undo/redo for snipping and comment mode * disallow undo/redo for snipping and comment mode * fix color picker issue in undo/redo * add test for replayDSL * option control fix, adding logs * minor position change undo redo updates * add test cases for replayHelpers * property Upade visual change * remove unused code * global hot key jest test for undo redo * Fixing batch updates on property change.. * add tests for toggle control in property pane * unwanted utils. * add tests for text control * add tests for deletion * add tests for dropping a new widget * adding jest test for replayUtils * add move widget tests * add tests for color picker control * add analytics for undo/redo * add analytics for undo/redo * tab addition atomic * cypress tests for propertyPane, toasts and radiowidget optionControl * replayDSL end of redo stack fix * property update changes * menu option control debounce input * color picker empty undo fix * fix cypress tests * widget add/remove atomic * revert alternative approach to handle atomic operations * update replayDSL test * add some comments * addressing review comments * flash color for property pane controls * Fixing adding of tabs widget as well. * code review comments. * merging widget postion update and canvas bottom row update into one dsl update. * fix ordering of tabs property control * meta property update canvas min height. * fixing failed specs. * Fixing entity explorer update on deleting tab from entity explorer. * address review comments and minor property update changes * fixing failing tests * merge conflicts * changes to cater widget api. * fix suggested widget table issue * draggable list for undo redo * fix widget name focus * excluding canvas updates. * fixing codeEditor update on propertySection collapse * fixed failing test case Co-authored-by: Abhinav Jha <abhinav@appsmith.com> Co-authored-by: Rahul R <rahulramesha@Rahuls-MacBook-Pro.local> Co-authored-by: root <root@DESKTOP-9GENCK0.localdomain> Co-authored-by: Ashok Kumar M <35134347+marks0351@users.noreply.github.com> Co-authored-by: Pawan Kumar <pawankumar@Pawans-MacBook-Pro.local>
2021-09-21 07:55:56 +00:00
widgets,
feat: App Theming (#9714) * fix style bugs * fix select styles * test: fix font size issue for cypress tests * incorporate ashit feedback * test: addresed review comments for cypress tests * add analytics events * height issue in view mode * incorporate code review feedbacks * incorporate code review feedbacks * refactor: addressed review comments; removed border radius and box shadow for text widget; Updated migrations * feat: Makes shadow and radius controls keyboard accessible (#11547) * makes shadow and radius controls keyboard accessible * removes unused imports * moves options out of render method * fix: changed the misnomer background property name to the relevant property name * fix: border radius issue for the map widget * address qa bugs * address qa bugs * fix ux of theming pane when widget is selected * fix: * added backgroundColor to the video widget * restricted pop-over border radius to 0.375rem * added box shadow for the input group for select widget * fix: added delete icon in the delete theme modal * address qa bugs * change checkbox column size in config * add js convertible to button color * remove unused imports * test: fixed jest tests * fix primary color typo * fix: migrations for the theming * fix: * Removed background color from MultiTreeSelect and TreeSelect component. * grouped button's menu button pop over border radius restricting to 0.375rem. * test: updated Dsl migration UT * address qa bugs * address qa bugs * fix: address qa comments * address qa bugs * fix: * migration issue; * unit test cases; * fix rating widget scroll issue * fix youtube video border radius bug * fix select widget * fix select widgets styles * address qa bugs * merge conflicts * makes the reset button keyboard accessible (#12134) * -resolved merge conflicts * address qa bugs * fix: labelTextSize migration fixes * refactor: * made changes to the fontSizeUtils function * fixed the issue related to unit tests * fix button group widget * remove unused imports * fix: fixed the text size migration for the table widget * refactor: addressed review comments for the table widget theming migration * fix button group widget * add init calls for view mode * json form init theme changes * fix: added migration for boxShadow, borderRadius and textSizes for table widget * fix broken fields * test: fixed unit tests * wip * inconsistancy fixes and schemaItem update in updateHook/fieldConfiguration * feat: init json form migration theming * json form primaryColor -> accentColor * update table widget * update table widget * object field label styling * fix: migration related to the JSON form * fix: fixed labelTextSize migration for JSON form nested widgets * property control nested stylesheet lookup * JSONForm label styles form array items * show label for checkbox field array item * fix button group widget * wip * refactor: addressed table widget review comments * refactor: addressed ashit review comments; * added childStylesheet for widgets * feat: Keyboard navigable Color Picker control (#11797) * Makes ColorPicker keyboard accessible * seperate out keyboard and mouse interactions * fix issue with not focusing back to input * Adds test for Color picker * chore: added comment for the boxShadow property * fix: * added unit test cases for the widget and property utils * resolved warning messages * wip * theme config update * fix merge conflicts * refactor: moved theming migration inside the migrations folder * fix qa bugs * fix jest test * fix: unit test cases * fix table column creation logic * refactor: addressed review comments for migrations * fix: Overriding margin and padding for custom render in the dropdown component (#12875) * * fix for custom render padding and margin in ADS dropdown * * fix for removing padding from normal render options * refactor: moved the boxShadow condition to the variable * fix qa bugs * fix: migration QA callouts for audio recorder widget * refactor: added updated comments for boxShadow migration for table widget * fix theme binfings for JSONForm fields under Object * fix table widget theming bug * fix: addressed code review comments * fix: unit test cases * fix: qa migration callouts * fix table widget theming bug * fix JSONForm currency input dropdown not submit form * Added new tests - AppThemingSpec * fix qa bugs * fix unit test * fix JSONForm cellBorderWidth to have default value post migration * fix unit test * fix qa bugs * remove unused imports * fix qa bugs * fix JSONForm input height issue * fix qa bugs * Updating Theming spec * * dropdown color fixes (#13249) * fix caching issue ; * Fixed Theming tests * fix tests * fix tab widget tests * fix: json form children level migration issue * fix table widget tests * Updated test * updated tests * updated test * updated tests * updated tests * updated pageload * fix cypress tests * remove cypress created files * fix color picker issues * Failure fixes * Fixed some more tests * fix: cypress test failures * fix tests * remove consoles * fix table tests * fix qa bugs * updating snapshots for AppPageLayout_spec as per new UI * fix rating widget bug * fix qa bugs * fix: * cypress failing tests * Migration QA callouts * Removed unused imports * update constract check algo * fix color contrast issue * fix: cypress failure test cases * update font sizes labels * fix regression bugs * fix: * JSON form labelTextSize issue fix * Updated comment for the fontSizeUtility function * migrations issues related to table widget borderRadius and boxShadow * fix: default labelTextSize issue for the Input and Select families * fix regression bugs * fix regression bugs * PassingParams spec - added wait time * fix: font family default value issue on JS toggle * fix js toggle issue in text widget * fix tests * fix tests * fix tests * fix cypress tests * fix regression bugs * fix regression bugs * fix: * refactored table widget migration function as per review comments, * added default value to the widget * fix: failing unit test cases * fix theming spec * fix cypress tests * test: fixed failed cypress test * incorporate ashit feedback * fix cypress tests * fix: addressed review comments * comment out table cypress test * fix merge conflicts * comment out color picker tests Co-authored-by: Pawan Kumar <pawankumar@Pawans-MacBook-Pro.local> Co-authored-by: keyurparalkar <keyur@appsmith.com> Co-authored-by: Aswath K <aswath@appsmith.com> Co-authored-by: Nayan <nayan@appsmith.com> Co-authored-by: Ashit Rath <ashit@appsmith.com> Co-authored-by: balajisoundar <balaji@appsmith.com> Co-authored-by: albinAppsmith <87797149+albinAppsmith@users.noreply.github.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com> Co-authored-by: apple <nandan@thinkify.io> Co-authored-by: Parthvi Goswami <parthvigoswami@Parthvis-MacBook-Pro.local>
2022-05-04 09:45:57 +00:00
theme,
feat: Undo/Redo (#6654) * Scaffolding for undo-redo * undo redo working Poc commit * memory performance improvements by diffing * dont run update on undo/redo" * merging widget postion update and canvas bottom row update into one dsl update. * fix tabs widget * Visible updates per undo redo action (#6838) Co-authored-by: Rahul R <rahulramesha@Rahuls-MacBook-Pro.local> * resize atomic operation * fix switch control state issue * disallow undo/redo for snipping and comment mode * disallow undo/redo for snipping and comment mode * fix color picker issue in undo/redo * add test for replayDSL * option control fix, adding logs * minor position change undo redo updates * add test cases for replayHelpers * property Upade visual change * remove unused code * global hot key jest test for undo redo * Fixing batch updates on property change.. * add tests for toggle control in property pane * unwanted utils. * add tests for text control * add tests for deletion * add tests for dropping a new widget * adding jest test for replayUtils * add move widget tests * add tests for color picker control * add analytics for undo/redo * add analytics for undo/redo * tab addition atomic * cypress tests for propertyPane, toasts and radiowidget optionControl * replayDSL end of redo stack fix * property update changes * menu option control debounce input * color picker empty undo fix * fix cypress tests * widget add/remove atomic * revert alternative approach to handle atomic operations * update replayDSL test * add some comments * addressing review comments * flash color for property pane controls * Fixing adding of tabs widget as well. * code review comments. * merging widget postion update and canvas bottom row update into one dsl update. * fix ordering of tabs property control * meta property update canvas min height. * fixing failed specs. * Fixing entity explorer update on deleting tab from entity explorer. * address review comments and minor property update changes * fixing failing tests * merge conflicts * changes to cater widget api. * fix suggested widget table issue * draggable list for undo redo * fix widget name focus * excluding canvas updates. * fixing codeEditor update on propertySection collapse * fixed failing test case Co-authored-by: Abhinav Jha <abhinav@appsmith.com> Co-authored-by: Rahul R <rahulramesha@Rahuls-MacBook-Pro.local> Co-authored-by: root <root@DESKTOP-9GENCK0.localdomain> Co-authored-by: Ashok Kumar M <35134347+marks0351@users.noreply.github.com> Co-authored-by: Pawan Kumar <pawankumar@Pawans-MacBook-Pro.local>
2021-09-21 07:55:56 +00:00
shouldReplay,
allActionValidationConfig,
},
);
const {
dataTree,
dependencies,
errors,
evalMetaUpdates = [],
evaluationOrder,
jsUpdates,
logs,
feat: console log implementation in appsmith (#16286) * feat: capture console from across the app (#15676) * create: console override file - Adds methods to override the given console functionality to capture the console statements written by the user * update: evaluate function to extract console op - Added logs extraction for both sync and async functions - Adding them to the return object of the evaluations * update: timestamp field to log addition method - Added optional argument to function definition for inputting the timestamp of the log - This is done to maintain timings of the execution of the log * update: interface for log objects * update: post function execution logic - Added logic to push the logs generated by the evaluation to the logs store * update: added handling for sending nested fns - While console logging functions or objects that had functions was causing an error - Added a check for removing functions and replacing them with name of the functions instead * chore: added types and comments * fix: updated evaluation tests * fix: added check for log in returned obj * update: added the source data in the trigger logs - Removed on js execute logs from showing up here since they are already handled. If they are not removed, they will show up on the first page load twice * add: ellipsis function for log title string - This is to keep big object contained in the first line only * update: made logs reset function public * update: resetting logs before new eval - Logs object has to be cleared before next eval can happen to make sure there are no roll overs from last evals * chore: added comments * add: extracting logs after eval of functions * add: storing logs to redux after eval * refactor: updated types * add: func to store logs w/ severity as arg * refactor: updating func call for user logs * chore: fixed elipsis logic * chore: removed unused type * chore: updated preview text logic * add: type for transfer object post eval * update: aded new userLogs obj to dataTreeEvaluator * update: passing logs from object to saga * update: parsing received userlogs * refactor: used predefined fns * refactor: moved resetlogs to common func * chore: updated comments * feat: update redux store and UI for system + user logs (#15936) * update: updated types for the redux store - Added category and data fields in the log object * update: types of log redux store * update: calls for the console log store function * update: icon fetch func for log item UI * update: syncing UI with the new designs (WIP) * chore: fixed lint error * update: filters for logs * update: icon for clearing log filters * update: filtering function - Added checks against category and severity * update: logitem UI - updated type of the UI object - added css based ellipsis - added toggle for console logs - added array of json views for objects/arrays - css tweaks * update: debugger cta - Removed copy option - Updated UI * update: logic for expanding user logs - Removed debugger CTA - Fixed position for the expand/collapse icon - Added joining char for when the log is expanded * update: assets for new UI - updated colors - Added new icon * hotfix: ternserver code * add: search across the text of log * update: icons for the app * update: click to expand/collapse of logs * fix: search keyword update on change within JSObjects * fix: alignment of log items in both states * update: jest tests for debugger errors and filter * fix: drop down options color issue - the icon used was not the standard one - We have a lot of duplicates of the same icon * fix: synced with ADS changes on release * fix: remove dependency from old icon * add: cypress selectors for automation testing * fix: replaced static messages with variables * fix: updated the dependency map for filter * fix: height of the filter drop down * fix: chaining logic for search filter * fix: syncing the padding values to ADS * fix: help icon visibility issue * fix: width of filter dropdown Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> * add: e2e tests for console statements using IIFE * test: added test for console logs in jsobjects * fix: functionality of expanding context menu on msg click * fix: added try catch and handling for numbers * hotfix: handling unwanted toasts * fix: alignment and clickable cursor * fix: alignment of expanded span in console logs * add: analytics event on new console log created * fix: added handling for boolean and undefined * fix: removed log reset from common func - Whenever we are creating global DTO, the logs were being reset. This caused logs to reset whenever a promise was encountered in the logs. * fix: combined JS log saving to widget process * add: new analytics event on filter changed * update: added handling for empty value * update: removed comma between multiple logs * update: synced test changes with release * update: removed unused wait timings * Logs spec script update * update: ts methods in log spec e2e test * logs spec update * update: removed body clicks from test script * Logs spec update * update: removed ask from google option * refactor: ui fixes * fix: text selection of logs * fix: updated dropdown width management * update: made the flushlogs function async * update: added handling for promises * update: added test with promises fail and pass * fix: added sync variant to work for sync objects * refactor: commented out unused tests * update: exceptions in the name of log entity * fix: pagination of logs to handle dynamic data stream * fix: removed unused async function * fix: moved logs handling to separate saga * fix: color for context menu text Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-09-04 11:58:05 +00:00
userLogs,
unEvalUpdates,
isCreateFirstTree = false,
}: EvalTreePayload = workerResponse;
2021-03-31 07:40:59 +00:00
PerformanceTracker.stopAsyncTracking(
PerformanceTransactionName.DATA_TREE_EVALUATION,
);
PerformanceTracker.startAsyncTracking(
PerformanceTransactionName.SET_EVALUATED_TREE,
);
const oldDataTree: DataTree = yield select(getDataTree);
const updates = diff(oldDataTree, dataTree) || [];
yield put(setEvaluatedTree(updates));
PerformanceTracker.stopAsyncTracking(
2021-03-31 07:40:59 +00:00
PerformanceTransactionName.SET_EVALUATED_TREE,
);
// if evalMetaUpdates are present only then dispatch updateMetaState
if (evalMetaUpdates.length) {
yield put(updateMetaState(evalMetaUpdates));
}
log.debug({ evalMetaUpdatesLength: evalMetaUpdates.length });
const updatedDataTree: DataTree = yield select(getDataTree);
if (
!(!isCreateFirstTree && Object.keys(jsUpdates).length > 0) &&
!!userLogs &&
userLogs.length > 0
) {
feat: console log implementation in appsmith (#16286) * feat: capture console from across the app (#15676) * create: console override file - Adds methods to override the given console functionality to capture the console statements written by the user * update: evaluate function to extract console op - Added logs extraction for both sync and async functions - Adding them to the return object of the evaluations * update: timestamp field to log addition method - Added optional argument to function definition for inputting the timestamp of the log - This is done to maintain timings of the execution of the log * update: interface for log objects * update: post function execution logic - Added logic to push the logs generated by the evaluation to the logs store * update: added handling for sending nested fns - While console logging functions or objects that had functions was causing an error - Added a check for removing functions and replacing them with name of the functions instead * chore: added types and comments * fix: updated evaluation tests * fix: added check for log in returned obj * update: added the source data in the trigger logs - Removed on js execute logs from showing up here since they are already handled. If they are not removed, they will show up on the first page load twice * add: ellipsis function for log title string - This is to keep big object contained in the first line only * update: made logs reset function public * update: resetting logs before new eval - Logs object has to be cleared before next eval can happen to make sure there are no roll overs from last evals * chore: added comments * add: extracting logs after eval of functions * add: storing logs to redux after eval * refactor: updated types * add: func to store logs w/ severity as arg * refactor: updating func call for user logs * chore: fixed elipsis logic * chore: removed unused type * chore: updated preview text logic * add: type for transfer object post eval * update: aded new userLogs obj to dataTreeEvaluator * update: passing logs from object to saga * update: parsing received userlogs * refactor: used predefined fns * refactor: moved resetlogs to common func * chore: updated comments * feat: update redux store and UI for system + user logs (#15936) * update: updated types for the redux store - Added category and data fields in the log object * update: types of log redux store * update: calls for the console log store function * update: icon fetch func for log item UI * update: syncing UI with the new designs (WIP) * chore: fixed lint error * update: filters for logs * update: icon for clearing log filters * update: filtering function - Added checks against category and severity * update: logitem UI - updated type of the UI object - added css based ellipsis - added toggle for console logs - added array of json views for objects/arrays - css tweaks * update: debugger cta - Removed copy option - Updated UI * update: logic for expanding user logs - Removed debugger CTA - Fixed position for the expand/collapse icon - Added joining char for when the log is expanded * update: assets for new UI - updated colors - Added new icon * hotfix: ternserver code * add: search across the text of log * update: icons for the app * update: click to expand/collapse of logs * fix: search keyword update on change within JSObjects * fix: alignment of log items in both states * update: jest tests for debugger errors and filter * fix: drop down options color issue - the icon used was not the standard one - We have a lot of duplicates of the same icon * fix: synced with ADS changes on release * fix: remove dependency from old icon * add: cypress selectors for automation testing * fix: replaced static messages with variables * fix: updated the dependency map for filter * fix: height of the filter drop down * fix: chaining logic for search filter * fix: syncing the padding values to ADS * fix: help icon visibility issue * fix: width of filter dropdown Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> * add: e2e tests for console statements using IIFE * test: added test for console logs in jsobjects * fix: functionality of expanding context menu on msg click * fix: added try catch and handling for numbers * hotfix: handling unwanted toasts * fix: alignment and clickable cursor * fix: alignment of expanded span in console logs * add: analytics event on new console log created * fix: added handling for boolean and undefined * fix: removed log reset from common func - Whenever we are creating global DTO, the logs were being reset. This caused logs to reset whenever a promise was encountered in the logs. * fix: combined JS log saving to widget process * add: new analytics event on filter changed * update: added handling for empty value * update: removed comma between multiple logs * update: synced test changes with release * update: removed unused wait timings * Logs spec script update * update: ts methods in log spec e2e test * logs spec update * update: removed body clicks from test script * Logs spec update * update: removed ask from google option * refactor: ui fixes * fix: text selection of logs * fix: updated dropdown width management * update: made the flushlogs function async * update: added handling for promises * update: added test with promises fail and pass * fix: added sync variant to work for sync objects * refactor: commented out unused tests * update: exceptions in the name of log entity * fix: pagination of logs to handle dynamic data stream * fix: removed unused async function * fix: moved logs handling to separate saga * fix: color for context menu text Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-09-04 11:58:05 +00:00
yield all(
userLogs.map((log: UserLogObject) => {
return call(
feat: console log implementation in appsmith (#16286) * feat: capture console from across the app (#15676) * create: console override file - Adds methods to override the given console functionality to capture the console statements written by the user * update: evaluate function to extract console op - Added logs extraction for both sync and async functions - Adding them to the return object of the evaluations * update: timestamp field to log addition method - Added optional argument to function definition for inputting the timestamp of the log - This is done to maintain timings of the execution of the log * update: interface for log objects * update: post function execution logic - Added logic to push the logs generated by the evaluation to the logs store * update: added handling for sending nested fns - While console logging functions or objects that had functions was causing an error - Added a check for removing functions and replacing them with name of the functions instead * chore: added types and comments * fix: updated evaluation tests * fix: added check for log in returned obj * update: added the source data in the trigger logs - Removed on js execute logs from showing up here since they are already handled. If they are not removed, they will show up on the first page load twice * add: ellipsis function for log title string - This is to keep big object contained in the first line only * update: made logs reset function public * update: resetting logs before new eval - Logs object has to be cleared before next eval can happen to make sure there are no roll overs from last evals * chore: added comments * add: extracting logs after eval of functions * add: storing logs to redux after eval * refactor: updated types * add: func to store logs w/ severity as arg * refactor: updating func call for user logs * chore: fixed elipsis logic * chore: removed unused type * chore: updated preview text logic * add: type for transfer object post eval * update: aded new userLogs obj to dataTreeEvaluator * update: passing logs from object to saga * update: parsing received userlogs * refactor: used predefined fns * refactor: moved resetlogs to common func * chore: updated comments * feat: update redux store and UI for system + user logs (#15936) * update: updated types for the redux store - Added category and data fields in the log object * update: types of log redux store * update: calls for the console log store function * update: icon fetch func for log item UI * update: syncing UI with the new designs (WIP) * chore: fixed lint error * update: filters for logs * update: icon for clearing log filters * update: filtering function - Added checks against category and severity * update: logitem UI - updated type of the UI object - added css based ellipsis - added toggle for console logs - added array of json views for objects/arrays - css tweaks * update: debugger cta - Removed copy option - Updated UI * update: logic for expanding user logs - Removed debugger CTA - Fixed position for the expand/collapse icon - Added joining char for when the log is expanded * update: assets for new UI - updated colors - Added new icon * hotfix: ternserver code * add: search across the text of log * update: icons for the app * update: click to expand/collapse of logs * fix: search keyword update on change within JSObjects * fix: alignment of log items in both states * update: jest tests for debugger errors and filter * fix: drop down options color issue - the icon used was not the standard one - We have a lot of duplicates of the same icon * fix: synced with ADS changes on release * fix: remove dependency from old icon * add: cypress selectors for automation testing * fix: replaced static messages with variables * fix: updated the dependency map for filter * fix: height of the filter drop down * fix: chaining logic for search filter * fix: syncing the padding values to ADS * fix: help icon visibility issue * fix: width of filter dropdown Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> * add: e2e tests for console statements using IIFE * test: added test for console logs in jsobjects * fix: functionality of expanding context menu on msg click * fix: added try catch and handling for numbers * hotfix: handling unwanted toasts * fix: alignment and clickable cursor * fix: alignment of expanded span in console logs * add: analytics event on new console log created * fix: added handling for boolean and undefined * fix: removed log reset from common func - Whenever we are creating global DTO, the logs were being reset. This caused logs to reset whenever a promise was encountered in the logs. * fix: combined JS log saving to widget process * add: new analytics event on filter changed * update: added handling for empty value * update: removed comma between multiple logs * update: synced test changes with release * update: removed unused wait timings * Logs spec script update * update: ts methods in log spec e2e test * logs spec update * update: removed body clicks from test script * Logs spec update * update: removed ask from google option * refactor: ui fixes * fix: text selection of logs * fix: updated dropdown width management * update: made the flushlogs function async * update: added handling for promises * update: added test with promises fail and pass * fix: added sync variant to work for sync objects * refactor: commented out unused tests * update: exceptions in the name of log entity * fix: pagination of logs to handle dynamic data stream * fix: removed unused async function * fix: moved logs handling to separate saga * fix: color for context menu text Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-09-04 11:58:05 +00:00
storeLogs,
log.logObject,
log.source.name,
log.source.type,
log.source.id,
);
}),
);
}
log.debug({ jsUpdates: jsUpdates });
log.debug({ dataTree: updatedDataTree });
logs?.forEach((evalLog: any) => log.debug(evalLog));
// Added type as any due to https://github.com/redux-saga/redux-saga/issues/1482
yield call(evalErrorHandler as any, errors, updatedDataTree, evaluationOrder);
const appMode: APP_MODE | undefined = yield select(getAppMode);
2021-07-30 10:24:22 +00:00
if (appMode !== APP_MODE.PUBLISHED) {
yield call(makeUpdateJSCollection, jsUpdates);
2021-07-30 10:24:22 +00:00
yield fork(
logSuccessfulBindings,
unevalTree,
updatedDataTree,
evaluationOrder,
isCreateFirstTree,
2021-07-30 10:24:22 +00:00
);
yield fork(updateTernDefinitions, updatedDataTree, unEvalUpdates);
2021-07-30 10:24:22 +00:00
}
2021-07-20 10:02:56 +00:00
yield put(setDependencyMap(dependencies));
if (postEvalActions && postEvalActions.length) {
yield call(postEvalActionDispatcher, postEvalActions);
}
}
2021-01-14 14:37:21 +00:00
export function* evaluateActionBindings(
bindings: string[],
executionParams: Record<string, any> | string = {},
2020-12-14 18:48:13 +00:00
) {
const workerResponse: { errors: EvalError[]; values: unknown } = yield call(
worker.request,
2021-01-14 14:37:21 +00:00
EVAL_WORKER_ACTIONS.EVAL_ACTION_BINDINGS,
{
2021-01-14 14:37:21 +00:00
bindings,
executionParams,
},
);
2021-01-14 14:37:21 +00:00
const { errors, values } = workerResponse;
yield call(evalErrorHandler, errors);
2021-01-14 14:37:21 +00:00
return values;
}
/*
* Used to evaluate and execute dynamic trigger end to end
* Widget action fields and JS Object run triggers this flow
*
* We start a duplex request with the worker and wait till the time we get a 'finished' event from the
* worker. Worker will evaluate a block of code and ask the main thread to execute it. The result of this
* execution is returned to the worker where it can resolve/reject the current promise.
*/
export function* evaluateAndExecuteDynamicTrigger(
dynamicTrigger: string,
eventType: EventType,
triggerMeta: TriggerMeta,
2020-11-20 09:30:50 +00:00
callbackData?: Array<any>,
globalContext?: Record<string, unknown>,
) {
const unEvalTree: DataTree = yield select(getUnevaluatedDataTree);
log.debug({ execute: dynamicTrigger });
const { requestChannel, responseChannel } = yield call(
worker.duplexRequest,
EVAL_WORKER_ACTIONS.EVAL_TRIGGER,
{ dataTree: unEvalTree, dynamicTrigger, callbackData, globalContext },
);
let keepAlive = true;
while (keepAlive) {
const { requestData } = yield take(requestChannel);
feat: console log implementation in appsmith (#16286) * feat: capture console from across the app (#15676) * create: console override file - Adds methods to override the given console functionality to capture the console statements written by the user * update: evaluate function to extract console op - Added logs extraction for both sync and async functions - Adding them to the return object of the evaluations * update: timestamp field to log addition method - Added optional argument to function definition for inputting the timestamp of the log - This is done to maintain timings of the execution of the log * update: interface for log objects * update: post function execution logic - Added logic to push the logs generated by the evaluation to the logs store * update: added handling for sending nested fns - While console logging functions or objects that had functions was causing an error - Added a check for removing functions and replacing them with name of the functions instead * chore: added types and comments * fix: updated evaluation tests * fix: added check for log in returned obj * update: added the source data in the trigger logs - Removed on js execute logs from showing up here since they are already handled. If they are not removed, they will show up on the first page load twice * add: ellipsis function for log title string - This is to keep big object contained in the first line only * update: made logs reset function public * update: resetting logs before new eval - Logs object has to be cleared before next eval can happen to make sure there are no roll overs from last evals * chore: added comments * add: extracting logs after eval of functions * add: storing logs to redux after eval * refactor: updated types * add: func to store logs w/ severity as arg * refactor: updating func call for user logs * chore: fixed elipsis logic * chore: removed unused type * chore: updated preview text logic * add: type for transfer object post eval * update: aded new userLogs obj to dataTreeEvaluator * update: passing logs from object to saga * update: parsing received userlogs * refactor: used predefined fns * refactor: moved resetlogs to common func * chore: updated comments * feat: update redux store and UI for system + user logs (#15936) * update: updated types for the redux store - Added category and data fields in the log object * update: types of log redux store * update: calls for the console log store function * update: icon fetch func for log item UI * update: syncing UI with the new designs (WIP) * chore: fixed lint error * update: filters for logs * update: icon for clearing log filters * update: filtering function - Added checks against category and severity * update: logitem UI - updated type of the UI object - added css based ellipsis - added toggle for console logs - added array of json views for objects/arrays - css tweaks * update: debugger cta - Removed copy option - Updated UI * update: logic for expanding user logs - Removed debugger CTA - Fixed position for the expand/collapse icon - Added joining char for when the log is expanded * update: assets for new UI - updated colors - Added new icon * hotfix: ternserver code * add: search across the text of log * update: icons for the app * update: click to expand/collapse of logs * fix: search keyword update on change within JSObjects * fix: alignment of log items in both states * update: jest tests for debugger errors and filter * fix: drop down options color issue - the icon used was not the standard one - We have a lot of duplicates of the same icon * fix: synced with ADS changes on release * fix: remove dependency from old icon * add: cypress selectors for automation testing * fix: replaced static messages with variables * fix: updated the dependency map for filter * fix: height of the filter drop down * fix: chaining logic for search filter * fix: syncing the padding values to ADS * fix: help icon visibility issue * fix: width of filter dropdown Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> * add: e2e tests for console statements using IIFE * test: added test for console logs in jsobjects * fix: functionality of expanding context menu on msg click * fix: added try catch and handling for numbers * hotfix: handling unwanted toasts * fix: alignment and clickable cursor * fix: alignment of expanded span in console logs * add: analytics event on new console log created * fix: added handling for boolean and undefined * fix: removed log reset from common func - Whenever we are creating global DTO, the logs were being reset. This caused logs to reset whenever a promise was encountered in the logs. * fix: combined JS log saving to widget process * add: new analytics event on filter changed * update: added handling for empty value * update: removed comma between multiple logs * update: synced test changes with release * update: removed unused wait timings * Logs spec script update * update: ts methods in log spec e2e test * logs spec update * update: removed body clicks from test script * Logs spec update * update: removed ask from google option * refactor: ui fixes * fix: text selection of logs * fix: updated dropdown width management * update: made the flushlogs function async * update: added handling for promises * update: added test with promises fail and pass * fix: added sync variant to work for sync objects * refactor: commented out unused tests * update: exceptions in the name of log entity * fix: pagination of logs to handle dynamic data stream * fix: removed unused async function * fix: moved logs handling to separate saga * fix: color for context menu text Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-09-04 11:58:05 +00:00
log.debug({ requestData, eventType, triggerMeta, dynamicTrigger });
if (requestData.finished) {
keepAlive = false;
feat: console log implementation in appsmith (#16286) * feat: capture console from across the app (#15676) * create: console override file - Adds methods to override the given console functionality to capture the console statements written by the user * update: evaluate function to extract console op - Added logs extraction for both sync and async functions - Adding them to the return object of the evaluations * update: timestamp field to log addition method - Added optional argument to function definition for inputting the timestamp of the log - This is done to maintain timings of the execution of the log * update: interface for log objects * update: post function execution logic - Added logic to push the logs generated by the evaluation to the logs store * update: added handling for sending nested fns - While console logging functions or objects that had functions was causing an error - Added a check for removing functions and replacing them with name of the functions instead * chore: added types and comments * fix: updated evaluation tests * fix: added check for log in returned obj * update: added the source data in the trigger logs - Removed on js execute logs from showing up here since they are already handled. If they are not removed, they will show up on the first page load twice * add: ellipsis function for log title string - This is to keep big object contained in the first line only * update: made logs reset function public * update: resetting logs before new eval - Logs object has to be cleared before next eval can happen to make sure there are no roll overs from last evals * chore: added comments * add: extracting logs after eval of functions * add: storing logs to redux after eval * refactor: updated types * add: func to store logs w/ severity as arg * refactor: updating func call for user logs * chore: fixed elipsis logic * chore: removed unused type * chore: updated preview text logic * add: type for transfer object post eval * update: aded new userLogs obj to dataTreeEvaluator * update: passing logs from object to saga * update: parsing received userlogs * refactor: used predefined fns * refactor: moved resetlogs to common func * chore: updated comments * feat: update redux store and UI for system + user logs (#15936) * update: updated types for the redux store - Added category and data fields in the log object * update: types of log redux store * update: calls for the console log store function * update: icon fetch func for log item UI * update: syncing UI with the new designs (WIP) * chore: fixed lint error * update: filters for logs * update: icon for clearing log filters * update: filtering function - Added checks against category and severity * update: logitem UI - updated type of the UI object - added css based ellipsis - added toggle for console logs - added array of json views for objects/arrays - css tweaks * update: debugger cta - Removed copy option - Updated UI * update: logic for expanding user logs - Removed debugger CTA - Fixed position for the expand/collapse icon - Added joining char for when the log is expanded * update: assets for new UI - updated colors - Added new icon * hotfix: ternserver code * add: search across the text of log * update: icons for the app * update: click to expand/collapse of logs * fix: search keyword update on change within JSObjects * fix: alignment of log items in both states * update: jest tests for debugger errors and filter * fix: drop down options color issue - the icon used was not the standard one - We have a lot of duplicates of the same icon * fix: synced with ADS changes on release * fix: remove dependency from old icon * add: cypress selectors for automation testing * fix: replaced static messages with variables * fix: updated the dependency map for filter * fix: height of the filter drop down * fix: chaining logic for search filter * fix: syncing the padding values to ADS * fix: help icon visibility issue * fix: width of filter dropdown Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> * add: e2e tests for console statements using IIFE * test: added test for console logs in jsobjects * fix: functionality of expanding context menu on msg click * fix: added try catch and handling for numbers * hotfix: handling unwanted toasts * fix: alignment and clickable cursor * fix: alignment of expanded span in console logs * add: analytics event on new console log created * fix: added handling for boolean and undefined * fix: removed log reset from common func - Whenever we are creating global DTO, the logs were being reset. This caused logs to reset whenever a promise was encountered in the logs. * fix: combined JS log saving to widget process * add: new analytics event on filter changed * update: added handling for empty value * update: removed comma between multiple logs * update: synced test changes with release * update: removed unused wait timings * Logs spec script update * update: ts methods in log spec e2e test * logs spec update * update: removed body clicks from test script * Logs spec update * update: removed ask from google option * refactor: ui fixes * fix: text selection of logs * fix: updated dropdown width management * update: made the flushlogs function async * update: added handling for promises * update: added test with promises fail and pass * fix: added sync variant to work for sync objects * refactor: commented out unused tests * update: exceptions in the name of log entity * fix: pagination of logs to handle dynamic data stream * fix: removed unused async function * fix: moved logs handling to separate saga * fix: color for context menu text Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-09-04 11:58:05 +00:00
const { result } = requestData;
yield call(updateTriggerMeta, triggerMeta, dynamicTrigger);
feat: console log implementation in appsmith (#16286) * feat: capture console from across the app (#15676) * create: console override file - Adds methods to override the given console functionality to capture the console statements written by the user * update: evaluate function to extract console op - Added logs extraction for both sync and async functions - Adding them to the return object of the evaluations * update: timestamp field to log addition method - Added optional argument to function definition for inputting the timestamp of the log - This is done to maintain timings of the execution of the log * update: interface for log objects * update: post function execution logic - Added logic to push the logs generated by the evaluation to the logs store * update: added handling for sending nested fns - While console logging functions or objects that had functions was causing an error - Added a check for removing functions and replacing them with name of the functions instead * chore: added types and comments * fix: updated evaluation tests * fix: added check for log in returned obj * update: added the source data in the trigger logs - Removed on js execute logs from showing up here since they are already handled. If they are not removed, they will show up on the first page load twice * add: ellipsis function for log title string - This is to keep big object contained in the first line only * update: made logs reset function public * update: resetting logs before new eval - Logs object has to be cleared before next eval can happen to make sure there are no roll overs from last evals * chore: added comments * add: extracting logs after eval of functions * add: storing logs to redux after eval * refactor: updated types * add: func to store logs w/ severity as arg * refactor: updating func call for user logs * chore: fixed elipsis logic * chore: removed unused type * chore: updated preview text logic * add: type for transfer object post eval * update: aded new userLogs obj to dataTreeEvaluator * update: passing logs from object to saga * update: parsing received userlogs * refactor: used predefined fns * refactor: moved resetlogs to common func * chore: updated comments * feat: update redux store and UI for system + user logs (#15936) * update: updated types for the redux store - Added category and data fields in the log object * update: types of log redux store * update: calls for the console log store function * update: icon fetch func for log item UI * update: syncing UI with the new designs (WIP) * chore: fixed lint error * update: filters for logs * update: icon for clearing log filters * update: filtering function - Added checks against category and severity * update: logitem UI - updated type of the UI object - added css based ellipsis - added toggle for console logs - added array of json views for objects/arrays - css tweaks * update: debugger cta - Removed copy option - Updated UI * update: logic for expanding user logs - Removed debugger CTA - Fixed position for the expand/collapse icon - Added joining char for when the log is expanded * update: assets for new UI - updated colors - Added new icon * hotfix: ternserver code * add: search across the text of log * update: icons for the app * update: click to expand/collapse of logs * fix: search keyword update on change within JSObjects * fix: alignment of log items in both states * update: jest tests for debugger errors and filter * fix: drop down options color issue - the icon used was not the standard one - We have a lot of duplicates of the same icon * fix: synced with ADS changes on release * fix: remove dependency from old icon * add: cypress selectors for automation testing * fix: replaced static messages with variables * fix: updated the dependency map for filter * fix: height of the filter drop down * fix: chaining logic for search filter * fix: syncing the padding values to ADS * fix: help icon visibility issue * fix: width of filter dropdown Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> * add: e2e tests for console statements using IIFE * test: added test for console logs in jsobjects * fix: functionality of expanding context menu on msg click * fix: added try catch and handling for numbers * hotfix: handling unwanted toasts * fix: alignment and clickable cursor * fix: alignment of expanded span in console logs * add: analytics event on new console log created * fix: added handling for boolean and undefined * fix: removed log reset from common func - Whenever we are creating global DTO, the logs were being reset. This caused logs to reset whenever a promise was encountered in the logs. * fix: combined JS log saving to widget process * add: new analytics event on filter changed * update: added handling for empty value * update: removed comma between multiple logs * update: synced test changes with release * update: removed unused wait timings * Logs spec script update * update: ts methods in log spec e2e test * logs spec update * update: removed body clicks from test script * Logs spec update * update: removed ask from google option * refactor: ui fixes * fix: text selection of logs * fix: updated dropdown width management * update: made the flushlogs function async * update: added handling for promises * update: added test with promises fail and pass * fix: added sync variant to work for sync objects * refactor: commented out unused tests * update: exceptions in the name of log entity * fix: pagination of logs to handle dynamic data stream * fix: removed unused async function * fix: moved logs handling to separate saga * fix: color for context menu text Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-09-04 11:58:05 +00:00
// Check for any logs in the response and store them in the redux store
if (
!!result &&
result.hasOwnProperty("logs") &&
!!result.logs &&
result.logs.length
) {
yield call(
storeLogs,
feat: console log implementation in appsmith (#16286) * feat: capture console from across the app (#15676) * create: console override file - Adds methods to override the given console functionality to capture the console statements written by the user * update: evaluate function to extract console op - Added logs extraction for both sync and async functions - Adding them to the return object of the evaluations * update: timestamp field to log addition method - Added optional argument to function definition for inputting the timestamp of the log - This is done to maintain timings of the execution of the log * update: interface for log objects * update: post function execution logic - Added logic to push the logs generated by the evaluation to the logs store * update: added handling for sending nested fns - While console logging functions or objects that had functions was causing an error - Added a check for removing functions and replacing them with name of the functions instead * chore: added types and comments * fix: updated evaluation tests * fix: added check for log in returned obj * update: added the source data in the trigger logs - Removed on js execute logs from showing up here since they are already handled. If they are not removed, they will show up on the first page load twice * add: ellipsis function for log title string - This is to keep big object contained in the first line only * update: made logs reset function public * update: resetting logs before new eval - Logs object has to be cleared before next eval can happen to make sure there are no roll overs from last evals * chore: added comments * add: extracting logs after eval of functions * add: storing logs to redux after eval * refactor: updated types * add: func to store logs w/ severity as arg * refactor: updating func call for user logs * chore: fixed elipsis logic * chore: removed unused type * chore: updated preview text logic * add: type for transfer object post eval * update: aded new userLogs obj to dataTreeEvaluator * update: passing logs from object to saga * update: parsing received userlogs * refactor: used predefined fns * refactor: moved resetlogs to common func * chore: updated comments * feat: update redux store and UI for system + user logs (#15936) * update: updated types for the redux store - Added category and data fields in the log object * update: types of log redux store * update: calls for the console log store function * update: icon fetch func for log item UI * update: syncing UI with the new designs (WIP) * chore: fixed lint error * update: filters for logs * update: icon for clearing log filters * update: filtering function - Added checks against category and severity * update: logitem UI - updated type of the UI object - added css based ellipsis - added toggle for console logs - added array of json views for objects/arrays - css tweaks * update: debugger cta - Removed copy option - Updated UI * update: logic for expanding user logs - Removed debugger CTA - Fixed position for the expand/collapse icon - Added joining char for when the log is expanded * update: assets for new UI - updated colors - Added new icon * hotfix: ternserver code * add: search across the text of log * update: icons for the app * update: click to expand/collapse of logs * fix: search keyword update on change within JSObjects * fix: alignment of log items in both states * update: jest tests for debugger errors and filter * fix: drop down options color issue - the icon used was not the standard one - We have a lot of duplicates of the same icon * fix: synced with ADS changes on release * fix: remove dependency from old icon * add: cypress selectors for automation testing * fix: replaced static messages with variables * fix: updated the dependency map for filter * fix: height of the filter drop down * fix: chaining logic for search filter * fix: syncing the padding values to ADS * fix: help icon visibility issue * fix: width of filter dropdown Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> * add: e2e tests for console statements using IIFE * test: added test for console logs in jsobjects * fix: functionality of expanding context menu on msg click * fix: added try catch and handling for numbers * hotfix: handling unwanted toasts * fix: alignment and clickable cursor * fix: alignment of expanded span in console logs * add: analytics event on new console log created * fix: added handling for boolean and undefined * fix: removed log reset from common func - Whenever we are creating global DTO, the logs were being reset. This caused logs to reset whenever a promise was encountered in the logs. * fix: combined JS log saving to widget process * add: new analytics event on filter changed * update: added handling for empty value * update: removed comma between multiple logs * update: synced test changes with release * update: removed unused wait timings * Logs spec script update * update: ts methods in log spec e2e test * logs spec update * update: removed body clicks from test script * Logs spec update * update: removed ask from google option * refactor: ui fixes * fix: text selection of logs * fix: updated dropdown width management * update: made the flushlogs function async * update: added handling for promises * update: added test with promises fail and pass * fix: added sync variant to work for sync objects * refactor: commented out unused tests * update: exceptions in the name of log entity * fix: pagination of logs to handle dynamic data stream * fix: removed unused async function * fix: moved logs handling to separate saga * fix: color for context menu text Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-09-04 11:58:05 +00:00
result.logs,
triggerMeta.source?.name || triggerMeta.triggerPropertyName || "",
eventType === EventType.ON_JS_FUNCTION_EXECUTE
? ENTITY_TYPE.JSACTION
: ENTITY_TYPE.WIDGET,
triggerMeta.source?.id || "",
feat: console log implementation in appsmith (#16286) * feat: capture console from across the app (#15676) * create: console override file - Adds methods to override the given console functionality to capture the console statements written by the user * update: evaluate function to extract console op - Added logs extraction for both sync and async functions - Adding them to the return object of the evaluations * update: timestamp field to log addition method - Added optional argument to function definition for inputting the timestamp of the log - This is done to maintain timings of the execution of the log * update: interface for log objects * update: post function execution logic - Added logic to push the logs generated by the evaluation to the logs store * update: added handling for sending nested fns - While console logging functions or objects that had functions was causing an error - Added a check for removing functions and replacing them with name of the functions instead * chore: added types and comments * fix: updated evaluation tests * fix: added check for log in returned obj * update: added the source data in the trigger logs - Removed on js execute logs from showing up here since they are already handled. If they are not removed, they will show up on the first page load twice * add: ellipsis function for log title string - This is to keep big object contained in the first line only * update: made logs reset function public * update: resetting logs before new eval - Logs object has to be cleared before next eval can happen to make sure there are no roll overs from last evals * chore: added comments * add: extracting logs after eval of functions * add: storing logs to redux after eval * refactor: updated types * add: func to store logs w/ severity as arg * refactor: updating func call for user logs * chore: fixed elipsis logic * chore: removed unused type * chore: updated preview text logic * add: type for transfer object post eval * update: aded new userLogs obj to dataTreeEvaluator * update: passing logs from object to saga * update: parsing received userlogs * refactor: used predefined fns * refactor: moved resetlogs to common func * chore: updated comments * feat: update redux store and UI for system + user logs (#15936) * update: updated types for the redux store - Added category and data fields in the log object * update: types of log redux store * update: calls for the console log store function * update: icon fetch func for log item UI * update: syncing UI with the new designs (WIP) * chore: fixed lint error * update: filters for logs * update: icon for clearing log filters * update: filtering function - Added checks against category and severity * update: logitem UI - updated type of the UI object - added css based ellipsis - added toggle for console logs - added array of json views for objects/arrays - css tweaks * update: debugger cta - Removed copy option - Updated UI * update: logic for expanding user logs - Removed debugger CTA - Fixed position for the expand/collapse icon - Added joining char for when the log is expanded * update: assets for new UI - updated colors - Added new icon * hotfix: ternserver code * add: search across the text of log * update: icons for the app * update: click to expand/collapse of logs * fix: search keyword update on change within JSObjects * fix: alignment of log items in both states * update: jest tests for debugger errors and filter * fix: drop down options color issue - the icon used was not the standard one - We have a lot of duplicates of the same icon * fix: synced with ADS changes on release * fix: remove dependency from old icon * add: cypress selectors for automation testing * fix: replaced static messages with variables * fix: updated the dependency map for filter * fix: height of the filter drop down * fix: chaining logic for search filter * fix: syncing the padding values to ADS * fix: help icon visibility issue * fix: width of filter dropdown Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> * add: e2e tests for console statements using IIFE * test: added test for console logs in jsobjects * fix: functionality of expanding context menu on msg click * fix: added try catch and handling for numbers * hotfix: handling unwanted toasts * fix: alignment and clickable cursor * fix: alignment of expanded span in console logs * add: analytics event on new console log created * fix: added handling for boolean and undefined * fix: removed log reset from common func - Whenever we are creating global DTO, the logs were being reset. This caused logs to reset whenever a promise was encountered in the logs. * fix: combined JS log saving to widget process * add: new analytics event on filter changed * update: added handling for empty value * update: removed comma between multiple logs * update: synced test changes with release * update: removed unused wait timings * Logs spec script update * update: ts methods in log spec e2e test * logs spec update * update: removed body clicks from test script * Logs spec update * update: removed ask from google option * refactor: ui fixes * fix: text selection of logs * fix: updated dropdown width management * update: made the flushlogs function async * update: added handling for promises * update: added test with promises fail and pass * fix: added sync variant to work for sync objects * refactor: commented out unused tests * update: exceptions in the name of log entity * fix: pagination of logs to handle dynamic data stream * fix: removed unused async function * fix: moved logs handling to separate saga * fix: color for context menu text Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-09-04 11:58:05 +00:00
);
}
/* Handle errors during evaluation
* A finish event with errors means that the error was not caught by the user code.
* We raise an error telling the user that an uncaught error has occurred
* */
feat: console log implementation in appsmith (#16286) * feat: capture console from across the app (#15676) * create: console override file - Adds methods to override the given console functionality to capture the console statements written by the user * update: evaluate function to extract console op - Added logs extraction for both sync and async functions - Adding them to the return object of the evaluations * update: timestamp field to log addition method - Added optional argument to function definition for inputting the timestamp of the log - This is done to maintain timings of the execution of the log * update: interface for log objects * update: post function execution logic - Added logic to push the logs generated by the evaluation to the logs store * update: added handling for sending nested fns - While console logging functions or objects that had functions was causing an error - Added a check for removing functions and replacing them with name of the functions instead * chore: added types and comments * fix: updated evaluation tests * fix: added check for log in returned obj * update: added the source data in the trigger logs - Removed on js execute logs from showing up here since they are already handled. If they are not removed, they will show up on the first page load twice * add: ellipsis function for log title string - This is to keep big object contained in the first line only * update: made logs reset function public * update: resetting logs before new eval - Logs object has to be cleared before next eval can happen to make sure there are no roll overs from last evals * chore: added comments * add: extracting logs after eval of functions * add: storing logs to redux after eval * refactor: updated types * add: func to store logs w/ severity as arg * refactor: updating func call for user logs * chore: fixed elipsis logic * chore: removed unused type * chore: updated preview text logic * add: type for transfer object post eval * update: aded new userLogs obj to dataTreeEvaluator * update: passing logs from object to saga * update: parsing received userlogs * refactor: used predefined fns * refactor: moved resetlogs to common func * chore: updated comments * feat: update redux store and UI for system + user logs (#15936) * update: updated types for the redux store - Added category and data fields in the log object * update: types of log redux store * update: calls for the console log store function * update: icon fetch func for log item UI * update: syncing UI with the new designs (WIP) * chore: fixed lint error * update: filters for logs * update: icon for clearing log filters * update: filtering function - Added checks against category and severity * update: logitem UI - updated type of the UI object - added css based ellipsis - added toggle for console logs - added array of json views for objects/arrays - css tweaks * update: debugger cta - Removed copy option - Updated UI * update: logic for expanding user logs - Removed debugger CTA - Fixed position for the expand/collapse icon - Added joining char for when the log is expanded * update: assets for new UI - updated colors - Added new icon * hotfix: ternserver code * add: search across the text of log * update: icons for the app * update: click to expand/collapse of logs * fix: search keyword update on change within JSObjects * fix: alignment of log items in both states * update: jest tests for debugger errors and filter * fix: drop down options color issue - the icon used was not the standard one - We have a lot of duplicates of the same icon * fix: synced with ADS changes on release * fix: remove dependency from old icon * add: cypress selectors for automation testing * fix: replaced static messages with variables * fix: updated the dependency map for filter * fix: height of the filter drop down * fix: chaining logic for search filter * fix: syncing the padding values to ADS * fix: help icon visibility issue * fix: width of filter dropdown Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> * add: e2e tests for console statements using IIFE * test: added test for console logs in jsobjects * fix: functionality of expanding context menu on msg click * fix: added try catch and handling for numbers * hotfix: handling unwanted toasts * fix: alignment and clickable cursor * fix: alignment of expanded span in console logs * add: analytics event on new console log created * fix: added handling for boolean and undefined * fix: removed log reset from common func - Whenever we are creating global DTO, the logs were being reset. This caused logs to reset whenever a promise was encountered in the logs. * fix: combined JS log saving to widget process * add: new analytics event on filter changed * update: added handling for empty value * update: removed comma between multiple logs * update: synced test changes with release * update: removed unused wait timings * Logs spec script update * update: ts methods in log spec e2e test * logs spec update * update: removed body clicks from test script * Logs spec update * update: removed ask from google option * refactor: ui fixes * fix: text selection of logs * fix: updated dropdown width management * update: made the flushlogs function async * update: added handling for promises * update: added test with promises fail and pass * fix: added sync variant to work for sync objects * refactor: commented out unused tests * update: exceptions in the name of log entity * fix: pagination of logs to handle dynamic data stream * fix: removed unused async function * fix: moved logs handling to separate saga * fix: color for context menu text Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-09-04 11:58:05 +00:00
if (
!!result &&
result.hasOwnProperty("errors") &&
!!result.errors &&
result.errors.length
) {
feat: Settings js editor (#9984) * POC * Closing channels * WIP * v1 * get working with JS editor * autocomplete * added comments * try removing an import * different way of import * dependency map added to body * triggers can be part of js editor functions hence * removed unwanted lines * new flow chnages * Resolve conflicts * small css changes for empty state * Fix prettier * Fixes * flow changes part 2 * Mock web worker for testing * Throw errors during evaluation * Action execution should be non blocking on the main thread to evaluation of further actions * WIP * Fix build issue * Fix warnings * Rename * Refactor and add tests for worker util * Fix response flow post refactor * added settings icon for js editor * WIP * WIP * WIP * Tests for promises * settings for each function of js object added * Error handling * Error handing action validation * Update test * Passing callback data in the eval trigger flow * log triggers to be executed * WIP * confirm before execution * Remove debugging * Fix backwards compatibility * Avoid passing trigger meta around * fix button loading * handle error callbacks * fix tests * tests * fix console error when checking for async * Fix async function check * Fix async function check again * fix bad commit * Add some comments * added clientSideExecution flag for js functions * css changes for settings icon * unsued code removed * on page load PART 1 * onPageLoad rest iof changes * corrected async badge * removed duplicate test cases * added confirm modal for js functions * removed unused code * small chnage * dependency was not getting created * Fix confirmation modal * unused code removed * replaced new confirmsaga * confirmaton box changes * Fixing JSEditor Run butn locator * corrected property * dependency map was failing * changed key for confirmation box Co-authored-by: hetunandu <hetu@appsmith.com> Co-authored-by: Hetu Nandu <hetunandu@gmail.com> Co-authored-by: Arpit Mohan <arpit@appsmith.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-03-17 12:05:17 +00:00
if (
feat: console log implementation in appsmith (#16286) * feat: capture console from across the app (#15676) * create: console override file - Adds methods to override the given console functionality to capture the console statements written by the user * update: evaluate function to extract console op - Added logs extraction for both sync and async functions - Adding them to the return object of the evaluations * update: timestamp field to log addition method - Added optional argument to function definition for inputting the timestamp of the log - This is done to maintain timings of the execution of the log * update: interface for log objects * update: post function execution logic - Added logic to push the logs generated by the evaluation to the logs store * update: added handling for sending nested fns - While console logging functions or objects that had functions was causing an error - Added a check for removing functions and replacing them with name of the functions instead * chore: added types and comments * fix: updated evaluation tests * fix: added check for log in returned obj * update: added the source data in the trigger logs - Removed on js execute logs from showing up here since they are already handled. If they are not removed, they will show up on the first page load twice * add: ellipsis function for log title string - This is to keep big object contained in the first line only * update: made logs reset function public * update: resetting logs before new eval - Logs object has to be cleared before next eval can happen to make sure there are no roll overs from last evals * chore: added comments * add: extracting logs after eval of functions * add: storing logs to redux after eval * refactor: updated types * add: func to store logs w/ severity as arg * refactor: updating func call for user logs * chore: fixed elipsis logic * chore: removed unused type * chore: updated preview text logic * add: type for transfer object post eval * update: aded new userLogs obj to dataTreeEvaluator * update: passing logs from object to saga * update: parsing received userlogs * refactor: used predefined fns * refactor: moved resetlogs to common func * chore: updated comments * feat: update redux store and UI for system + user logs (#15936) * update: updated types for the redux store - Added category and data fields in the log object * update: types of log redux store * update: calls for the console log store function * update: icon fetch func for log item UI * update: syncing UI with the new designs (WIP) * chore: fixed lint error * update: filters for logs * update: icon for clearing log filters * update: filtering function - Added checks against category and severity * update: logitem UI - updated type of the UI object - added css based ellipsis - added toggle for console logs - added array of json views for objects/arrays - css tweaks * update: debugger cta - Removed copy option - Updated UI * update: logic for expanding user logs - Removed debugger CTA - Fixed position for the expand/collapse icon - Added joining char for when the log is expanded * update: assets for new UI - updated colors - Added new icon * hotfix: ternserver code * add: search across the text of log * update: icons for the app * update: click to expand/collapse of logs * fix: search keyword update on change within JSObjects * fix: alignment of log items in both states * update: jest tests for debugger errors and filter * fix: drop down options color issue - the icon used was not the standard one - We have a lot of duplicates of the same icon * fix: synced with ADS changes on release * fix: remove dependency from old icon * add: cypress selectors for automation testing * fix: replaced static messages with variables * fix: updated the dependency map for filter * fix: height of the filter drop down * fix: chaining logic for search filter * fix: syncing the padding values to ADS * fix: help icon visibility issue * fix: width of filter dropdown Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> * add: e2e tests for console statements using IIFE * test: added test for console logs in jsobjects * fix: functionality of expanding context menu on msg click * fix: added try catch and handling for numbers * hotfix: handling unwanted toasts * fix: alignment and clickable cursor * fix: alignment of expanded span in console logs * add: analytics event on new console log created * fix: added handling for boolean and undefined * fix: removed log reset from common func - Whenever we are creating global DTO, the logs were being reset. This caused logs to reset whenever a promise was encountered in the logs. * fix: combined JS log saving to widget process * add: new analytics event on filter changed * update: added handling for empty value * update: removed comma between multiple logs * update: synced test changes with release * update: removed unused wait timings * Logs spec script update * update: ts methods in log spec e2e test * logs spec update * update: removed body clicks from test script * Logs spec update * update: removed ask from google option * refactor: ui fixes * fix: text selection of logs * fix: updated dropdown width management * update: made the flushlogs function async * update: added handling for promises * update: added test with promises fail and pass * fix: added sync variant to work for sync objects * refactor: commented out unused tests * update: exceptions in the name of log entity * fix: pagination of logs to handle dynamic data stream * fix: removed unused async function * fix: moved logs handling to separate saga * fix: color for context menu text Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-09-04 11:58:05 +00:00
result.errors[0].errorMessage !==
feat: Settings js editor (#9984) * POC * Closing channels * WIP * v1 * get working with JS editor * autocomplete * added comments * try removing an import * different way of import * dependency map added to body * triggers can be part of js editor functions hence * removed unwanted lines * new flow chnages * Resolve conflicts * small css changes for empty state * Fix prettier * Fixes * flow changes part 2 * Mock web worker for testing * Throw errors during evaluation * Action execution should be non blocking on the main thread to evaluation of further actions * WIP * Fix build issue * Fix warnings * Rename * Refactor and add tests for worker util * Fix response flow post refactor * added settings icon for js editor * WIP * WIP * WIP * Tests for promises * settings for each function of js object added * Error handling * Error handing action validation * Update test * Passing callback data in the eval trigger flow * log triggers to be executed * WIP * confirm before execution * Remove debugging * Fix backwards compatibility * Avoid passing trigger meta around * fix button loading * handle error callbacks * fix tests * tests * fix console error when checking for async * Fix async function check * Fix async function check again * fix bad commit * Add some comments * added clientSideExecution flag for js functions * css changes for settings icon * unsued code removed * on page load PART 1 * onPageLoad rest iof changes * corrected async badge * removed duplicate test cases * added confirm modal for js functions * removed unused code * small chnage * dependency was not getting created * Fix confirmation modal * unused code removed * replaced new confirmsaga * confirmaton box changes * Fixing JSEditor Run butn locator * corrected property * dependency map was failing * changed key for confirmation box Co-authored-by: hetunandu <hetu@appsmith.com> Co-authored-by: Hetu Nandu <hetunandu@gmail.com> Co-authored-by: Arpit Mohan <arpit@appsmith.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-03-17 12:05:17 +00:00
"UncaughtPromiseRejection: User cancelled action execution"
) {
feat: console log implementation in appsmith (#16286) * feat: capture console from across the app (#15676) * create: console override file - Adds methods to override the given console functionality to capture the console statements written by the user * update: evaluate function to extract console op - Added logs extraction for both sync and async functions - Adding them to the return object of the evaluations * update: timestamp field to log addition method - Added optional argument to function definition for inputting the timestamp of the log - This is done to maintain timings of the execution of the log * update: interface for log objects * update: post function execution logic - Added logic to push the logs generated by the evaluation to the logs store * update: added handling for sending nested fns - While console logging functions or objects that had functions was causing an error - Added a check for removing functions and replacing them with name of the functions instead * chore: added types and comments * fix: updated evaluation tests * fix: added check for log in returned obj * update: added the source data in the trigger logs - Removed on js execute logs from showing up here since they are already handled. If they are not removed, they will show up on the first page load twice * add: ellipsis function for log title string - This is to keep big object contained in the first line only * update: made logs reset function public * update: resetting logs before new eval - Logs object has to be cleared before next eval can happen to make sure there are no roll overs from last evals * chore: added comments * add: extracting logs after eval of functions * add: storing logs to redux after eval * refactor: updated types * add: func to store logs w/ severity as arg * refactor: updating func call for user logs * chore: fixed elipsis logic * chore: removed unused type * chore: updated preview text logic * add: type for transfer object post eval * update: aded new userLogs obj to dataTreeEvaluator * update: passing logs from object to saga * update: parsing received userlogs * refactor: used predefined fns * refactor: moved resetlogs to common func * chore: updated comments * feat: update redux store and UI for system + user logs (#15936) * update: updated types for the redux store - Added category and data fields in the log object * update: types of log redux store * update: calls for the console log store function * update: icon fetch func for log item UI * update: syncing UI with the new designs (WIP) * chore: fixed lint error * update: filters for logs * update: icon for clearing log filters * update: filtering function - Added checks against category and severity * update: logitem UI - updated type of the UI object - added css based ellipsis - added toggle for console logs - added array of json views for objects/arrays - css tweaks * update: debugger cta - Removed copy option - Updated UI * update: logic for expanding user logs - Removed debugger CTA - Fixed position for the expand/collapse icon - Added joining char for when the log is expanded * update: assets for new UI - updated colors - Added new icon * hotfix: ternserver code * add: search across the text of log * update: icons for the app * update: click to expand/collapse of logs * fix: search keyword update on change within JSObjects * fix: alignment of log items in both states * update: jest tests for debugger errors and filter * fix: drop down options color issue - the icon used was not the standard one - We have a lot of duplicates of the same icon * fix: synced with ADS changes on release * fix: remove dependency from old icon * add: cypress selectors for automation testing * fix: replaced static messages with variables * fix: updated the dependency map for filter * fix: height of the filter drop down * fix: chaining logic for search filter * fix: syncing the padding values to ADS * fix: help icon visibility issue * fix: width of filter dropdown Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> * add: e2e tests for console statements using IIFE * test: added test for console logs in jsobjects * fix: functionality of expanding context menu on msg click * fix: added try catch and handling for numbers * hotfix: handling unwanted toasts * fix: alignment and clickable cursor * fix: alignment of expanded span in console logs * add: analytics event on new console log created * fix: added handling for boolean and undefined * fix: removed log reset from common func - Whenever we are creating global DTO, the logs were being reset. This caused logs to reset whenever a promise was encountered in the logs. * fix: combined JS log saving to widget process * add: new analytics event on filter changed * update: added handling for empty value * update: removed comma between multiple logs * update: synced test changes with release * update: removed unused wait timings * Logs spec script update * update: ts methods in log spec e2e test * logs spec update * update: removed body clicks from test script * Logs spec update * update: removed ask from google option * refactor: ui fixes * fix: text selection of logs * fix: updated dropdown width management * update: made the flushlogs function async * update: added handling for promises * update: added test with promises fail and pass * fix: added sync variant to work for sync objects * refactor: commented out unused tests * update: exceptions in the name of log entity * fix: pagination of logs to handle dynamic data stream * fix: removed unused async function * fix: moved logs handling to separate saga * fix: color for context menu text Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-09-04 11:58:05 +00:00
throw new UncaughtPromiseError(result.errors[0].errorMessage);
feat: Settings js editor (#9984) * POC * Closing channels * WIP * v1 * get working with JS editor * autocomplete * added comments * try removing an import * different way of import * dependency map added to body * triggers can be part of js editor functions hence * removed unwanted lines * new flow chnages * Resolve conflicts * small css changes for empty state * Fix prettier * Fixes * flow changes part 2 * Mock web worker for testing * Throw errors during evaluation * Action execution should be non blocking on the main thread to evaluation of further actions * WIP * Fix build issue * Fix warnings * Rename * Refactor and add tests for worker util * Fix response flow post refactor * added settings icon for js editor * WIP * WIP * WIP * Tests for promises * settings for each function of js object added * Error handling * Error handing action validation * Update test * Passing callback data in the eval trigger flow * log triggers to be executed * WIP * confirm before execution * Remove debugging * Fix backwards compatibility * Avoid passing trigger meta around * fix button loading * handle error callbacks * fix tests * tests * fix console error when checking for async * Fix async function check * Fix async function check again * fix bad commit * Add some comments * added clientSideExecution flag for js functions * css changes for settings icon * unsued code removed * on page load PART 1 * onPageLoad rest iof changes * corrected async badge * removed duplicate test cases * added confirm modal for js functions * removed unused code * small chnage * dependency was not getting created * Fix confirmation modal * unused code removed * replaced new confirmsaga * confirmaton box changes * Fixing JSEditor Run butn locator * corrected property * dependency map was failing * changed key for confirmation box Co-authored-by: hetunandu <hetu@appsmith.com> Co-authored-by: Hetu Nandu <hetunandu@gmail.com> Co-authored-by: Arpit Mohan <arpit@appsmith.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-03-17 12:05:17 +00:00
}
}
feat: console log implementation in appsmith (#16286) * feat: capture console from across the app (#15676) * create: console override file - Adds methods to override the given console functionality to capture the console statements written by the user * update: evaluate function to extract console op - Added logs extraction for both sync and async functions - Adding them to the return object of the evaluations * update: timestamp field to log addition method - Added optional argument to function definition for inputting the timestamp of the log - This is done to maintain timings of the execution of the log * update: interface for log objects * update: post function execution logic - Added logic to push the logs generated by the evaluation to the logs store * update: added handling for sending nested fns - While console logging functions or objects that had functions was causing an error - Added a check for removing functions and replacing them with name of the functions instead * chore: added types and comments * fix: updated evaluation tests * fix: added check for log in returned obj * update: added the source data in the trigger logs - Removed on js execute logs from showing up here since they are already handled. If they are not removed, they will show up on the first page load twice * add: ellipsis function for log title string - This is to keep big object contained in the first line only * update: made logs reset function public * update: resetting logs before new eval - Logs object has to be cleared before next eval can happen to make sure there are no roll overs from last evals * chore: added comments * add: extracting logs after eval of functions * add: storing logs to redux after eval * refactor: updated types * add: func to store logs w/ severity as arg * refactor: updating func call for user logs * chore: fixed elipsis logic * chore: removed unused type * chore: updated preview text logic * add: type for transfer object post eval * update: aded new userLogs obj to dataTreeEvaluator * update: passing logs from object to saga * update: parsing received userlogs * refactor: used predefined fns * refactor: moved resetlogs to common func * chore: updated comments * feat: update redux store and UI for system + user logs (#15936) * update: updated types for the redux store - Added category and data fields in the log object * update: types of log redux store * update: calls for the console log store function * update: icon fetch func for log item UI * update: syncing UI with the new designs (WIP) * chore: fixed lint error * update: filters for logs * update: icon for clearing log filters * update: filtering function - Added checks against category and severity * update: logitem UI - updated type of the UI object - added css based ellipsis - added toggle for console logs - added array of json views for objects/arrays - css tweaks * update: debugger cta - Removed copy option - Updated UI * update: logic for expanding user logs - Removed debugger CTA - Fixed position for the expand/collapse icon - Added joining char for when the log is expanded * update: assets for new UI - updated colors - Added new icon * hotfix: ternserver code * add: search across the text of log * update: icons for the app * update: click to expand/collapse of logs * fix: search keyword update on change within JSObjects * fix: alignment of log items in both states * update: jest tests for debugger errors and filter * fix: drop down options color issue - the icon used was not the standard one - We have a lot of duplicates of the same icon * fix: synced with ADS changes on release * fix: remove dependency from old icon * add: cypress selectors for automation testing * fix: replaced static messages with variables * fix: updated the dependency map for filter * fix: height of the filter drop down * fix: chaining logic for search filter * fix: syncing the padding values to ADS * fix: help icon visibility issue * fix: width of filter dropdown Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> * add: e2e tests for console statements using IIFE * test: added test for console logs in jsobjects * fix: functionality of expanding context menu on msg click * fix: added try catch and handling for numbers * hotfix: handling unwanted toasts * fix: alignment and clickable cursor * fix: alignment of expanded span in console logs * add: analytics event on new console log created * fix: added handling for boolean and undefined * fix: removed log reset from common func - Whenever we are creating global DTO, the logs were being reset. This caused logs to reset whenever a promise was encountered in the logs. * fix: combined JS log saving to widget process * add: new analytics event on filter changed * update: added handling for empty value * update: removed comma between multiple logs * update: synced test changes with release * update: removed unused wait timings * Logs spec script update * update: ts methods in log spec e2e test * logs spec update * update: removed body clicks from test script * Logs spec update * update: removed ask from google option * refactor: ui fixes * fix: text selection of logs * fix: updated dropdown width management * update: made the flushlogs function async * update: added handling for promises * update: added test with promises fail and pass * fix: added sync variant to work for sync objects * refactor: commented out unused tests * update: exceptions in the name of log entity * fix: pagination of logs to handle dynamic data stream * fix: removed unused async function * fix: moved logs handling to separate saga * fix: color for context menu text Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-09-04 11:58:05 +00:00
// It is possible to get a few triggers here if the user
// still uses the old way of action runs and not promises. For that we
// need to manually execute these triggers outside the promise flow
feat: console log implementation in appsmith (#16286) * feat: capture console from across the app (#15676) * create: console override file - Adds methods to override the given console functionality to capture the console statements written by the user * update: evaluate function to extract console op - Added logs extraction for both sync and async functions - Adding them to the return object of the evaluations * update: timestamp field to log addition method - Added optional argument to function definition for inputting the timestamp of the log - This is done to maintain timings of the execution of the log * update: interface for log objects * update: post function execution logic - Added logic to push the logs generated by the evaluation to the logs store * update: added handling for sending nested fns - While console logging functions or objects that had functions was causing an error - Added a check for removing functions and replacing them with name of the functions instead * chore: added types and comments * fix: updated evaluation tests * fix: added check for log in returned obj * update: added the source data in the trigger logs - Removed on js execute logs from showing up here since they are already handled. If they are not removed, they will show up on the first page load twice * add: ellipsis function for log title string - This is to keep big object contained in the first line only * update: made logs reset function public * update: resetting logs before new eval - Logs object has to be cleared before next eval can happen to make sure there are no roll overs from last evals * chore: added comments * add: extracting logs after eval of functions * add: storing logs to redux after eval * refactor: updated types * add: func to store logs w/ severity as arg * refactor: updating func call for user logs * chore: fixed elipsis logic * chore: removed unused type * chore: updated preview text logic * add: type for transfer object post eval * update: aded new userLogs obj to dataTreeEvaluator * update: passing logs from object to saga * update: parsing received userlogs * refactor: used predefined fns * refactor: moved resetlogs to common func * chore: updated comments * feat: update redux store and UI for system + user logs (#15936) * update: updated types for the redux store - Added category and data fields in the log object * update: types of log redux store * update: calls for the console log store function * update: icon fetch func for log item UI * update: syncing UI with the new designs (WIP) * chore: fixed lint error * update: filters for logs * update: icon for clearing log filters * update: filtering function - Added checks against category and severity * update: logitem UI - updated type of the UI object - added css based ellipsis - added toggle for console logs - added array of json views for objects/arrays - css tweaks * update: debugger cta - Removed copy option - Updated UI * update: logic for expanding user logs - Removed debugger CTA - Fixed position for the expand/collapse icon - Added joining char for when the log is expanded * update: assets for new UI - updated colors - Added new icon * hotfix: ternserver code * add: search across the text of log * update: icons for the app * update: click to expand/collapse of logs * fix: search keyword update on change within JSObjects * fix: alignment of log items in both states * update: jest tests for debugger errors and filter * fix: drop down options color issue - the icon used was not the standard one - We have a lot of duplicates of the same icon * fix: synced with ADS changes on release * fix: remove dependency from old icon * add: cypress selectors for automation testing * fix: replaced static messages with variables * fix: updated the dependency map for filter * fix: height of the filter drop down * fix: chaining logic for search filter * fix: syncing the padding values to ADS * fix: help icon visibility issue * fix: width of filter dropdown Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> * add: e2e tests for console statements using IIFE * test: added test for console logs in jsobjects * fix: functionality of expanding context menu on msg click * fix: added try catch and handling for numbers * hotfix: handling unwanted toasts * fix: alignment and clickable cursor * fix: alignment of expanded span in console logs * add: analytics event on new console log created * fix: added handling for boolean and undefined * fix: removed log reset from common func - Whenever we are creating global DTO, the logs were being reset. This caused logs to reset whenever a promise was encountered in the logs. * fix: combined JS log saving to widget process * add: new analytics event on filter changed * update: added handling for empty value * update: removed comma between multiple logs * update: synced test changes with release * update: removed unused wait timings * Logs spec script update * update: ts methods in log spec e2e test * logs spec update * update: removed body clicks from test script * Logs spec update * update: removed ask from google option * refactor: ui fixes * fix: text selection of logs * fix: updated dropdown width management * update: made the flushlogs function async * update: added handling for promises * update: added test with promises fail and pass * fix: added sync variant to work for sync objects * refactor: commented out unused tests * update: exceptions in the name of log entity * fix: pagination of logs to handle dynamic data stream * fix: removed unused async function * fix: moved logs handling to separate saga * fix: color for context menu text Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-09-04 11:58:05 +00:00
const { triggers } = result;
if (triggers && triggers.length) {
log.debug({ triggers });
yield all(
triggers.map((trigger: ActionDescription) =>
call(executeActionTriggers, trigger, eventType, triggerMeta),
),
);
}
// Return value of a promise is returned
feat: console log implementation in appsmith (#16286) * feat: capture console from across the app (#15676) * create: console override file - Adds methods to override the given console functionality to capture the console statements written by the user * update: evaluate function to extract console op - Added logs extraction for both sync and async functions - Adding them to the return object of the evaluations * update: timestamp field to log addition method - Added optional argument to function definition for inputting the timestamp of the log - This is done to maintain timings of the execution of the log * update: interface for log objects * update: post function execution logic - Added logic to push the logs generated by the evaluation to the logs store * update: added handling for sending nested fns - While console logging functions or objects that had functions was causing an error - Added a check for removing functions and replacing them with name of the functions instead * chore: added types and comments * fix: updated evaluation tests * fix: added check for log in returned obj * update: added the source data in the trigger logs - Removed on js execute logs from showing up here since they are already handled. If they are not removed, they will show up on the first page load twice * add: ellipsis function for log title string - This is to keep big object contained in the first line only * update: made logs reset function public * update: resetting logs before new eval - Logs object has to be cleared before next eval can happen to make sure there are no roll overs from last evals * chore: added comments * add: extracting logs after eval of functions * add: storing logs to redux after eval * refactor: updated types * add: func to store logs w/ severity as arg * refactor: updating func call for user logs * chore: fixed elipsis logic * chore: removed unused type * chore: updated preview text logic * add: type for transfer object post eval * update: aded new userLogs obj to dataTreeEvaluator * update: passing logs from object to saga * update: parsing received userlogs * refactor: used predefined fns * refactor: moved resetlogs to common func * chore: updated comments * feat: update redux store and UI for system + user logs (#15936) * update: updated types for the redux store - Added category and data fields in the log object * update: types of log redux store * update: calls for the console log store function * update: icon fetch func for log item UI * update: syncing UI with the new designs (WIP) * chore: fixed lint error * update: filters for logs * update: icon for clearing log filters * update: filtering function - Added checks against category and severity * update: logitem UI - updated type of the UI object - added css based ellipsis - added toggle for console logs - added array of json views for objects/arrays - css tweaks * update: debugger cta - Removed copy option - Updated UI * update: logic for expanding user logs - Removed debugger CTA - Fixed position for the expand/collapse icon - Added joining char for when the log is expanded * update: assets for new UI - updated colors - Added new icon * hotfix: ternserver code * add: search across the text of log * update: icons for the app * update: click to expand/collapse of logs * fix: search keyword update on change within JSObjects * fix: alignment of log items in both states * update: jest tests for debugger errors and filter * fix: drop down options color issue - the icon used was not the standard one - We have a lot of duplicates of the same icon * fix: synced with ADS changes on release * fix: remove dependency from old icon * add: cypress selectors for automation testing * fix: replaced static messages with variables * fix: updated the dependency map for filter * fix: height of the filter drop down * fix: chaining logic for search filter * fix: syncing the padding values to ADS * fix: help icon visibility issue * fix: width of filter dropdown Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> * add: e2e tests for console statements using IIFE * test: added test for console logs in jsobjects * fix: functionality of expanding context menu on msg click * fix: added try catch and handling for numbers * hotfix: handling unwanted toasts * fix: alignment and clickable cursor * fix: alignment of expanded span in console logs * add: analytics event on new console log created * fix: added handling for boolean and undefined * fix: removed log reset from common func - Whenever we are creating global DTO, the logs were being reset. This caused logs to reset whenever a promise was encountered in the logs. * fix: combined JS log saving to widget process * add: new analytics event on filter changed * update: added handling for empty value * update: removed comma between multiple logs * update: synced test changes with release * update: removed unused wait timings * Logs spec script update * update: ts methods in log spec e2e test * logs spec update * update: removed body clicks from test script * Logs spec update * update: removed ask from google option * refactor: ui fixes * fix: text selection of logs * fix: updated dropdown width management * update: made the flushlogs function async * update: added handling for promises * update: added test with promises fail and pass * fix: added sync variant to work for sync objects * refactor: commented out unused tests * update: exceptions in the name of log entity * fix: pagination of logs to handle dynamic data stream * fix: removed unused async function * fix: moved logs handling to separate saga * fix: color for context menu text Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-09-04 11:58:05 +00:00
return result;
}
yield call(evalErrorHandler, requestData.errors);
if (requestData.trigger) {
// if we have found a trigger, we need to execute it and respond back
log.debug({ trigger: requestData.trigger });
yield spawn(
executeTriggerRequestSaga,
requestData,
eventType,
responseChannel,
triggerMeta,
);
}
}
}
interface ResponsePayload {
data: {
subRequestId: string;
reason?: string;
resolve?: unknown;
};
success: boolean;
}
/*
* It is necessary to respond back as the worker is waiting with a pending promise and wanting to know if it should
* resolve or reject it with the data the execution has provided
*/
function* executeTriggerRequestSaga(
requestData: { trigger: ActionDescription; subRequestId: string },
eventType: EventType,
responseChannel: Channel<unknown>,
triggerMeta: TriggerMeta,
) {
const responsePayload: ResponsePayload = {
data: {
resolve: undefined,
reason: undefined,
subRequestId: requestData.subRequestId,
},
success: false,
};
try {
responsePayload.data.resolve = yield call(
executeActionTriggers,
requestData.trigger,
eventType,
triggerMeta,
);
responsePayload.success = true;
} catch (error) {
// When error occurs in execution of triggers,
// a success: false is sent to reject the promise
// @ts-expect-error: reason is of type string
responsePayload.data.reason = { message: error.message };
responsePayload.success = false;
}
responseChannel.put({
method: EVAL_WORKER_ACTIONS.PROCESS_TRIGGER,
...responsePayload,
});
}
export function* clearEvalCache() {
yield call(worker.request, EVAL_WORKER_ACTIONS.CLEAR_CACHE);
return true;
}
export function* executeFunction(
collectionName: string,
action: JSAction,
collectionId: string,
) {
const functionCall = `${collectionName}.${action.name}()`;
const { isAsync } = action.actionConfiguration;
let response: {
errors: any[];
result: any;
feat: console log implementation in appsmith (#16286) * feat: capture console from across the app (#15676) * create: console override file - Adds methods to override the given console functionality to capture the console statements written by the user * update: evaluate function to extract console op - Added logs extraction for both sync and async functions - Adding them to the return object of the evaluations * update: timestamp field to log addition method - Added optional argument to function definition for inputting the timestamp of the log - This is done to maintain timings of the execution of the log * update: interface for log objects * update: post function execution logic - Added logic to push the logs generated by the evaluation to the logs store * update: added handling for sending nested fns - While console logging functions or objects that had functions was causing an error - Added a check for removing functions and replacing them with name of the functions instead * chore: added types and comments * fix: updated evaluation tests * fix: added check for log in returned obj * update: added the source data in the trigger logs - Removed on js execute logs from showing up here since they are already handled. If they are not removed, they will show up on the first page load twice * add: ellipsis function for log title string - This is to keep big object contained in the first line only * update: made logs reset function public * update: resetting logs before new eval - Logs object has to be cleared before next eval can happen to make sure there are no roll overs from last evals * chore: added comments * add: extracting logs after eval of functions * add: storing logs to redux after eval * refactor: updated types * add: func to store logs w/ severity as arg * refactor: updating func call for user logs * chore: fixed elipsis logic * chore: removed unused type * chore: updated preview text logic * add: type for transfer object post eval * update: aded new userLogs obj to dataTreeEvaluator * update: passing logs from object to saga * update: parsing received userlogs * refactor: used predefined fns * refactor: moved resetlogs to common func * chore: updated comments * feat: update redux store and UI for system + user logs (#15936) * update: updated types for the redux store - Added category and data fields in the log object * update: types of log redux store * update: calls for the console log store function * update: icon fetch func for log item UI * update: syncing UI with the new designs (WIP) * chore: fixed lint error * update: filters for logs * update: icon for clearing log filters * update: filtering function - Added checks against category and severity * update: logitem UI - updated type of the UI object - added css based ellipsis - added toggle for console logs - added array of json views for objects/arrays - css tweaks * update: debugger cta - Removed copy option - Updated UI * update: logic for expanding user logs - Removed debugger CTA - Fixed position for the expand/collapse icon - Added joining char for when the log is expanded * update: assets for new UI - updated colors - Added new icon * hotfix: ternserver code * add: search across the text of log * update: icons for the app * update: click to expand/collapse of logs * fix: search keyword update on change within JSObjects * fix: alignment of log items in both states * update: jest tests for debugger errors and filter * fix: drop down options color issue - the icon used was not the standard one - We have a lot of duplicates of the same icon * fix: synced with ADS changes on release * fix: remove dependency from old icon * add: cypress selectors for automation testing * fix: replaced static messages with variables * fix: updated the dependency map for filter * fix: height of the filter drop down * fix: chaining logic for search filter * fix: syncing the padding values to ADS * fix: help icon visibility issue * fix: width of filter dropdown Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> * add: e2e tests for console statements using IIFE * test: added test for console logs in jsobjects * fix: functionality of expanding context menu on msg click * fix: added try catch and handling for numbers * hotfix: handling unwanted toasts * fix: alignment and clickable cursor * fix: alignment of expanded span in console logs * add: analytics event on new console log created * fix: added handling for boolean and undefined * fix: removed log reset from common func - Whenever we are creating global DTO, the logs were being reset. This caused logs to reset whenever a promise was encountered in the logs. * fix: combined JS log saving to widget process * add: new analytics event on filter changed * update: added handling for empty value * update: removed comma between multiple logs * update: synced test changes with release * update: removed unused wait timings * Logs spec script update * update: ts methods in log spec e2e test * logs spec update * update: removed body clicks from test script * Logs spec update * update: removed ask from google option * refactor: ui fixes * fix: text selection of logs * fix: updated dropdown width management * update: made the flushlogs function async * update: added handling for promises * update: added test with promises fail and pass * fix: added sync variant to work for sync objects * refactor: commented out unused tests * update: exceptions in the name of log entity * fix: pagination of logs to handle dynamic data stream * fix: removed unused async function * fix: moved logs handling to separate saga * fix: color for context menu text Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-09-04 11:58:05 +00:00
logs?: LogObject[];
};
if (isAsync) {
try {
response = yield call(
evaluateAndExecuteDynamicTrigger,
functionCall,
EventType.ON_JS_FUNCTION_EXECUTE,
{},
);
} catch (e) {
if (e instanceof UncaughtPromiseError) {
logActionExecutionError(e.message);
}
response = { errors: [e], result: undefined };
}
} else {
response = yield call(worker.request, EVAL_WORKER_ACTIONS.EXECUTE_SYNC_JS, {
functionCall,
});
feat: console log implementation in appsmith (#16286) * feat: capture console from across the app (#15676) * create: console override file - Adds methods to override the given console functionality to capture the console statements written by the user * update: evaluate function to extract console op - Added logs extraction for both sync and async functions - Adding them to the return object of the evaluations * update: timestamp field to log addition method - Added optional argument to function definition for inputting the timestamp of the log - This is done to maintain timings of the execution of the log * update: interface for log objects * update: post function execution logic - Added logic to push the logs generated by the evaluation to the logs store * update: added handling for sending nested fns - While console logging functions or objects that had functions was causing an error - Added a check for removing functions and replacing them with name of the functions instead * chore: added types and comments * fix: updated evaluation tests * fix: added check for log in returned obj * update: added the source data in the trigger logs - Removed on js execute logs from showing up here since they are already handled. If they are not removed, they will show up on the first page load twice * add: ellipsis function for log title string - This is to keep big object contained in the first line only * update: made logs reset function public * update: resetting logs before new eval - Logs object has to be cleared before next eval can happen to make sure there are no roll overs from last evals * chore: added comments * add: extracting logs after eval of functions * add: storing logs to redux after eval * refactor: updated types * add: func to store logs w/ severity as arg * refactor: updating func call for user logs * chore: fixed elipsis logic * chore: removed unused type * chore: updated preview text logic * add: type for transfer object post eval * update: aded new userLogs obj to dataTreeEvaluator * update: passing logs from object to saga * update: parsing received userlogs * refactor: used predefined fns * refactor: moved resetlogs to common func * chore: updated comments * feat: update redux store and UI for system + user logs (#15936) * update: updated types for the redux store - Added category and data fields in the log object * update: types of log redux store * update: calls for the console log store function * update: icon fetch func for log item UI * update: syncing UI with the new designs (WIP) * chore: fixed lint error * update: filters for logs * update: icon for clearing log filters * update: filtering function - Added checks against category and severity * update: logitem UI - updated type of the UI object - added css based ellipsis - added toggle for console logs - added array of json views for objects/arrays - css tweaks * update: debugger cta - Removed copy option - Updated UI * update: logic for expanding user logs - Removed debugger CTA - Fixed position for the expand/collapse icon - Added joining char for when the log is expanded * update: assets for new UI - updated colors - Added new icon * hotfix: ternserver code * add: search across the text of log * update: icons for the app * update: click to expand/collapse of logs * fix: search keyword update on change within JSObjects * fix: alignment of log items in both states * update: jest tests for debugger errors and filter * fix: drop down options color issue - the icon used was not the standard one - We have a lot of duplicates of the same icon * fix: synced with ADS changes on release * fix: remove dependency from old icon * add: cypress selectors for automation testing * fix: replaced static messages with variables * fix: updated the dependency map for filter * fix: height of the filter drop down * fix: chaining logic for search filter * fix: syncing the padding values to ADS * fix: help icon visibility issue * fix: width of filter dropdown Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> * add: e2e tests for console statements using IIFE * test: added test for console logs in jsobjects * fix: functionality of expanding context menu on msg click * fix: added try catch and handling for numbers * hotfix: handling unwanted toasts * fix: alignment and clickable cursor * fix: alignment of expanded span in console logs * add: analytics event on new console log created * fix: added handling for boolean and undefined * fix: removed log reset from common func - Whenever we are creating global DTO, the logs were being reset. This caused logs to reset whenever a promise was encountered in the logs. * fix: combined JS log saving to widget process * add: new analytics event on filter changed * update: added handling for empty value * update: removed comma between multiple logs * update: synced test changes with release * update: removed unused wait timings * Logs spec script update * update: ts methods in log spec e2e test * logs spec update * update: removed body clicks from test script * Logs spec update * update: removed ask from google option * refactor: ui fixes * fix: text selection of logs * fix: updated dropdown width management * update: made the flushlogs function async * update: added handling for promises * update: added test with promises fail and pass * fix: added sync variant to work for sync objects * refactor: commented out unused tests * update: exceptions in the name of log entity * fix: pagination of logs to handle dynamic data stream * fix: removed unused async function * fix: moved logs handling to separate saga * fix: color for context menu text Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-09-04 11:58:05 +00:00
const { logs } = response;
// Check for any logs in the response and store them in the redux store
if (!!logs && logs.length > 0) {
yield call(
storeLogs,
logs,
collectionName + "." + action.name,
ENTITY_TYPE.JSACTION,
collectionId,
);
}
}
feat: JS Editor (#6003) * Changes to add js plugin * routes+reducer+create template * added debugger to js editor page * entity explorer changes * create js function * added copy, move and delete action * added js plugin * added existing js functions to data tree * removed actionconfig for js collection * new js function added to data tree and entity as well * parsing flow added * changes to data tree * parse and update js functions * small changes for def creator for js action * create delete modified * small changes for update * update flow change * entity properties added * removed linting errors * small changes in entity explorer * changes for update * move, copy implementation * conflict resolved * changes for dependecy map creation * Only make the variables the binding paths * Basic eval sync working * Minor fixes * removed unwanted code * entity props and autocomplete * saving in progress show * redirection fix after delete js action * removed unnecessary line * Fixing merge conflict * added sample body * removed dummy data and added plugin Type * few PR comments fixed * automplete fix * few more PR comments fix * PR commnets fix * move and copy api change * js colleciton name refactor & 'move to page' changes & search * view changes * autocomplete added for js collections * removing till async is implemented * small changes * separate js pane response view * Executing functions * js collection to js objects * entity explorer issue and resolve action on page switch * removed unused line * small color fix * js file icon added * added js action to property pane * Property pane changes for actions * property pane changes for js functions * showing syntax error for now * actions sorted in response tab * added js objects to slash and recent entitties * enabling this to be used inside of function * eval fix * feature flag changes for entity explorer and property pane * debugger changes * copy bug fix * small changes for eval * debugger bug fix * chnaged any to specific types * error in console fix * icons update * fixed test case * test case fix * non empty check for functions * evaluate test case fix * added new icons * text change * updated time for debounce for trial * after release mereg * changed icon * after merge * PR comments simple * fixed PR comments - redux form, settings remove * js object interface changes * name refactor * export default change * delete resolve actions chnage * after merge * adding execute fn as 3rd option and removed create new js function * issue 7054 fixed - app crash * execute function on response tab changes * refactor function name part 1 * refactor of js function name * try catch added refactor * test fix * not used line removed * test cases locator fixed Co-authored-by: Nidhi <nidhi.nair93@gmail.com> Co-authored-by: hetunandu <hetu@appsmith.com>
2021-09-08 17:32:22 +00:00
const { errors, result } = response;
feat: console log implementation in appsmith (#16286) * feat: capture console from across the app (#15676) * create: console override file - Adds methods to override the given console functionality to capture the console statements written by the user * update: evaluate function to extract console op - Added logs extraction for both sync and async functions - Adding them to the return object of the evaluations * update: timestamp field to log addition method - Added optional argument to function definition for inputting the timestamp of the log - This is done to maintain timings of the execution of the log * update: interface for log objects * update: post function execution logic - Added logic to push the logs generated by the evaluation to the logs store * update: added handling for sending nested fns - While console logging functions or objects that had functions was causing an error - Added a check for removing functions and replacing them with name of the functions instead * chore: added types and comments * fix: updated evaluation tests * fix: added check for log in returned obj * update: added the source data in the trigger logs - Removed on js execute logs from showing up here since they are already handled. If they are not removed, they will show up on the first page load twice * add: ellipsis function for log title string - This is to keep big object contained in the first line only * update: made logs reset function public * update: resetting logs before new eval - Logs object has to be cleared before next eval can happen to make sure there are no roll overs from last evals * chore: added comments * add: extracting logs after eval of functions * add: storing logs to redux after eval * refactor: updated types * add: func to store logs w/ severity as arg * refactor: updating func call for user logs * chore: fixed elipsis logic * chore: removed unused type * chore: updated preview text logic * add: type for transfer object post eval * update: aded new userLogs obj to dataTreeEvaluator * update: passing logs from object to saga * update: parsing received userlogs * refactor: used predefined fns * refactor: moved resetlogs to common func * chore: updated comments * feat: update redux store and UI for system + user logs (#15936) * update: updated types for the redux store - Added category and data fields in the log object * update: types of log redux store * update: calls for the console log store function * update: icon fetch func for log item UI * update: syncing UI with the new designs (WIP) * chore: fixed lint error * update: filters for logs * update: icon for clearing log filters * update: filtering function - Added checks against category and severity * update: logitem UI - updated type of the UI object - added css based ellipsis - added toggle for console logs - added array of json views for objects/arrays - css tweaks * update: debugger cta - Removed copy option - Updated UI * update: logic for expanding user logs - Removed debugger CTA - Fixed position for the expand/collapse icon - Added joining char for when the log is expanded * update: assets for new UI - updated colors - Added new icon * hotfix: ternserver code * add: search across the text of log * update: icons for the app * update: click to expand/collapse of logs * fix: search keyword update on change within JSObjects * fix: alignment of log items in both states * update: jest tests for debugger errors and filter * fix: drop down options color issue - the icon used was not the standard one - We have a lot of duplicates of the same icon * fix: synced with ADS changes on release * fix: remove dependency from old icon * add: cypress selectors for automation testing * fix: replaced static messages with variables * fix: updated the dependency map for filter * fix: height of the filter drop down * fix: chaining logic for search filter * fix: syncing the padding values to ADS * fix: help icon visibility issue * fix: width of filter dropdown Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> * add: e2e tests for console statements using IIFE * test: added test for console logs in jsobjects * fix: functionality of expanding context menu on msg click * fix: added try catch and handling for numbers * hotfix: handling unwanted toasts * fix: alignment and clickable cursor * fix: alignment of expanded span in console logs * add: analytics event on new console log created * fix: added handling for boolean and undefined * fix: removed log reset from common func - Whenever we are creating global DTO, the logs were being reset. This caused logs to reset whenever a promise was encountered in the logs. * fix: combined JS log saving to widget process * add: new analytics event on filter changed * update: added handling for empty value * update: removed comma between multiple logs * update: synced test changes with release * update: removed unused wait timings * Logs spec script update * update: ts methods in log spec e2e test * logs spec update * update: removed body clicks from test script * Logs spec update * update: removed ask from google option * refactor: ui fixes * fix: text selection of logs * fix: updated dropdown width management * update: made the flushlogs function async * update: added handling for promises * update: added test with promises fail and pass * fix: added sync variant to work for sync objects * refactor: commented out unused tests * update: exceptions in the name of log entity * fix: pagination of logs to handle dynamic data stream * fix: removed unused async function * fix: moved logs handling to separate saga * fix: color for context menu text Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
2022-09-04 11:58:05 +00:00
const isDirty = !!errors.length;
yield call(
handleJSFunctionExecutionErrorLog,
collectionId,
collectionName,
action,
errors,
);
return { result, isDirty };
feat: JS Editor (#6003) * Changes to add js plugin * routes+reducer+create template * added debugger to js editor page * entity explorer changes * create js function * added copy, move and delete action * added js plugin * added existing js functions to data tree * removed actionconfig for js collection * new js function added to data tree and entity as well * parsing flow added * changes to data tree * parse and update js functions * small changes for def creator for js action * create delete modified * small changes for update * update flow change * entity properties added * removed linting errors * small changes in entity explorer * changes for update * move, copy implementation * conflict resolved * changes for dependecy map creation * Only make the variables the binding paths * Basic eval sync working * Minor fixes * removed unwanted code * entity props and autocomplete * saving in progress show * redirection fix after delete js action * removed unnecessary line * Fixing merge conflict * added sample body * removed dummy data and added plugin Type * few PR comments fixed * automplete fix * few more PR comments fix * PR commnets fix * move and copy api change * js colleciton name refactor & 'move to page' changes & search * view changes * autocomplete added for js collections * removing till async is implemented * small changes * separate js pane response view * Executing functions * js collection to js objects * entity explorer issue and resolve action on page switch * removed unused line * small color fix * js file icon added * added js action to property pane * Property pane changes for actions * property pane changes for js functions * showing syntax error for now * actions sorted in response tab * added js objects to slash and recent entitties * enabling this to be used inside of function * eval fix * feature flag changes for entity explorer and property pane * debugger changes * copy bug fix * small changes for eval * debugger bug fix * chnaged any to specific types * error in console fix * icons update * fixed test case * test case fix * non empty check for functions * evaluate test case fix * added new icons * text change * updated time for debounce for trial * after release mereg * changed icon * after merge * PR comments simple * fixed PR comments - redux form, settings remove * js object interface changes * name refactor * export default change * delete resolve actions chnage * after merge * adding execute fn as 3rd option and removed create new js function * issue 7054 fixed - app crash * execute function on response tab changes * refactor function name part 1 * refactor of js function name * try catch added refactor * test fix * not used line removed * test cases locator fixed Co-authored-by: Nidhi <nidhi.nair93@gmail.com> Co-authored-by: hetunandu <hetu@appsmith.com>
2021-09-08 17:32:22 +00:00
}
export function* validateProperty(
property: string,
value: any,
props: WidgetProps,
) {
const unevalTree: DataTree = yield select(getUnevaluatedDataTree);
// @ts-expect-error: We have a typeMismatch for validationPaths
const validation = unevalTree[props.widgetName].validationPaths[property];
const response: unknown = yield call(
worker.request,
EVAL_WORKER_ACTIONS.VALIDATE_PROPERTY,
{
property,
value,
props,
validation,
},
);
return response;
}
2020-12-30 13:26:44 +00:00
function evalQueueBuffer() {
let canTake = false;
let collectedPostEvalActions: any = [];
2020-12-30 13:26:44 +00:00
const take = () => {
if (canTake) {
const resp = collectedPostEvalActions;
collectedPostEvalActions = [];
canTake = false;
return { postEvalActions: resp, type: "BUFFERED_ACTION" };
2020-12-30 13:26:44 +00:00
}
};
const flush = () => {
if (canTake) {
2020-12-30 13:26:44 +00:00
return [take() as Action];
}
return [];
};
const put = (action: EvaluationReduxAction<unknown | unknown[]>) => {
2021-07-20 10:02:56 +00:00
if (!shouldProcessBatchedAction(action)) {
return;
}
canTake = true;
const postEvalActions = getPostEvalActions(action);
collectedPostEvalActions.push(...postEvalActions);
2020-12-30 13:26:44 +00:00
};
return {
take,
put,
isEmpty: () => {
return !canTake;
2020-12-30 13:26:44 +00:00
},
flush,
};
}
/**
* Extract the post eval actions from an evaluation action
* Batched actions have post eval actions inside them, extract that
*
* **/
function getPostEvalActions(
action: EvaluationReduxAction<unknown | unknown[]>,
): AnyReduxAction[] {
const postEvalActions: AnyReduxAction[] = [];
if (action.postEvalActions) {
postEvalActions.push(...action.postEvalActions);
}
if (
action.type === ReduxActionTypes.BATCH_UPDATES_SUCCESS &&
Array.isArray(action.payload)
) {
action.payload.forEach((batchedAction) => {
if (batchedAction.postEvalActions) {
postEvalActions.push(
...(batchedAction.postEvalActions as AnyReduxAction[]),
);
}
});
}
return postEvalActions;
}
2020-12-30 13:26:44 +00:00
function* evaluationChangeListenerSaga() {
// Explicitly shutdown old worker if present
yield call(worker.shutdown);
yield call(worker.start);
yield call(worker.request, EVAL_WORKER_ACTIONS.SETUP);
2020-12-30 13:26:44 +00:00
widgetTypeConfigMap = WidgetFactory.getWidgetTypeConfigMap();
const initAction: {
postEvalActions: Array<ReduxAction<unknown>>;
} = yield take(FIRST_EVAL_REDUX_ACTIONS);
yield fork(evaluateTreeSaga, initAction.postEvalActions);
const evtActionChannel: ActionPattern<Action<any>> = yield actionChannel(
2020-12-30 13:26:44 +00:00
EVALUATE_REDUX_ACTIONS,
evalQueueBuffer(),
);
while (true) {
const action: EvaluationReduxAction<unknown | unknown[]> = yield take(
evtActionChannel,
);
feat: App Theming (#9714) * fix style bugs * fix select styles * test: fix font size issue for cypress tests * incorporate ashit feedback * test: addresed review comments for cypress tests * add analytics events * height issue in view mode * incorporate code review feedbacks * incorporate code review feedbacks * refactor: addressed review comments; removed border radius and box shadow for text widget; Updated migrations * feat: Makes shadow and radius controls keyboard accessible (#11547) * makes shadow and radius controls keyboard accessible * removes unused imports * moves options out of render method * fix: changed the misnomer background property name to the relevant property name * fix: border radius issue for the map widget * address qa bugs * address qa bugs * fix ux of theming pane when widget is selected * fix: * added backgroundColor to the video widget * restricted pop-over border radius to 0.375rem * added box shadow for the input group for select widget * fix: added delete icon in the delete theme modal * address qa bugs * change checkbox column size in config * add js convertible to button color * remove unused imports * test: fixed jest tests * fix primary color typo * fix: migrations for the theming * fix: * Removed background color from MultiTreeSelect and TreeSelect component. * grouped button's menu button pop over border radius restricting to 0.375rem. * test: updated Dsl migration UT * address qa bugs * address qa bugs * fix: address qa comments * address qa bugs * fix: * migration issue; * unit test cases; * fix rating widget scroll issue * fix youtube video border radius bug * fix select widget * fix select widgets styles * address qa bugs * merge conflicts * makes the reset button keyboard accessible (#12134) * -resolved merge conflicts * address qa bugs * fix: labelTextSize migration fixes * refactor: * made changes to the fontSizeUtils function * fixed the issue related to unit tests * fix button group widget * remove unused imports * fix: fixed the text size migration for the table widget * refactor: addressed review comments for the table widget theming migration * fix button group widget * add init calls for view mode * json form init theme changes * fix: added migration for boxShadow, borderRadius and textSizes for table widget * fix broken fields * test: fixed unit tests * wip * inconsistancy fixes and schemaItem update in updateHook/fieldConfiguration * feat: init json form migration theming * json form primaryColor -> accentColor * update table widget * update table widget * object field label styling * fix: migration related to the JSON form * fix: fixed labelTextSize migration for JSON form nested widgets * property control nested stylesheet lookup * JSONForm label styles form array items * show label for checkbox field array item * fix button group widget * wip * refactor: addressed table widget review comments * refactor: addressed ashit review comments; * added childStylesheet for widgets * feat: Keyboard navigable Color Picker control (#11797) * Makes ColorPicker keyboard accessible * seperate out keyboard and mouse interactions * fix issue with not focusing back to input * Adds test for Color picker * chore: added comment for the boxShadow property * fix: * added unit test cases for the widget and property utils * resolved warning messages * wip * theme config update * fix merge conflicts * refactor: moved theming migration inside the migrations folder * fix qa bugs * fix jest test * fix: unit test cases * fix table column creation logic * refactor: addressed review comments for migrations * fix: Overriding margin and padding for custom render in the dropdown component (#12875) * * fix for custom render padding and margin in ADS dropdown * * fix for removing padding from normal render options * refactor: moved the boxShadow condition to the variable * fix qa bugs * fix: migration QA callouts for audio recorder widget * refactor: added updated comments for boxShadow migration for table widget * fix theme binfings for JSONForm fields under Object * fix table widget theming bug * fix: addressed code review comments * fix: unit test cases * fix: qa migration callouts * fix table widget theming bug * fix JSONForm currency input dropdown not submit form * Added new tests - AppThemingSpec * fix qa bugs * fix unit test * fix JSONForm cellBorderWidth to have default value post migration * fix unit test * fix qa bugs * remove unused imports * fix qa bugs * fix JSONForm input height issue * fix qa bugs * Updating Theming spec * * dropdown color fixes (#13249) * fix caching issue ; * Fixed Theming tests * fix tests * fix tab widget tests * fix: json form children level migration issue * fix table widget tests * Updated test * updated tests * updated test * updated tests * updated tests * updated pageload * fix cypress tests * remove cypress created files * fix color picker issues * Failure fixes * Fixed some more tests * fix: cypress test failures * fix tests * remove consoles * fix table tests * fix qa bugs * updating snapshots for AppPageLayout_spec as per new UI * fix rating widget bug * fix qa bugs * fix: * cypress failing tests * Migration QA callouts * Removed unused imports * update constract check algo * fix color contrast issue * fix: cypress failure test cases * update font sizes labels * fix regression bugs * fix: * JSON form labelTextSize issue fix * Updated comment for the fontSizeUtility function * migrations issues related to table widget borderRadius and boxShadow * fix: default labelTextSize issue for the Input and Select families * fix regression bugs * fix regression bugs * PassingParams spec - added wait time * fix: font family default value issue on JS toggle * fix js toggle issue in text widget * fix tests * fix tests * fix tests * fix cypress tests * fix regression bugs * fix regression bugs * fix: * refactored table widget migration function as per review comments, * added default value to the widget * fix: failing unit test cases * fix theming spec * fix cypress tests * test: fixed failed cypress test * incorporate ashit feedback * fix cypress tests * fix: addressed review comments * comment out table cypress test * fix merge conflicts * comment out color picker tests Co-authored-by: Pawan Kumar <pawankumar@Pawans-MacBook-Pro.local> Co-authored-by: keyurparalkar <keyur@appsmith.com> Co-authored-by: Aswath K <aswath@appsmith.com> Co-authored-by: Nayan <nayan@appsmith.com> Co-authored-by: Ashit Rath <ashit@appsmith.com> Co-authored-by: balajisoundar <balaji@appsmith.com> Co-authored-by: albinAppsmith <87797149+albinAppsmith@users.noreply.github.com> Co-authored-by: Aishwarya UR <aishwarya@appsmith.com> Co-authored-by: apple <nandan@thinkify.io> Co-authored-by: Parthvi Goswami <parthvigoswami@Parthvis-MacBook-Pro.local>
2022-05-04 09:45:57 +00:00
if (shouldProcessBatchedAction(action)) {
const postEvalActions = getPostEvalActions(action);
feat: Undo/Redo (#6654) * Scaffolding for undo-redo * undo redo working Poc commit * memory performance improvements by diffing * dont run update on undo/redo" * merging widget postion update and canvas bottom row update into one dsl update. * fix tabs widget * Visible updates per undo redo action (#6838) Co-authored-by: Rahul R <rahulramesha@Rahuls-MacBook-Pro.local> * resize atomic operation * fix switch control state issue * disallow undo/redo for snipping and comment mode * disallow undo/redo for snipping and comment mode * fix color picker issue in undo/redo * add test for replayDSL * option control fix, adding logs * minor position change undo redo updates * add test cases for replayHelpers * property Upade visual change * remove unused code * global hot key jest test for undo redo * Fixing batch updates on property change.. * add tests for toggle control in property pane * unwanted utils. * add tests for text control * add tests for deletion * add tests for dropping a new widget * adding jest test for replayUtils * add move widget tests * add tests for color picker control * add analytics for undo/redo * add analytics for undo/redo * tab addition atomic * cypress tests for propertyPane, toasts and radiowidget optionControl * replayDSL end of redo stack fix * property update changes * menu option control debounce input * color picker empty undo fix * fix cypress tests * widget add/remove atomic * revert alternative approach to handle atomic operations * update replayDSL test * add some comments * addressing review comments * flash color for property pane controls * Fixing adding of tabs widget as well. * code review comments. * merging widget postion update and canvas bottom row update into one dsl update. * fix ordering of tabs property control * meta property update canvas min height. * fixing failed specs. * Fixing entity explorer update on deleting tab from entity explorer. * address review comments and minor property update changes * fixing failing tests * merge conflicts * changes to cater widget api. * fix suggested widget table issue * draggable list for undo redo * fix widget name focus * excluding canvas updates. * fixing codeEditor update on propertySection collapse * fixed failing test case Co-authored-by: Abhinav Jha <abhinav@appsmith.com> Co-authored-by: Rahul R <rahulramesha@Rahuls-MacBook-Pro.local> Co-authored-by: root <root@DESKTOP-9GENCK0.localdomain> Co-authored-by: Ashok Kumar M <35134347+marks0351@users.noreply.github.com> Co-authored-by: Pawan Kumar <pawankumar@Pawans-MacBook-Pro.local>
2021-09-21 07:55:56 +00:00
yield call(
evaluateTreeSaga,
postEvalActions,
feat: Undo/Redo (#6654) * Scaffolding for undo-redo * undo redo working Poc commit * memory performance improvements by diffing * dont run update on undo/redo" * merging widget postion update and canvas bottom row update into one dsl update. * fix tabs widget * Visible updates per undo redo action (#6838) Co-authored-by: Rahul R <rahulramesha@Rahuls-MacBook-Pro.local> * resize atomic operation * fix switch control state issue * disallow undo/redo for snipping and comment mode * disallow undo/redo for snipping and comment mode * fix color picker issue in undo/redo * add test for replayDSL * option control fix, adding logs * minor position change undo redo updates * add test cases for replayHelpers * property Upade visual change * remove unused code * global hot key jest test for undo redo * Fixing batch updates on property change.. * add tests for toggle control in property pane * unwanted utils. * add tests for text control * add tests for deletion * add tests for dropping a new widget * adding jest test for replayUtils * add move widget tests * add tests for color picker control * add analytics for undo/redo * add analytics for undo/redo * tab addition atomic * cypress tests for propertyPane, toasts and radiowidget optionControl * replayDSL end of redo stack fix * property update changes * menu option control debounce input * color picker empty undo fix * fix cypress tests * widget add/remove atomic * revert alternative approach to handle atomic operations * update replayDSL test * add some comments * addressing review comments * flash color for property pane controls * Fixing adding of tabs widget as well. * code review comments. * merging widget postion update and canvas bottom row update into one dsl update. * fix ordering of tabs property control * meta property update canvas min height. * fixing failed specs. * Fixing entity explorer update on deleting tab from entity explorer. * address review comments and minor property update changes * fixing failing tests * merge conflicts * changes to cater widget api. * fix suggested widget table issue * draggable list for undo redo * fix widget name focus * excluding canvas updates. * fixing codeEditor update on propertySection collapse * fixed failing test case Co-authored-by: Abhinav Jha <abhinav@appsmith.com> Co-authored-by: Rahul R <rahulramesha@Rahuls-MacBook-Pro.local> Co-authored-by: root <root@DESKTOP-9GENCK0.localdomain> Co-authored-by: Ashok Kumar M <35134347+marks0351@users.noreply.github.com> Co-authored-by: Pawan Kumar <pawankumar@Pawans-MacBook-Pro.local>
2021-09-21 07:55:56 +00:00
get(action, "payload.shouldReplay"),
);
}
}
}
export function* evaluateSnippetSaga(action: any) {
try {
let { expression } = action.payload;
const { dataType, isTrigger } = action.payload;
if (isTrigger) {
expression = `function() { ${expression} }`;
}
const workerResponse: {
errors: any;
result: any;
triggers: any;
} = yield call(worker.request, EVAL_WORKER_ACTIONS.EVAL_EXPRESSION, {
expression,
dataType,
isTrigger,
});
const { errors, result, triggers } = workerResponse;
if (triggers && triggers.length > 0) {
yield all(
triggers.map((trigger: any) =>
call(
executeActionTriggers,
trigger,
EventType.ON_SNIPPET_EXECUTE,
{},
),
),
);
//Result is when trigger is present. Following code will hide the evaluated snippet section
yield put(setEvaluatedSnippet(result));
} else {
/*
JSON.stringify(undefined) is undefined.
We need to set it manually to "undefined" for codeEditor to display it.
*/
yield put(
setEvaluatedSnippet(
errors?.length
? JSON.stringify(errors, null, 2)
: isUndefined(result)
? "undefined"
: JSON.stringify(result),
),
);
}
Toaster.show({
text: createMessage(
errors?.length ? SNIPPET_EXECUTION_FAILED : SNIPPET_EXECUTION_SUCCESS,
),
variant: errors?.length ? Variant.danger : Variant.success,
});
yield put(
setGlobalSearchFilterContext({
executionInProgress: false,
}),
);
} catch (e) {
yield put(
setGlobalSearchFilterContext({
executionInProgress: false,
}),
);
Toaster.show({
text: createMessage(SNIPPET_EXECUTION_FAILED),
variant: Variant.danger,
});
log.error(e);
Sentry.captureException(e);
}
}
export function* evaluateArgumentSaga(action: any) {
const { name, type, value } = action.payload;
try {
const workerResponse: {
errors: Array<unknown>;
result: unknown;
} = yield call(worker.request, EVAL_WORKER_ACTIONS.EVAL_EXPRESSION, {
expression: value,
});
const lintErrors = (workerResponse.errors || []).filter(
(error: any) => error.errorType !== PropertyEvaluationErrorType.LINT,
);
if (workerResponse.result) {
feat: JSON Form widget (#8472) * initial layout * updated parser to support nested array * array field rendering * changes * ts fix * minor revert FormWidget * modified schema structure * select and switch fields * added checkbox field * added RadioGroupField * partial DateField and defaults, typing refactoring * added label and field type change * minor ts changes * changes * modified widget/utils for nested panelConfig, modified schema to object approach * array/object label support * hide field configuration when children not present * added tooltip * field visibility option * disabled state * upgraded tslib, form initial values * custom field configuration - add/hide/edit * field configuration - label change * return input when field configuration reaches max depth * minor changes * form - scroll, fixedfooter, enitity defn and other minior changes * form title * unregister on unmount * fixes * zero state * fix field padding * patched updating form values, removed linting warnings * configured action buttons * minor fix * minor change * property pane - sort fields in field configuration * refactor include all properties * checkbox properties * date properties * refactor typings and radio group properties * switch, multselect, select, array, object properties * minor changes * default value * ts fixes * checkbox field properties implementation * date field prop implementation * switch field * select field and fix deep nested meta properties * multiselect implementation * minor change * input field implementation * fix position jump on field type change * initial accordian * field state property and auto-complete of JSONFormComputeControl * merge fixes * renamed FormBuilder to JSONForm * source data validation minor change * custom field default value fix * Editable keys for custom field * minor fixes * replaced useFieldArray with custom logic, added widget icon * array and object accordian with border/background styling * minor change * disabled states for array and objects * default value minor fix * form level styles * modified logic for isDisabled for array and object, added disabledWhenInvalid, exposed isValid to fieldState for text input, removed useDisableChildren * added isValid for all field types * fixed reset to default values * debounce form values update * minor change * minor change * fix crash - source data change multi-select to array, fix crash - change of options * fix positioning * detect date type in source data * fix crash - when object is passed to regex input field * fixed default sourceData path for fields * accodion keep children mounted on collapse * jest test for schemaParser * widget/helper and useRegisterFieldInvalid test * tests for property config helper and generatePanelPropertyConfig * fix input field validation not appearing * fix date field type detection * rename data -> formData * handle null/undefined field value change in sourceData * added null/undefined as valid values for defaultValue text field * auto detect email field * set formData default value on initial load * switch field inline positioning * field margin fix for row direction * select full width * fiex date field default value - out of range * fix any field type to array * array default value logic change * base cypress test changes * initial json form render cy test * key sanitization * fix fieldState update logic * required design, object/array background color, accordion changes, fix - add new custom field * minor change * cypress tests * fix date formatted value, field state cypress test * cypress - field properties test and fixes * rename test file * fix accessort change to blank value, cypress tests * fix array field default value for modified accessor * minor fix * added animate loading * fix empty state, add new custom field * test data fix * fix warnings * fix timePrecision visibility * button styling * ported input v2 * fix jest tests * fix cypress tests * perf changes * perf improvement * added comments * multiselect changes * input field perf refactor * array field, object field refactor performance * checkbox field refactor * refectored date, radio, select and switch * fixes * test fixes * fixes * minor fix * rename field renderer * remove tracked fieldRenderer field * cypress test fixes * cypress changes * array default value fixes * arrayfield passedDefaultValue * auto enabled JS mode for few properties, reverted swith and date property controls * cypress changes * added widget sniping mode and fixed object passedDefaultValue * multiselect v2 * select v2 * fix jest tests * test fixes * field limit * rename field type dropdown texts * field type changes fixes * jest fixes * loading state submit button * default source data for new widget * modify limit message * multiseelct default value changes and cypress fix * select default value * keep default value intact on field type change * TextTable cypress text fix * review changes * fixed footer changes * collapse styles section by default * fixed footer changes * form modes * custom field key rentention * fixed footer fix in view mode * non ascii characters * fix meta merge in dataTreeWidget * minor fixes * rename useRegisterFieldInvalid.ts -> useRegisterFieldValidity.ts * modified dependency injection into evaluated values * refactored fixedfooter logic * minor change * accessor update * minor change * fixes * QA fixes date field, scroll content * fix phone number field, removed visiblity option from array item * fix sourceData autocomplete * reset logic * fix multiselect reset * form values hydration on widget drag * code review changes * reverted order of merge dataTreeWidget * fixes * added button titles, fixed hydration issue * default value fixes * upgraded react hook form, modified array-level/field-level default value logic * fixed select validation * added icon entity explorer, modified icon align control * modify accessor validation for mongo db _id * update email field regex * review changes * explicitly handle empty source data validation
2022-03-24 07:13:25 +00:00
const validation = validate({ type }, workerResponse.result, {}, "");
if (!validation.isValid)
validation.messages?.map((message) => {
lintErrors.unshift({
...validation,
...{
errorType: PropertyEvaluationErrorType.VALIDATION,
errorMessage: message,
},
});
});
}
yield put(
setEvaluatedArgument({
[name]: {
type,
value: workerResponse.result,
name,
errors: lintErrors,
isInvalid: lintErrors.length > 0,
},
}),
);
} catch (e) {
log.error(e);
Sentry.captureException(e);
}
}
2021-12-07 09:45:18 +00:00
export function* updateReplayEntitySaga(
actionPayload: ReduxAction<{
entityId: string;
entity: Replayable;
entityType: ENTITY_TYPE;
}>,
) {
//Delay updates to replay object to not persist every keystroke
yield delay(REPLAY_DELAY);
const { entity, entityId, entityType } = actionPayload.payload;
const workerResponse: unknown = yield call(
worker.request,
EVAL_WORKER_ACTIONS.UPDATE_REPLAY_OBJECT,
{
entityId,
entity,
entityType,
},
);
return workerResponse;
2021-12-07 09:45:18 +00:00
}
export function* workerComputeUndoRedo(operation: string, entityId: string) {
const workerResponse: unknown = yield call(worker.request, operation, {
2021-12-07 09:45:18 +00:00
entityId,
});
return workerResponse;
2021-12-07 09:45:18 +00:00
}
// Type to represent the state of the evaluation reducer
export interface FormEvaluationConfig
extends ReduxAction<FormEvalActionPayload> {
currentEvalState: FormEvaluationState;
}
// Function to trigger the form eval job in the worker
export function* evalFormConfig(formEvaluationConfigObj: FormEvaluationConfig) {
const workerResponse: unknown = yield call(
worker.request,
EVAL_WORKER_ACTIONS.INIT_FORM_EVAL,
formEvaluationConfigObj,
);
return workerResponse;
}
export function* setAppVersionOnWorkerSaga(action: {
type: ReduxActionType;
payload: EvaluationVersion;
}) {
const version: EvaluationVersion = action.payload;
yield call(worker.request, EVAL_WORKER_ACTIONS.SET_EVALUATION_VERSION, {
version,
});
}
export default function* evaluationSagaListeners() {
2020-12-30 13:26:44 +00:00
yield take(ReduxActionTypes.START_EVALUATION);
while (true) {
try {
yield call(evaluationChangeListenerSaga);
} catch (e) {
log.error(e);
Sentry.captureException(e);
}
}
}