From fcf124bda076b0f0c20e0a347e1afa4e4a6d042b Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Tue, 20 Jul 2021 17:08:15 +0200 Subject: [PATCH] Add IsBrowsable metadata This enables developers to control what properties are visible in the activity picker --- .../Metadata/ActivityInputDescriptor.cs | 15 ++++++++++----- .../Elsa.Server.Api/Endpoints/Activities/List.cs | 10 +++++++++- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/core/Elsa.Abstractions/Metadata/ActivityInputDescriptor.cs b/src/core/Elsa.Abstractions/Metadata/ActivityInputDescriptor.cs index 6ef196833..ac2d538a3 100644 --- a/src/core/Elsa.Abstractions/Metadata/ActivityInputDescriptor.cs +++ b/src/core/Elsa.Abstractions/Metadata/ActivityInputDescriptor.cs @@ -7,7 +7,7 @@ namespace Elsa.Metadata [Obsolete("Use ActivityInputDescriptor instead.")] public class ActivityPropertyDescriptor : ActivityInputDescriptor { - public ActivityPropertyDescriptor() : base() + public ActivityPropertyDescriptor() { } @@ -22,8 +22,9 @@ namespace Elsa.Metadata object? defaultValue = default, string? defaultSyntax = "Literal", IEnumerable? supportedSyntaxes = default, - bool? isDisabled = default) - : base ( + bool isDisabled = false, + bool isBrowsable = true) + : base( name, type, uiHint, @@ -35,7 +36,8 @@ namespace Elsa.Metadata defaultValue, defaultSyntax, supportedSyntaxes, - isDisabled + isDisabled, + isBrowsable ) { } @@ -59,7 +61,8 @@ namespace Elsa.Metadata object? defaultValue = default, string? defaultSyntax = "Literal", IEnumerable? supportedSyntaxes = default, - bool? isDisabled = default) + bool isDisabled = false, + bool isBrowsable = true) { Name = name; Type = type; @@ -73,6 +76,7 @@ namespace Elsa.Metadata DefaultSyntax = defaultSyntax; SupportedSyntaxes = supportedSyntaxes?.ToList() ?? new List(); IsDisabled = isDisabled; + IsBrowsable = isBrowsable; } public string Name { get; set; } = default!; @@ -87,5 +91,6 @@ namespace Elsa.Metadata public string? DefaultSyntax { get; set; } public IList SupportedSyntaxes { get; set; } = new List(); public bool? IsDisabled { get; set; } + public bool? IsBrowsable { get; set; } } } \ No newline at end of file diff --git a/src/server/Elsa.Server.Api/Endpoints/Activities/List.cs b/src/server/Elsa.Server.Api/Endpoints/Activities/List.cs index 3d36652ee..fe6fe7bbd 100644 --- a/src/server/Elsa.Server.Api/Endpoints/Activities/List.cs +++ b/src/server/Elsa.Server.Api/Endpoints/Activities/List.cs @@ -43,6 +43,14 @@ namespace Elsa.Server.Api.Endpoints.Activities return Json(descriptors, _serializerSettingsProvider.GetSettings()); } - private async Task DescribeActivity(ActivityType activityType, CancellationToken cancellationToken) => await _activityTypeService.DescribeActivityType(activityType, cancellationToken); + private async Task DescribeActivity(ActivityType activityType, CancellationToken cancellationToken) + { + var activityDescriptor = await _activityTypeService.DescribeActivityType(activityType, cancellationToken); + + // Filter out any non-browsable properties. + activityDescriptor.InputProperties = activityDescriptor.InputProperties.Where(x => x.IsBrowsable == true).ToArray(); + + return activityDescriptor; + } } } \ No newline at end of file