diff --git a/frontend/src/AppBuilder/_stores/slices/eventsSlice.js b/frontend/src/AppBuilder/_stores/slices/eventsSlice.js index 6b2c7e8ae7..bb1374af2e 100644 --- a/frontend/src/AppBuilder/_stores/slices/eventsSlice.js +++ b/frontend/src/AppBuilder/_stores/slices/eventsSlice.js @@ -444,7 +444,7 @@ export const createEventsSlice = (set, get) => ({ component: `[Page ${pageName}] [Component ${componentName}] [Event ${event?.eventId}] [Action ${event.actionId}]`, page: `[Page ${pageName}] [Event ${event.eventId}] [Action ${event.actionId}]`, query: `[Query ${getQueryName()}] [Event ${event.eventId}] [Action ${event.actionId}]`, - customLog: `${event.description}`, + customLog: `${event.key}`, }; return headerMap[source] || ''; @@ -472,6 +472,7 @@ export const createEventsSlice = (set, get) => ({ description: JSON.stringify(error.message, null, 2), ...(event.component === 'component' && componentId && { componentId: componentId }), }, + description: event?.description, errorTarget: constructErrorTarget(), options: options, strace: 'app_level', @@ -1110,7 +1111,8 @@ export const createEventsSlice = (set, get) => ({ const lineNumber = lineNumberMatch ? lineNumberMatch[1] : 'unknown'; const event = { actionId: 'log-info', - description: `${query.name}, ${log}, Line ${lineNumber - 2}`, + key: `${query.name}, Line ${lineNumber - 2}`, + description: log, eventType: 'customLog', query, }; @@ -1125,7 +1127,8 @@ export const createEventsSlice = (set, get) => ({ const lineNumber = lineNumberMatch ? lineNumberMatch[1] : 'unknown'; const event = { actionId: 'log-error', - description: `${query.name}, ${log}, Line ${lineNumber - 2}`, + key: `${query.name}, Line ${lineNumber - 2}`, + description: log, eventType: 'customLog', query, }; @@ -1140,7 +1143,8 @@ export const createEventsSlice = (set, get) => ({ const lineNumber = lineNumberMatch ? lineNumberMatch[1] : 'unknown'; const event = { actionId: 'log', - description: `${query.name}, ${log}, Line ${lineNumber - 2}`, + key: `${query.name}, Line ${lineNumber - 2}`, + description: log, eventType: 'customLog', query, }; diff --git a/frontend/src/AppBuilder/_stores/slices/queryPanelSlice.js b/frontend/src/AppBuilder/_stores/slices/queryPanelSlice.js index b9509a45f5..ab29ed5b39 100644 --- a/frontend/src/AppBuilder/_stores/slices/queryPanelSlice.js +++ b/frontend/src/AppBuilder/_stores/slices/queryPanelSlice.js @@ -810,7 +810,7 @@ export const createQueryPanelSlice = (set, get) => ({ logLevel: result?.status === 'failed' ? 'error' : 'success', type: 'transformation', kind: query.kind, - key: query.name, + key: `${query.name}, transformation, line ${result?.data?.lineNumber}`, message: result?.message, error: result?.data, isTransformation: true, @@ -981,12 +981,12 @@ export const createQueryPanelSlice = (set, get) => ({ //Proxy Func required to get current execution line number from stack to log in debugger - const proxiedComponents = createProxy(resolvedState?.components, 'components'); - const proxiedGlobals = createProxy(resolvedState?.globals, 'globals'); - const proxiedConstants = createProxy(resolvedState?.constants, 'constants'); - const proxiedVariables = createProxy(resolvedState?.variables, 'variables'); + const proxiedComponents = createProxy(deepClone(resolvedState?.components), 'components'); + const proxiedGlobals = createProxy(deepClone(resolvedState?.globals), 'globals'); + const proxiedConstants = createProxy(deepClone(resolvedState?.constants), 'constants'); + const proxiedVariables = createProxy(deepClone(resolvedState?.variables), 'variables'); const proxiedPage = createProxy(deepClone(resolvedState?.page, 'page')); - const proxiedQueriesInResolvedState = createProxy(queriesInResolvedState, 'queries'); + const proxiedQueriesInResolvedState = createProxy(deepClone(queriesInResolvedState), 'queries'); const proxiedFormattedParams = createProxy( !_.isEmpty(proxiedFormattedParams) ? [proxiedFormattedParams] : [], 'params' diff --git a/frontend/src/Editor/LeftSidebar/SidebarDebugger/Logs.jsx b/frontend/src/Editor/LeftSidebar/SidebarDebugger/Logs.jsx index 083221d47f..5303534ad9 100644 --- a/frontend/src/Editor/LeftSidebar/SidebarDebugger/Logs.jsx +++ b/frontend/src/Editor/LeftSidebar/SidebarDebugger/Logs.jsx @@ -87,12 +87,12 @@ function Logs({ logProps, idx }) {

{ - setOpen((prev) => !prev); + logProps?.type !== 'Custom Log' && setOpen((prev) => !prev); }} style={{ pointerEvents: logProps?.isQuerySuccessLog ? 'none' : 'default', position: 'relative' }} > - + {logProps?.type !== 'Custom Log' && } {logProps.type === 'navToDisablePage' ? ( @@ -104,7 +104,9 @@ function Logs({ logProps, idx }) { {moment(logProps?.timestamp).fromNow()} {logProps?.type === 'Custom Log' && ( -

Custom Log
+
+ Custom Log +
)}
+ {logProps?.type == 'Custom Log' &&
{message}
} - {message} - {logProps?.error?.lineNumber ? `, Line ${logProps.error.lineNumber}` : ''} + {logProps?.type !== 'Custom Log' && message} )} diff --git a/frontend/src/_styles/left-sidebar.scss b/frontend/src/_styles/left-sidebar.scss index 217ea20ccb..8efdcabdd3 100644 --- a/frontend/src/_styles/left-sidebar.scss +++ b/frontend/src/_styles/left-sidebar.scss @@ -261,10 +261,16 @@ } .error-target-custom-log { + display: flex; + align-items: center; margin-top: 5px; background: var(--purple5) !important; color: var(--purple11); width: fit-content; + + svg { + margin-right: 1px; + } } } diff --git a/frontend/src/_ui/Icon/solidIcons/Code.jsx b/frontend/src/_ui/Icon/solidIcons/Code.jsx new file mode 100644 index 0000000000..d4022f94d0 --- /dev/null +++ b/frontend/src/_ui/Icon/solidIcons/Code.jsx @@ -0,0 +1,21 @@ +import React from 'react'; + +const Code = ({ fill = 'var(--purple11)', width = '25', className = '', viewBox = '0 0 25 25' }) => ( + + + +); + +export default Code; diff --git a/frontend/src/_ui/Icon/solidIcons/index.js b/frontend/src/_ui/Icon/solidIcons/index.js index 34a2410e1d..02ef072f4a 100644 --- a/frontend/src/_ui/Icon/solidIcons/index.js +++ b/frontend/src/_ui/Icon/solidIcons/index.js @@ -229,6 +229,7 @@ import CalendarSmall from './CalendarSmall.jsx'; import UserGroupsGrey from './UserGroupsGrey.jsx'; import AppLimitSvg from './AppLimitSvg.jsx'; import NewTabSmall from './NewTabSmall.jsx'; +import Code from './Code.jsx'; const Icon = (props) => { switch (props.name) { @@ -308,6 +309,8 @@ const Icon = (props) => { return ; case 'clearrectangle': return ; + case 'code': + return ; case 'clock': return ; case 'column':