From 6dabbd40ff8fde798b568328410de817b33ffd87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCrkan=20G=C3=BCran?= Date: Fri, 14 Apr 2023 16:19:38 +0200 Subject: [PATCH] Fix for variables in output tab not being refreshed --- .../workflow-definitions/components/editor.tsx | 11 +++++++++++ .../components/workflow-properties/properties.tsx | 15 +++++++++++++-- .../models/props-editor-tabs.ts | 7 +++++++ .../src/modules/workflow-definitions/models/ui.ts | 4 ++-- .../workflow-instances/components/viewer.tsx | 10 +++++----- 5 files changed, 38 insertions(+), 9 deletions(-) create mode 100644 src/designer/designer_packages/elsa-workflows-designer/src/modules/workflow-definitions/models/props-editor-tabs.ts diff --git a/src/designer/designer_packages/elsa-workflows-designer/src/modules/workflow-definitions/components/editor.tsx b/src/designer/designer_packages/elsa-workflows-designer/src/modules/workflow-definitions/components/editor.tsx index 24eadf5b6..ec67654f9 100644 --- a/src/designer/designer_packages/elsa-workflows-designer/src/modules/workflow-definitions/components/editor.tsx +++ b/src/designer/designer_packages/elsa-workflows-designer/src/modules/workflow-definitions/components/editor.tsx @@ -19,6 +19,7 @@ import {LayoutDirection, UpdateActivityArgs} from "../../flowchart/models"; import {cloneDeep} from '@antv/x6/lib/util/object/object'; import {removeGuidsFromPortNames} from '../../../utils/graph'; import {constrainTimeouts} from "@stencil/core/mock-doc"; +import { WorkflowPropertiesEditorTabs } from '../models/props-editor-tabs'; @Component({ tag: 'elsa-workflow-definition-editor', @@ -275,6 +276,16 @@ export class WorkflowDefinitionEditor { private onWorkflowPropsUpdated = (e: CustomEvent) => { this.saveChangesDebounced(); + + if(e.detail.updatedTab == WorkflowPropertiesEditorTabs.Variables){ + rerenderActivityEditor(); + } + + function rerenderActivityEditor() { + const currentSelectedActivity = this.selectedActivity; + this.selectedActivity = null; + this.selectedActivity = currentSelectedActivity; + } } private async onActivitySelected(e: CustomEvent) { diff --git a/src/designer/designer_packages/elsa-workflows-designer/src/modules/workflow-definitions/components/workflow-properties/properties.tsx b/src/designer/designer_packages/elsa-workflows-designer/src/modules/workflow-definitions/components/workflow-properties/properties.tsx index 06f663002..574ff76fb 100644 --- a/src/designer/designer_packages/elsa-workflows-designer/src/modules/workflow-definitions/components/workflow-properties/properties.tsx +++ b/src/designer/designer_packages/elsa-workflows-designer/src/modules/workflow-definitions/components/workflow-properties/properties.tsx @@ -9,6 +9,7 @@ import {InfoList} from "../../../../components/shared/forms/info-list"; import {TabChangedArgs, Variable} from "../../../../models"; import {WorkflowDefinitionsApi} from "../../services/api"; import descriptorsStore from "../../../../data/descriptors-store"; +import {WorkflowPropertiesEditorTabs} from "../../models/props-editor-tabs"; @Component({ tag: 'elsa-workflow-definition-properties-editor', @@ -258,7 +259,7 @@ export class WorkflowDefinitionPropertiesEditor { private onPropertyEditorChanged = (apply: (w: WorkflowDefinition) => void) => { const workflowDefinition = this.workflowDefinition; apply(workflowDefinition); - this.workflowPropsUpdated.emit({workflowDefinition}); + this.workflowPropsUpdated.emit({workflowDefinition: workflowDefinition}); } private onVariablesUpdated = async (e: CustomEvent>) => this.onPropsUpdated('variables', e.detail) @@ -280,7 +281,17 @@ export class WorkflowDefinitionPropertiesEditor { } workflowDefinition[propName] = propValue; - this.workflowPropsUpdated.emit({workflowDefinition}); + const updatedTab = this.getPropEditorSectionByPropName(propName); + this.workflowPropsUpdated.emit({workflowDefinition,updatedTab}); await this.createModel(); } + + private getPropEditorSectionByPropName(propName: string) : WorkflowPropertiesEditorTabs { + const enumKey = Object.keys(WorkflowPropertiesEditorTabs).find(key => WorkflowPropertiesEditorTabs[key as keyof typeof WorkflowPropertiesEditorTabs] === propName); + + if (enumKey) { + return WorkflowPropertiesEditorTabs[enumKey as keyof typeof WorkflowPropertiesEditorTabs]; + } + return null; + } } diff --git a/src/designer/designer_packages/elsa-workflows-designer/src/modules/workflow-definitions/models/props-editor-tabs.ts b/src/designer/designer_packages/elsa-workflows-designer/src/modules/workflow-definitions/models/props-editor-tabs.ts new file mode 100644 index 000000000..dda8c3d39 --- /dev/null +++ b/src/designer/designer_packages/elsa-workflows-designer/src/modules/workflow-definitions/models/props-editor-tabs.ts @@ -0,0 +1,7 @@ +export enum WorkflowPropertiesEditorTabs { + Properties = 'properties', + Variables = 'variables', + Settings = 'settings', + InputOutput = 'input-output', + VersionHistory = 'versionHistory' +} \ No newline at end of file diff --git a/src/designer/designer_packages/elsa-workflows-designer/src/modules/workflow-definitions/models/ui.ts b/src/designer/designer_packages/elsa-workflows-designer/src/modules/workflow-definitions/models/ui.ts index 1ef175907..19539107a 100644 --- a/src/designer/designer_packages/elsa-workflows-designer/src/modules/workflow-definitions/models/ui.ts +++ b/src/designer/designer_packages/elsa-workflows-designer/src/modules/workflow-definitions/models/ui.ts @@ -1,5 +1,6 @@ import {Activity, ActivityDescriptor, InputDescriptor, PropertyDescriptor, TabDefinition} from "../../../models"; import {WorkflowDefinition} from "./entities"; +import { WorkflowPropertiesEditorTabs } from "./props-editor-tabs"; export const WorkflowEditorEventTypes = { WorkflowDefinition: { @@ -36,6 +37,7 @@ export interface WorkflowDefinitionUpdatedArgs { export interface WorkflowDefinitionPropsUpdatedArgs { workflowDefinition: WorkflowDefinition; + updatedTab?: WorkflowPropertiesEditorTabs; } export interface WorkflowPropertiesEditorDisplayingArgs { @@ -74,8 +76,6 @@ export interface ActivityUpdatedArgs { newId?: string; activity: Activity; activityDescriptor: ActivityDescriptor; - // propertyName?: string; - // propertyDescriptor?: PropertyDescriptor; } export interface ActivityIdUpdatedArgs { diff --git a/src/designer/designer_packages/elsa-workflows-designer/src/modules/workflow-instances/components/viewer.tsx b/src/designer/designer_packages/elsa-workflows-designer/src/modules/workflow-instances/components/viewer.tsx index 99b0ff784..5fe72f7fe 100644 --- a/src/designer/designer_packages/elsa-workflows-designer/src/modules/workflow-instances/components/viewer.tsx +++ b/src/designer/designer_packages/elsa-workflows-designer/src/modules/workflow-instances/components/viewer.tsx @@ -88,8 +88,8 @@ export class WorkflowInstanceViewer { const activityId = e.detail.activity.id; const activityNode = e.detail.activityNode; - let graph = await this.flowchartElement.getGraph(); - let graphNode = graph.getNodes().find(n => n.id == activityId) + const graph = await this.flowchartElement.getGraph(); + const graphNode = graph.getNodes().find(n => n.id == activityId) if(graphNode == null) { await this.importSelectedItemsWorkflow(activityNode); @@ -101,7 +101,7 @@ export class WorkflowInstanceViewer { this.selectedActivity = graphNode.data; } - var log = e.detail.executionLog; + const log = e.detail.executionLog; this.selectedActivityExecutionLog = log.faulted ? log.faultedRecord : log.completed ? log.completedRecord : log.startedRecord; } @@ -116,12 +116,12 @@ export class WorkflowInstanceViewer { } private findConsumingWorkflowRecursive(activityNode: ActivityNode) : ActivityNode { - let parent = activityNode.parents[0]; + const parent = activityNode.parents[0]; if(parent == null) { return activityNode; } else{ - var type = parent.activity.type; + const type = parent.activity.type; if(type == "Elsa.Workflow" || type == "Elsa.Flowchart") { return this.findConsumingWorkflowRecursive(parent); }