diff --git a/src/core/Elsa.Core/Services/Workflows/WorkflowRunner.cs b/src/core/Elsa.Core/Services/Workflows/WorkflowRunner.cs index 9a8e70fd3..0bf4fde6d 100644 --- a/src/core/Elsa.Core/Services/Workflows/WorkflowRunner.cs +++ b/src/core/Elsa.Core/Services/Workflows/WorkflowRunner.cs @@ -328,6 +328,7 @@ namespace Elsa.Services.Workflows _logger.LogWarning(e, "Failed to run activity {ActivityId} of workflow {WorkflowInstanceId}", activity.Id, activityExecutionContext.WorkflowInstance.Id); activityExecutionContext.Fault(e); await _mediator.Publish(new ActivityFaulted(e, activityExecutionContext, activity), cancellationToken); + await _mediator.Publish(new ActivityExecutionResultFailed(e, activityExecutionContext), cancellationToken); } return null; diff --git a/src/designer/elsa-workflows-studio/src/components/controls/elsa-context-menu/elsa-context-menu.tsx b/src/designer/elsa-workflows-studio/src/components/controls/elsa-context-menu/elsa-context-menu.tsx index e32775407..1dea777f5 100644 --- a/src/designer/elsa-workflows-studio/src/components/controls/elsa-context-menu/elsa-context-menu.tsx +++ b/src/designer/elsa-workflows-studio/src/components/controls/elsa-context-menu/elsa-context-menu.tsx @@ -31,7 +31,8 @@ export class ElsaContextMenu { } closeContextMenu() { - leave(this.contextMenu); + if (!!this.contextMenu) + leave(this.contextMenu); } toggleMenu() { diff --git a/src/designer/elsa-workflows-studio/src/components/designers/tree/elsa-designer-tree/elsa-designer-tree.tsx b/src/designer/elsa-workflows-studio/src/components/designers/tree/elsa-designer-tree/elsa-designer-tree.tsx index f455f4aa5..32239350f 100644 --- a/src/designer/elsa-workflows-studio/src/components/designers/tree/elsa-designer-tree/elsa-designer-tree.tsx +++ b/src/designer/elsa-workflows-studio/src/components/designers/tree/elsa-designer-tree/elsa-designer-tree.tsx @@ -187,14 +187,11 @@ export class ElsaWorkflowDesigner { } async copyActivitiesToClipboard() { - this.checkClipboardPermissions(); await navigator.clipboard.writeText(JSON.stringify(this.selectedActivities)); await eventBus.emit(EventTypes.ClipboardCopied, this); } async pasteActivitiesFromClipboard() { - this.checkClipboardPermissions(); - let copiedActivities: Array = []; await navigator.clipboard.readText().then(data => { @@ -233,13 +230,6 @@ export class ElsaWorkflowDesigner { this.parentActivityOutcome = null; } - checkClipboardPermissions() { - navigator.permissions.query({name: "clipboard-read"}).then((result) => { - if (result.state == 'denied') - eventBus.emit(EventTypes.ClipboardPermissionDenied, this); - }); - } - connectedCallback() { eventBus.on(EventTypes.ActivityPicked, this.onActivityPicked); eventBus.on(EventTypes.UpdateActivity, this.onUpdateActivity); @@ -715,8 +705,8 @@ export class ElsaWorkflowDesigner { d3.select(node.elem).select('svg').classed('elsa-text-green-400', true).classed('elsa-text-gray-400', false).classed('hover:elsa-text-blue-500', false); return; } - - await this.showActivityPicker(); + + if (this.mode !== WorkflowDesignerMode.Test) await this.showActivityPicker(); }) .on("mouseover", e => { if (e.shiftKey) @@ -737,6 +727,8 @@ export class ElsaWorkflowDesigner { root.selectAll('.node.start').each((n: any) => { const node = this.graph.node(n) as any; d3.select(node.elem).on('click', async e => { + if (this.mode == WorkflowDesignerMode.Test) return; + await this.showActivityPicker(); }); }); diff --git a/src/designer/elsa-workflows-studio/src/components/editors/elsa-multi-expression-editor/elsa-multi-expression-editor.tsx b/src/designer/elsa-workflows-studio/src/components/editors/elsa-multi-expression-editor/elsa-multi-expression-editor.tsx index e8c8c9abd..8833f0026 100644 --- a/src/designer/elsa-workflows-studio/src/components/editors/elsa-multi-expression-editor/elsa-multi-expression-editor.tsx +++ b/src/designer/elsa-workflows-studio/src/components/editors/elsa-multi-expression-editor/elsa-multi-expression-editor.tsx @@ -40,7 +40,7 @@ export class ElsaMultiExpressionEditor { onWindowClicked(event: Event){ const target = event.target as HTMLElement; - if (!this.contextMenuWidget.contains(target)) + if (!this.contextMenuWidget || !this.contextMenuWidget.contains(target)) this.closeContextMenu(); } @@ -53,7 +53,8 @@ export class ElsaMultiExpressionEditor { } closeContextMenu() { - leave(this.contextMenu); + if (!!this.contextMenu) + leave(this.contextMenu); } selectDefaultEditor(e: Event) { diff --git a/src/designer/elsa-workflows-studio/src/components/screens/workflow-definition-editor/elsa-workflow-definition-editor-screen/elsa-workflow-definition-editor-screen.tsx b/src/designer/elsa-workflows-studio/src/components/screens/workflow-definition-editor/elsa-workflow-definition-editor-screen/elsa-workflow-definition-editor-screen.tsx index 3664e78a5..abd9a9359 100644 --- a/src/designer/elsa-workflows-studio/src/components/screens/workflow-definition-editor/elsa-workflow-definition-editor-screen/elsa-workflow-definition-editor-screen.tsx +++ b/src/designer/elsa-workflows-studio/src/components/screens/workflow-definition-editor/elsa-workflow-definition-editor-screen/elsa-workflow-definition-editor-screen.tsx @@ -593,9 +593,9 @@ export class ElsaWorkflowDefinitionEditorScreen { onActivityDeselected={e => this.onActivityDeselected(e)} class="elsa-flex-1" ref={el => this.designer = el}/> - {this.renderPanel()} {this.renderWorkflowSettingsButton()} {this.renderWorkflowHelpButton()} + {this.renderPanel()} {this.renderActivityContextMenu()} {this.renderConnectionContextMenu()} diff --git a/src/designer/elsa-workflows-studio/src/components/screens/workflow-definition-editor/elsa-workflow-test-panel/elsa-workflow-test-panel.tsx b/src/designer/elsa-workflows-studio/src/components/screens/workflow-definition-editor/elsa-workflow-test-panel/elsa-workflow-test-panel.tsx index 3939a5275..f827fac9c 100644 --- a/src/designer/elsa-workflows-studio/src/components/screens/workflow-definition-editor/elsa-workflow-test-panel/elsa-workflow-test-panel.tsx +++ b/src/designer/elsa-workflows-studio/src/components/screens/workflow-definition-editor/elsa-workflow-test-panel/elsa-workflow-test-panel.tsx @@ -60,6 +60,10 @@ export class ElsaWorkflowTestPanel { if (message.workflowStatus == 'Executed') { this.workflowStarted = false; } + + if (!this.message && message.activityId == this.workflowTestActivityId){ + this.message = message; + } }); this.hubConnection.start() @@ -110,6 +114,28 @@ export class ElsaWorkflowTestPanel { const workflowStatus = this.workflowTestActivityMessages.last().workflowStatus; const t = (x, params?) => this.i18next.t(x, params); + + const renderEndpointUrl = () => { + if (!message.activityData || !message.activityData["Path"]) return undefined; + + const endpointUrl = this.serverUrl + '/workflows' + message.activityData["Path"].value + '?correlation=' + message.correlationId; + + return ( +
+
+
+ {t('EntryEndpoint')} + +
+
+
+
+ clip(e.currentTarget)}>{endpointUrl} +
+
+
+ ); + }; return (
@@ -117,20 +143,7 @@ export class ElsaWorkflowTestPanel {
{t('Status')}
{workflowStatus}
- {!!message.activityData["Path"] ? -
-
-
{t('EntryEndpoint')}
-
-
-
-
 clip(e.currentTarget)}>{this.serverUrl + '/workflows' + message.activityData["Path"].value + '?correlation=' + message.correlationId}
-
-
-
- : - undefined - } + {renderEndpointUrl()}
); } diff --git a/src/designer/elsa-workflows-studio/src/components/shared/elsa-copy-button/elsa-copy-button.tsx b/src/designer/elsa-workflows-studio/src/components/shared/elsa-copy-button/elsa-copy-button.tsx index b480344ea..9865abc61 100644 --- a/src/designer/elsa-workflows-studio/src/components/shared/elsa-copy-button/elsa-copy-button.tsx +++ b/src/designer/elsa-workflows-studio/src/components/shared/elsa-copy-button/elsa-copy-button.tsx @@ -24,17 +24,7 @@ export class ElsaCopyButton { onCopyClick = async (e) => { e.stopPropagation(); - this.checkClipboardPermissions(); - await navigator.clipboard.writeText(this.value); await eventBus.emit(EventTypes.ClipboardCopied, this, undefined, 'Data copied to clipboard.'); } - - checkClipboardPermissions = () => { - navigator.permissions.query({name: 'clipboard-read'}).then((result) => { - if (result.state == 'denied') - eventBus.emit(EventTypes.ClipboardPermissionDenied, this); - }); - } - } diff --git a/src/designer/elsa-workflows-studio/src/components/shared/elsa-flyout-panel/elsa-flyout-panel.tsx b/src/designer/elsa-workflows-studio/src/components/shared/elsa-flyout-panel/elsa-flyout-panel.tsx index bc4fad5ba..1d3272ec2 100644 --- a/src/designer/elsa-workflows-studio/src/components/shared/elsa-flyout-panel/elsa-flyout-panel.tsx +++ b/src/designer/elsa-workflows-studio/src/components/shared/elsa-flyout-panel/elsa-flyout-panel.tsx @@ -51,7 +51,7 @@ export class ElsaFlyoutPanel {