From ebf693b33be6973cefebe85f111fa7daa4a6817a Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Tue, 3 Jan 2023 20:28:57 +0100 Subject: [PATCH] Add icons and reorganize activity categories --- .../src/components/icons/activities/break.tsx | 9 ++++++++ .../components/icons/activities/complete.tsx | 8 +++++++ .../src/components/icons/activities/fault.tsx | 8 +++++++ .../components/icons/activities/finish.tsx | 8 +++++++ .../src/components/icons/activities/for.tsx | 11 ++++++++++ .../src/components/icons/activities/fork.tsx | 13 +++++++++++ .../components/icons/activities/set-name.tsx | 8 +++++++ .../icons/activities/set-variable.tsx | 8 +++++++ .../src/components/icons/activities/start.tsx | 8 +++++++ .../components/icons/activities/startat.tsx | 14 ++++++++++++ .../src/components/icons/activities/while.tsx | 8 +++++++ .../flowchart/default-activity-template.tsx | 2 +- .../components/toolbox-activities.tsx | 2 +- .../src/services/activity-icon-registry.tsx | 22 ++++++++++++++++++- .../Elsa.Workflows.Core/Activities/Finish.cs | 2 +- .../Elsa.Workflows.Core/Activities/For.cs | 2 +- .../Elsa.Workflows.Core/Activities/ForEach.cs | 2 +- .../Elsa.Workflows.Core/Activities/Inline.cs | 2 ++ .../Activities/NotFoundActivity.cs | 2 +- .../Activities/ParallelForEach.cs | 2 +- .../Activities/Sequence.cs | 1 + .../Elsa.Workflows.Core/Activities/SetName.cs | 2 +- .../Elsa.Workflows.Core/Activities/Start.cs | 2 +- 23 files changed, 136 insertions(+), 10 deletions(-) create mode 100644 src/designer/elsa-workflows-designer/src/components/icons/activities/break.tsx create mode 100644 src/designer/elsa-workflows-designer/src/components/icons/activities/complete.tsx create mode 100644 src/designer/elsa-workflows-designer/src/components/icons/activities/fault.tsx create mode 100644 src/designer/elsa-workflows-designer/src/components/icons/activities/finish.tsx create mode 100644 src/designer/elsa-workflows-designer/src/components/icons/activities/for.tsx create mode 100644 src/designer/elsa-workflows-designer/src/components/icons/activities/fork.tsx create mode 100644 src/designer/elsa-workflows-designer/src/components/icons/activities/set-name.tsx create mode 100644 src/designer/elsa-workflows-designer/src/components/icons/activities/set-variable.tsx create mode 100644 src/designer/elsa-workflows-designer/src/components/icons/activities/start.tsx create mode 100644 src/designer/elsa-workflows-designer/src/components/icons/activities/startat.tsx create mode 100644 src/designer/elsa-workflows-designer/src/components/icons/activities/while.tsx diff --git a/src/designer/elsa-workflows-designer/src/components/icons/activities/break.tsx b/src/designer/elsa-workflows-designer/src/components/icons/activities/break.tsx new file mode 100644 index 000000000..3afdd2529 --- /dev/null +++ b/src/designer/elsa-workflows-designer/src/components/icons/activities/break.tsx @@ -0,0 +1,9 @@ +import {FunctionalComponent, h} from '@stencil/core'; +import {ActivityIconSettings, getActivityIconCssClass} from "./models"; + +export const BreakIcon: FunctionalComponent = (settings) => ( + + + + +); diff --git a/src/designer/elsa-workflows-designer/src/components/icons/activities/complete.tsx b/src/designer/elsa-workflows-designer/src/components/icons/activities/complete.tsx new file mode 100644 index 000000000..1f37308a4 --- /dev/null +++ b/src/designer/elsa-workflows-designer/src/components/icons/activities/complete.tsx @@ -0,0 +1,8 @@ +import {FunctionalComponent, h} from '@stencil/core'; +import {ActivityIconSettings, getActivityIconCssClass} from "./models"; + +export const CompleteIcon: FunctionalComponent = (settings) => ( + + + +); diff --git a/src/designer/elsa-workflows-designer/src/components/icons/activities/fault.tsx b/src/designer/elsa-workflows-designer/src/components/icons/activities/fault.tsx new file mode 100644 index 000000000..b48042ebe --- /dev/null +++ b/src/designer/elsa-workflows-designer/src/components/icons/activities/fault.tsx @@ -0,0 +1,8 @@ +import {FunctionalComponent, h} from '@stencil/core'; +import {ActivityIconSettings, getActivityIconCssClass} from "./models"; + +export const FaultIcon: FunctionalComponent = (settings) => ( + + + +); diff --git a/src/designer/elsa-workflows-designer/src/components/icons/activities/finish.tsx b/src/designer/elsa-workflows-designer/src/components/icons/activities/finish.tsx new file mode 100644 index 000000000..2d7c79da3 --- /dev/null +++ b/src/designer/elsa-workflows-designer/src/components/icons/activities/finish.tsx @@ -0,0 +1,8 @@ +import {FunctionalComponent, h} from '@stencil/core'; +import {ActivityIconSettings, getActivityIconCssClass} from "./models"; + +export const FinishIcon: FunctionalComponent = (settings) => ( + + + +); diff --git a/src/designer/elsa-workflows-designer/src/components/icons/activities/for.tsx b/src/designer/elsa-workflows-designer/src/components/icons/activities/for.tsx new file mode 100644 index 000000000..087a02b54 --- /dev/null +++ b/src/designer/elsa-workflows-designer/src/components/icons/activities/for.tsx @@ -0,0 +1,11 @@ +import {FunctionalComponent, h} from '@stencil/core'; +import {ActivityIconSettings, getActivityIconCssClass} from "./models"; + +export const ForIcon: FunctionalComponent = (settings) => ( + + + + + + +); diff --git a/src/designer/elsa-workflows-designer/src/components/icons/activities/fork.tsx b/src/designer/elsa-workflows-designer/src/components/icons/activities/fork.tsx new file mode 100644 index 000000000..d153ba45c --- /dev/null +++ b/src/designer/elsa-workflows-designer/src/components/icons/activities/fork.tsx @@ -0,0 +1,13 @@ +import {FunctionalComponent, h} from '@stencil/core'; +import {ActivityIconSettings, getActivityIconCssClass} from "./models"; + +export const ForkIcon: FunctionalComponent = (settings) => ( + + + + + + + + +); diff --git a/src/designer/elsa-workflows-designer/src/components/icons/activities/set-name.tsx b/src/designer/elsa-workflows-designer/src/components/icons/activities/set-name.tsx new file mode 100644 index 000000000..7db83f001 --- /dev/null +++ b/src/designer/elsa-workflows-designer/src/components/icons/activities/set-name.tsx @@ -0,0 +1,8 @@ +import {FunctionalComponent, h} from '@stencil/core'; +import {ActivityIconSettings, getActivityIconCssClass} from "./models"; + +export const SetNameIcon: FunctionalComponent = (settings) => ( + + + +); diff --git a/src/designer/elsa-workflows-designer/src/components/icons/activities/set-variable.tsx b/src/designer/elsa-workflows-designer/src/components/icons/activities/set-variable.tsx new file mode 100644 index 000000000..dc6bbde61 --- /dev/null +++ b/src/designer/elsa-workflows-designer/src/components/icons/activities/set-variable.tsx @@ -0,0 +1,8 @@ +import {FunctionalComponent, h} from '@stencil/core'; +import {ActivityIconSettings, getActivityIconCssClass} from "./models"; + +export const SetVariableIcon: FunctionalComponent = (settings) => ( + + + +); diff --git a/src/designer/elsa-workflows-designer/src/components/icons/activities/start.tsx b/src/designer/elsa-workflows-designer/src/components/icons/activities/start.tsx new file mode 100644 index 000000000..e8c57f801 --- /dev/null +++ b/src/designer/elsa-workflows-designer/src/components/icons/activities/start.tsx @@ -0,0 +1,8 @@ +import {FunctionalComponent, h} from '@stencil/core'; +import {ActivityIconSettings, getActivityIconCssClass} from "./models"; + +export const StartIcon: FunctionalComponent = (settings) => ( + + + +); diff --git a/src/designer/elsa-workflows-designer/src/components/icons/activities/startat.tsx b/src/designer/elsa-workflows-designer/src/components/icons/activities/startat.tsx new file mode 100644 index 000000000..2d6085f35 --- /dev/null +++ b/src/designer/elsa-workflows-designer/src/components/icons/activities/startat.tsx @@ -0,0 +1,14 @@ +import {FunctionalComponent, h} from '@stencil/core'; +import {ActivityIconSettings, getActivityIconCssClass} from "./models"; + +export const StartAtIcon: FunctionalComponent = (settings) => ( + + + + + + + + + +); diff --git a/src/designer/elsa-workflows-designer/src/components/icons/activities/while.tsx b/src/designer/elsa-workflows-designer/src/components/icons/activities/while.tsx new file mode 100644 index 000000000..f6d76e6d1 --- /dev/null +++ b/src/designer/elsa-workflows-designer/src/components/icons/activities/while.tsx @@ -0,0 +1,8 @@ +import {FunctionalComponent, h} from '@stencil/core'; +import {ActivityIconSettings, getActivityIconCssClass} from "./models"; + +export const WhileIcon: FunctionalComponent = (settings) => ( + + + +); diff --git a/src/designer/elsa-workflows-designer/src/modules/flowchart/default-activity-template.tsx b/src/designer/elsa-workflows-designer/src/modules/flowchart/default-activity-template.tsx index 0b66a6ce8..940ab5965 100644 --- a/src/designer/elsa-workflows-designer/src/modules/flowchart/default-activity-template.tsx +++ b/src/designer/elsa-workflows-designer/src/modules/flowchart/default-activity-template.tsx @@ -80,7 +80,7 @@ export class DefaultActivityTemplate { {this.renderIcon(icon)}
-
+
{displayText}
{this.renderPorts(activity, embeddedPorts)} diff --git a/src/designer/elsa-workflows-designer/src/modules/workflow-definitions/components/toolbox-activities.tsx b/src/designer/elsa-workflows-designer/src/modules/workflow-definitions/components/toolbox-activities.tsx index e2b94a32c..a687db6f8 100644 --- a/src/designer/elsa-workflows-designer/src/modules/workflow-definitions/components/toolbox-activities.tsx +++ b/src/designer/elsa-workflows-designer/src/modules/workflow-definitions/components/toolbox-activities.tsx @@ -52,7 +52,7 @@ export class ToolboxActivities { buildModel = (): any => { const browsableDescriptors = descriptorsStore.activityDescriptors.filter(x => x.isBrowsable); const categorizedActivitiesLookup = groupBy(browsableDescriptors, x => x.category); - const categories = Object.keys(categorizedActivitiesLookup); + const categories = Object.keys(categorizedActivitiesLookup).sort((a, b) => a.localeCompare(b)); const renderedActivities: Map = new Map(); // Group activities by category diff --git a/src/designer/elsa-workflows-designer/src/services/activity-icon-registry.tsx b/src/designer/elsa-workflows-designer/src/services/activity-icon-registry.tsx index 059cf6f55..58f471361 100644 --- a/src/designer/elsa-workflows-designer/src/services/activity-icon-registry.tsx +++ b/src/designer/elsa-workflows-designer/src/services/activity-icon-registry.tsx @@ -14,6 +14,16 @@ import { HttpEndpointIcon, HttpResponseIcon, HttpRequestIcon, CorrelateIcon } from "../components/icons/activities"; +import {ForIcon} from "../components/icons/activities/for"; +import {FinishIcon} from "../components/icons/activities/finish"; +import {FaultIcon} from "../components/icons/activities/fault"; +import {SetNameIcon} from "../components/icons/activities/set-name"; +import {SetVariableIcon} from "../components/icons/activities/set-variable"; +import {StartIcon} from "../components/icons/activities/start"; +import {StartAtIcon} from "../components/icons/activities/startat"; +import {BreakIcon} from "../components/icons/activities/break"; +import {ForkIcon} from "../components/icons/activities/fork"; +import {CompleteIcon} from "../components/icons/activities/complete"; export type ActivityType = string; export type ActivityIconProducer = (ActivityIconSettings?) => any; @@ -24,16 +34,20 @@ export class ActivityIconRegistry { private iconMap: Map = new Map(); constructor() { - this.add('Elsa.WriteLine', settings => ); this.add('Elsa.WriteLine', settings => ); this.add('Elsa.ReadLine', settings => ); this.add('Elsa.If', settings => ); this.add('Elsa.Flowchart', settings => ); + this.add('Elsa.Fork', settings => ); this.add('Elsa.HttpEndpoint', settings => ); this.add('Elsa.WriteHttpResponse', settings => ); this.add('Elsa.ForEach', settings => ); + this.add('Elsa.For', settings => ); + this.add('Elsa.While', settings => ); + this.add('Elsa.Break', settings => ); this.add('Elsa.Delay', settings => ); this.add('Elsa.Timer', settings => ); + this.add('Elsa.StartAt', settings => ); this.add('Elsa.FlowDecision', settings => ); this.add('Elsa.Event', settings => ); this.add('Elsa.RunJavaScript', settings => ); @@ -41,6 +55,12 @@ export class ActivityIconRegistry { this.add('Elsa.FlowNode', settings => ); this.add('Elsa.SendHttpRequest', settings => ); this.add("Elsa.Correlate", settings => ) + this.add("Elsa.Start", settings => ) + this.add("Elsa.Finish", settings => ) + this.add('Elsa.Fault', settings => ); + this.add('Elsa.Complete', settings => ); + this.add('Elsa.SetName', settings => ); + this.add('Elsa.SetVariable', settings => ); } public add(activityType: ActivityType, icon: ActivityIconProducer) { diff --git a/src/modules/Elsa.Workflows.Core/Activities/Finish.cs b/src/modules/Elsa.Workflows.Core/Activities/Finish.cs index f65c0a83a..856e52439 100644 --- a/src/modules/Elsa.Workflows.Core/Activities/Finish.cs +++ b/src/modules/Elsa.Workflows.Core/Activities/Finish.cs @@ -8,7 +8,7 @@ namespace Elsa.Workflows.Core.Activities; /// /// Mark the workflow as finished. /// -[Activity("Elsa", "Control Flow", "Mark the workflow as finished.")] +[Activity("Elsa", "Primitives", "Mark the workflow as finished.")] public class Finish : ActivityBase { /// diff --git a/src/modules/Elsa.Workflows.Core/Activities/For.cs b/src/modules/Elsa.Workflows.Core/Activities/For.cs index 791c1b5bc..d6bdb7487 100644 --- a/src/modules/Elsa.Workflows.Core/Activities/For.cs +++ b/src/modules/Elsa.Workflows.Core/Activities/For.cs @@ -12,7 +12,7 @@ namespace Elsa.Workflows.Core.Activities; /// /// Iterate over a sequence of steps between a start and an end number. /// -[Activity("Elsa", "Control Flow", "Iterate over a sequence of steps between a start and an end number.")] +[Activity("Elsa", "Primitives", "Iterate over a sequence of steps between a start and an end number.")] public class For : ActivityBase { private const string CurrentStepProperty = "CurrentStep"; diff --git a/src/modules/Elsa.Workflows.Core/Activities/ForEach.cs b/src/modules/Elsa.Workflows.Core/Activities/ForEach.cs index adbfc4121..d81dac7f3 100644 --- a/src/modules/Elsa.Workflows.Core/Activities/ForEach.cs +++ b/src/modules/Elsa.Workflows.Core/Activities/ForEach.cs @@ -12,7 +12,7 @@ namespace Elsa.Workflows.Core.Activities; /// /// Iterate over a set of values. /// -[Activity("Elsa", "Control Flow", "Iterate over a set of values.")] +[Activity("Elsa", "Primitives", "Iterate over a set of values.")] public class ForEach : ActivityBase { private const string CurrentIndexProperty = "CurrentIndex"; diff --git a/src/modules/Elsa.Workflows.Core/Activities/Inline.cs b/src/modules/Elsa.Workflows.Core/Activities/Inline.cs index 6a19ebd6b..d8902e907 100644 --- a/src/modules/Elsa.Workflows.Core/Activities/Inline.cs +++ b/src/modules/Elsa.Workflows.Core/Activities/Inline.cs @@ -1,3 +1,4 @@ +using System.ComponentModel; using System.Runtime.CompilerServices; using Elsa.Expressions.Models; using Elsa.Workflows.Core.Attributes; @@ -8,6 +9,7 @@ namespace Elsa.Workflows.Core.Activities; /// /// Represents an inline code activity that can be used to execute arbitrary .NET code from a workflow. /// +[Browsable(false)] [Activity("Elsa", "Primitives", "Evaluate a Boolean condition to determine which path to execute next.")] public class Inline : Activity { diff --git a/src/modules/Elsa.Workflows.Core/Activities/NotFoundActivity.cs b/src/modules/Elsa.Workflows.Core/Activities/NotFoundActivity.cs index bf89e2a92..ba2507344 100644 --- a/src/modules/Elsa.Workflows.Core/Activities/NotFoundActivity.cs +++ b/src/modules/Elsa.Workflows.Core/Activities/NotFoundActivity.cs @@ -8,7 +8,7 @@ namespace Elsa.Workflows.Core.Activities; /// This activity is instantiated in case a workflow references an activity type that could not be found. /// [Browsable(false)] -[Activity("Elsa", "Workflows", "A placeholder activity that will be used in case a workflow definition references an activity type that cannot be found.")] +[Activity("Elsa", "System", "A placeholder activity that will be used in case a workflow definition references an activity type that cannot be found.")] public class NotFoundActivity : Activity { /// diff --git a/src/modules/Elsa.Workflows.Core/Activities/ParallelForEach.cs b/src/modules/Elsa.Workflows.Core/Activities/ParallelForEach.cs index 4820667a1..ad40d5ec1 100644 --- a/src/modules/Elsa.Workflows.Core/Activities/ParallelForEach.cs +++ b/src/modules/Elsa.Workflows.Core/Activities/ParallelForEach.cs @@ -11,7 +11,7 @@ namespace Elsa.Workflows.Core.Activities; /// Schedule an activity for each item in parallel. /// /// -[Activity("Elsa", "Control Flow", "Schedule an activity for each item in parallel.")] +[Activity("Elsa", "Primitives", "Schedule an activity for each item in parallel.")] public class ParallelForEach : Activity { private const string CollectedCountProperty = nameof(CollectedCountProperty); diff --git a/src/modules/Elsa.Workflows.Core/Activities/Sequence.cs b/src/modules/Elsa.Workflows.Core/Activities/Sequence.cs index 71d369299..f18b51a7d 100644 --- a/src/modules/Elsa.Workflows.Core/Activities/Sequence.cs +++ b/src/modules/Elsa.Workflows.Core/Activities/Sequence.cs @@ -13,6 +13,7 @@ namespace Elsa.Workflows.Core.Activities; /// Execute a set of activities in sequence. /// [Category("Workflows")] +[Browsable(false)] [Activity("Elsa", "Workflows", "Execute a set of activities in sequence.")] public class Sequence : Container { diff --git a/src/modules/Elsa.Workflows.Core/Activities/SetName.cs b/src/modules/Elsa.Workflows.Core/Activities/SetName.cs index b42f41b26..6ae860eba 100644 --- a/src/modules/Elsa.Workflows.Core/Activities/SetName.cs +++ b/src/modules/Elsa.Workflows.Core/Activities/SetName.cs @@ -8,7 +8,7 @@ namespace Elsa.Workflows.Core.Activities; /// /// Sets a property on the workflow execution context with the specified name value. /// -[Activity("Elsa", "Workflows", "Set the name of the workflow instance to a specified value.")] +[Activity("Elsa", "Primitives", "Set the name of the workflow instance to a specified value.")] public class SetName : Activity { /// diff --git a/src/modules/Elsa.Workflows.Core/Activities/Start.cs b/src/modules/Elsa.Workflows.Core/Activities/Start.cs index 3e563e148..f2084ee46 100644 --- a/src/modules/Elsa.Workflows.Core/Activities/Start.cs +++ b/src/modules/Elsa.Workflows.Core/Activities/Start.cs @@ -8,7 +8,7 @@ namespace Elsa.Workflows.Core.Activities; /// /// Mark the workflow as finished. /// -[Activity("Elsa", "Control Flow", "A milestone activity with no behavior other than marking a milestone.", Kind = ActivityKind.Action)] +[Activity("Elsa", "Primitives", "A milestone activity with no behavior other than marking a milestone.", Kind = ActivityKind.Action)] public class Start : Activity { ///