diff --git a/src/dashboards/blazor/ElsaDashboard.Application/Shared/WorkflowDesigner.razor.cs b/src/dashboards/blazor/ElsaDashboard.Application/Shared/WorkflowDesigner.razor.cs index 136c7892f..4b2b56f69 100644 --- a/src/dashboards/blazor/ElsaDashboard.Application/Shared/WorkflowDesigner.razor.cs +++ b/src/dashboards/blazor/ElsaDashboard.Application/Shared/WorkflowDesigner.razor.cs @@ -225,13 +225,13 @@ namespace ElsaDashboard.Application.Shared private async Task OnActivityPickedAsync(ActivityDescriptorSelectedEventArgs e, string? sourceActivityId, string? targetActivityId, string? outcome) { - var activityDescriptor = e.ActivityInfo; + var activityInfo = e.ActivityInfo; await FlyoutPanelService.ShowAsync( - activityDescriptor.DisplayName, - new { ActivityDescriptor = activityDescriptor }, + activityInfo.DisplayName, + new { ActivityInfo = activityInfo }, ButtonDescriptor.Create("Cancel", _ => ShowActivityPickerAsync(sourceActivityId, targetActivityId, outcome)), - ButtonDescriptor.Create("OK", _ => AddActivityAsync(activityDescriptor, sourceActivityId, targetActivityId, outcome), true)); + ButtonDescriptor.Create("OK", _ => AddActivityAsync(activityInfo, sourceActivityId, targetActivityId, outcome), true)); } private async ValueTask OnActivityClick(MouseEventArgs e) diff --git a/src/server/Elsa.Server.Api/Endpoints/WorkflowDefinitions/List.cs b/src/server/Elsa.Server.Api/Endpoints/WorkflowDefinitions/List.cs index 394f79ae7..ef1dfc019 100644 --- a/src/server/Elsa.Server.Api/Endpoints/WorkflowDefinitions/List.cs +++ b/src/server/Elsa.Server.Api/Endpoints/WorkflowDefinitions/List.cs @@ -33,7 +33,7 @@ namespace Elsa.Server.Api.Endpoints.WorkflowDefinitions [SwaggerResponseExample(StatusCodes.Status200OK, typeof(WorkflowDefinitionPagedListExample))] [SwaggerOperation( Summary = "Returns a list of workflow definitions.", - Description = "Returns paginated a list of workflow definition using the specified workflow definition ID and optional version options. When no version options are specified, the latest version is returned.", + Description = "Returns paginated a list of workflow definitions. When no version options are specified, the latest versions are returned.", OperationId = "WorkflowDefinitions.List", Tags = new[] { "WorkflowDefinitions" }) ] @@ -41,7 +41,8 @@ namespace Elsa.Server.Api.Endpoints.WorkflowDefinitions { version ??= VersionOptions.Latest; var totalCount = await _workflowDefinitionManager.CountAsync(version, cancellationToken); - var items = await _workflowDefinitionManager.ListAsync(page, pageSize, version, cancellationToken); + var skip = page * pageSize; + var items = await _workflowDefinitionManager.ListAsync(skip, pageSize, version, cancellationToken); var pagedList = new PagedList(items.ToList(), page, pageSize, totalCount); return Json(pagedList, _serializer.GetSettings()); diff --git a/src/server/Elsa.Server.Api/Endpoints/WorkflowRegistry/List.cs b/src/server/Elsa.Server.Api/Endpoints/WorkflowRegistry/List.cs new file mode 100644 index 000000000..5fea6e3c0 --- /dev/null +++ b/src/server/Elsa.Server.Api/Endpoints/WorkflowRegistry/List.cs @@ -0,0 +1,60 @@ +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Elsa.Models; +using Elsa.Serialization; +using Elsa.Server.Api.Models; +using Elsa.Server.Api.Swagger; +using Elsa.Services; +using Elsa.Services.Models; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Swashbuckle.AspNetCore.Annotations; +using Swashbuckle.AspNetCore.Filters; + +namespace Elsa.Server.Api.Endpoints.WorkflowRegistry +{ + [ApiController] + [ApiVersion("1")] + [Route("v{apiVersion:apiVersion}/workflow-registry")] + [Produces("application/json")] + public class List : Controller + { + private readonly IWorkflowRegistry _workflowRegistry; + private readonly IContentSerializer _serializer; + + public List(IWorkflowRegistry workflowRegistry, IContentSerializer serializer) + { + _workflowRegistry = workflowRegistry; + _serializer = serializer; + } + + [HttpGet] + [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(PagedList))] + [SwaggerResponseExample(StatusCodes.Status200OK, typeof(WorkflowDefinitionPagedListExample))] + [SwaggerOperation( + Summary = "Returns a list of workflow blueprints.", + Description = "Returns paginated a list of workflow blueprints. When no version options are specified, the latest version is returned.", + OperationId = "WorkflowBlueprints.List", + Tags = new[] { "WorkflowBlueprints" }) + ] + public async Task>> Handle(int? page = default, int? pageSize = default, VersionOptions? version = default, CancellationToken cancellationToken = default) + { + version ??= VersionOptions.Latest; + var workflowBlueprints = await _workflowRegistry.GetWorkflowsAsync(cancellationToken).Where(x => x.WithVersion(version.Value)).ToListAsync(cancellationToken); + var totalCount = workflowBlueprints.Count; + var skip = page * pageSize; + var items = workflowBlueprints.AsEnumerable(); + + if (skip != null) + items = items.Skip(skip.Value); + + if (pageSize != null) + items = items.Take(pageSize.Value); + + var pagedList = new PagedList(items.ToList(), page, pageSize, totalCount); + + return Json(pagedList, _serializer.GetSettings()); + } + } +} \ No newline at end of file