Skip to content

Commit

Permalink
⚡️ C# script editor intellisense #92
Browse files Browse the repository at this point in the history
  • Loading branch information
jxnkwlp committed Feb 4, 2024
1 parent c599727 commit fa8488b
Show file tree
Hide file tree
Showing 19 changed files with 859 additions and 916 deletions.
391 changes: 104 additions & 287 deletions .editorconfig

Large diffs are not rendered by default.

Expand Up @@ -11,6 +11,7 @@
using Elsa.Services;
using Elsa.Services.Models;
using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.Logging;
using Passingwind.Abp.ElsaModule.Common;
using Passingwind.Abp.ElsaModule.CSharp;
using Passingwind.Abp.ElsaModule.Permissions;
Expand Down Expand Up @@ -128,12 +129,20 @@ public async Task<WorkflowDesignerCSharpLanguageCompletionProviderResultDto> CSh

var workflowDefinition = _storeMapper.MapToModel(version, definition);

var result = await _workflowCSharpEditorService.GetCompletionAsync(workflowDefinition, input.Id, input.Text, input.Position);
try
{
var result = await _workflowCSharpEditorService.GetCompletionAsync(workflowDefinition, input.Id, input.Text, input.Position);

return new WorkflowDesignerCSharpLanguageCompletionProviderResultDto
return new WorkflowDesignerCSharpLanguageCompletionProviderResultDto
{
Items = result?.Items ?? new List<WorkflowCSharpEditorCompletionItem>(),
};
}
catch (Exception ex)
{
Items = result?.Items ?? new List<WorkflowCSharpEditorCompletionItem>(),
};
Logger.LogError(ex, "Get csharp language completions failed.");
return new WorkflowDesignerCSharpLanguageCompletionProviderResultDto();
}
}

public async Task<WorkflowDesignerCSharpLanguageHoverProviderResultDto> CSharpLanguageHoverProviderAsync(Guid id, WorkflowDesignerCSharpLanguageHoverProviderRequestDto input)
Expand All @@ -143,17 +152,27 @@ public async Task<WorkflowDesignerCSharpLanguageHoverProviderResultDto> CSharpLa

var workflowDefinition = _storeMapper.MapToModel(version, definition);

var result = await _workflowCSharpEditorService.GetHoverInfoAsync(workflowDefinition, input.Id, input.Text, input.Position);

if (result == null)
return null;

return new WorkflowDesignerCSharpLanguageHoverProviderResultDto
try
{
Information = result.Information,
OffsetFrom = result.OffsetFrom,
OffsetTo = result.OffsetTo,
};
var result = await _workflowCSharpEditorService.GetHoverInfoAsync(workflowDefinition, input.Id, input.Text, input.Position);

if (result == null)
{
return null;
}

return new WorkflowDesignerCSharpLanguageHoverProviderResultDto
{
Information = result.Information,
OffsetFrom = result.OffsetFrom,
OffsetTo = result.OffsetTo,
};
}
catch (Exception ex)
{
Logger.LogError(ex, "Get csharp language hover info failed.");
return null;
}
}

public async Task<WorkflowDesignerCSharpLanguageSignatureProviderResultDto> CSharpLanguageSignatureProviderAsync(Guid id, WorkflowDesignerCSharpLanguageSignatureProviderRequestDto input)
Expand All @@ -163,17 +182,25 @@ public async Task<WorkflowDesignerCSharpLanguageSignatureProviderResultDto> CSha

var workflowDefinition = _storeMapper.MapToModel(version, definition);

var result = await _workflowCSharpEditorService.GetSignaturesAsync(workflowDefinition, input.Id, input.Text, input.Position);
try
{
var result = await _workflowCSharpEditorService.GetSignaturesAsync(workflowDefinition, input.Id, input.Text, input.Position);

if (result == null)
return null;
if (result == null)
return null;

return new WorkflowDesignerCSharpLanguageSignatureProviderResultDto
return new WorkflowDesignerCSharpLanguageSignatureProviderResultDto
{
Signatures = result.Signatures,
ActiveParameter = result.ActiveParameter,
ActiveSignature = result.ActiveSignature,
};
}
catch (Exception ex)
{
Signatures = result.Signatures,
ActiveParameter = result.ActiveParameter,
ActiveSignature = result.ActiveSignature,
};
Logger.LogError(ex, "Get csharp language signature failed.");
return null;
}
}

public async Task<WorkflowDesignerCSharpLanguageAnalysisResultDto> CSharpLanguageCodeAnalysisAsync(Guid id, WorkflowDesignerCSharpLanguageAnalysisRequestDto input)
Expand All @@ -183,12 +210,20 @@ public async Task<WorkflowDesignerCSharpLanguageAnalysisResultDto> CSharpLanguag

var workflowDefinition = _storeMapper.MapToModel(version, definition);

var result = await _workflowCSharpEditorService.GetCodeAnalysisAsync(workflowDefinition, input.Id, input.Text);
try
{
var result = await _workflowCSharpEditorService.GetCodeAnalysisAsync(workflowDefinition, input.Id, input.Text);

return new WorkflowDesignerCSharpLanguageAnalysisResultDto
return new WorkflowDesignerCSharpLanguageAnalysisResultDto
{
Items = result?.Items ?? new List<WorkflowCSharpEditorCodeAnalysis>(),
};
}
catch (Exception ex)
{
Items = result?.Items ?? new List<WorkflowCSharpEditorCodeAnalysis>(),
};
Logger.LogError(ex, "Get csharp language analysis failed.");
return new WorkflowDesignerCSharpLanguageAnalysisResultDto();
}
}

public async Task<WorkflowDesignerCSharpLanguageFormatterResult> CSharpLanguageCodeFormatterAsync(WorkflowDesignerCSharpLanguageFormatterRequestDto input)
Expand Down
Expand Up @@ -36,7 +36,7 @@ public async Task<object> EvaluateAsync(string expression, Type returnType, Acti
CSharpScriptConfigureNotification scriptConfigure = new(expression);
await _mediator.Publish(scriptConfigure, cancellationToken);

string scriptId = $"{context.WorkflowExecutionContext.WorkflowBlueprint.VersionId}:{context.ActivityId}";
string scriptId = $"{context.WorkflowExecutionContext.WorkflowBlueprint.VersionId}_{context.ActivityId}".Replace("-", null);

_logger.LogDebug("Evaluate csharp code with id '{ScriptId}' ", scriptId);

Expand All @@ -47,7 +47,7 @@ public async Task<object> EvaluateAsync(string expression, Type returnType, Acti

Stopwatch sw = Stopwatch.StartNew();

object resultValue = await _cSharpScriptHost.RunAsync(scriptContext, cancellationToken: cancellationToken);
var resultValue = await _cSharpScriptHost.RunAsync(scriptContext, cancellationToken: cancellationToken);

sw.Stop();

Expand Down

0 comments on commit fa8488b

Please sign in to comment.