Incremental work on dashboard + API

This commit is contained in:
Sipke Schoorstra 2020-12-06 13:25:37 +01:00
parent 59076c8b1f
commit 05fd146c1a
3 changed files with 67 additions and 6 deletions

View file

@ -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<ActivityEditor>(
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)

View file

@ -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<WorkflowDefinition>(items.ToList(), page, pageSize, totalCount);
return Json(pagedList, _serializer.GetSettings());

View file

@ -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<WorkflowDefinition>))]
[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<ActionResult<PagedList<WorkflowDefinition>>> 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<IWorkflowBlueprint>(items.ToList(), page, pageSize, totalCount);
return Json(pagedList, _serializer.GetSettings());
}
}
}