parent
11de05173e
commit
43973b408c
|
|
@ -24,6 +24,10 @@ namespace Elsa.Scripting.JavaScript.Handlers
|
|||
engine.SetValue(
|
||||
"instantFromDateTimeUtc",
|
||||
(Func<DateTime, Instant>) Instant.FromDateTimeUtc);
|
||||
|
||||
engine.SetValue(
|
||||
"instantFromUtc",
|
||||
(Func<int, int, int, int, int, int, Instant>) Instant.FromUtc);
|
||||
|
||||
engine.SetValue(
|
||||
"currentInstant",
|
||||
|
|
@ -55,12 +59,12 @@ namespace Elsa.Scripting.JavaScript.Handlers
|
|||
);
|
||||
|
||||
engine.SetValue(
|
||||
"plus",
|
||||
"addDurationTo",
|
||||
(Func<Instant, Duration, Instant>) ((instant, duration) => instant.Plus(duration))
|
||||
);
|
||||
|
||||
engine.SetValue(
|
||||
"minus",
|
||||
"subtractDurationFrom",
|
||||
(Func<Instant, Duration, Instant>) ((instant, duration) => instant.Minus(duration))
|
||||
);
|
||||
|
||||
|
|
@ -86,7 +90,7 @@ namespace Elsa.Scripting.JavaScript.Handlers
|
|||
|
||||
engine.SetValue(
|
||||
"formatInstant",
|
||||
(Func<Instant, string, CultureInfo, string>) ((instant, format, cultureInfo) =>
|
||||
(Func<Instant, string, CultureInfo?, string>) ((instant, format, cultureInfo) =>
|
||||
instant.ToString(format, cultureInfo ?? CultureInfo.InvariantCulture))
|
||||
);
|
||||
|
||||
|
|
@ -99,18 +103,30 @@ namespace Elsa.Scripting.JavaScript.Handlers
|
|||
"instantFromLocalDate",
|
||||
(Func<LocalDate, Instant>) (value => value.AtStartOfDayInZone(DateTimeZone.Utc).ToInstant())
|
||||
);
|
||||
|
||||
engine.SetValue(
|
||||
"durationBetween",
|
||||
(Func<Instant, Instant, Duration>) ((a, b) => a - b)
|
||||
);
|
||||
|
||||
engine.SetValue(
|
||||
"periodFromNow",
|
||||
(Func<Instant, Period>) GetPeriodFromNow
|
||||
);
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
private LocalDateTime GetStartOfMonth(Instant instant)
|
||||
private LocalDateTime GetStartOfMonth(Instant instant) => GetStartOfMonth(instant.InUtc().LocalDateTime);
|
||||
private LocalDateTime GetStartOfMonth(LocalDateTime localDateTime) => localDateTime.With(DateAdjusters.StartOfMonth);
|
||||
|
||||
private Period GetPeriodFromNow(Instant pastInstant)
|
||||
{
|
||||
return GetStartOfMonth(instant.InUtc().LocalDateTime);
|
||||
}
|
||||
|
||||
private LocalDateTime GetStartOfMonth(LocalDateTime localDateTime)
|
||||
{
|
||||
return localDateTime.With(DateAdjusters.StartOfMonth);
|
||||
var now = _clock.GetCurrentInstant();
|
||||
var today = now.InUtc().Date;
|
||||
var pastDate = pastInstant.InUtc().Date;
|
||||
var period = Period.Between(pastDate, today);
|
||||
return period;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Elsa.Scripting.JavaScript.Events;
|
||||
using Elsa.Services;
|
||||
using MediatR;
|
||||
|
||||
namespace Elsa.Scripting.JavaScript.Handlers
|
||||
{
|
||||
public class RenderJavaScriptDateTimeTypeDefinitions : INotificationHandler<RenderingTypeScriptDefinitions>
|
||||
{
|
||||
private readonly IActivityTypeService _activityTypeService;
|
||||
|
||||
public RenderJavaScriptDateTimeTypeDefinitions(IActivityTypeService activityTypeService)
|
||||
{
|
||||
_activityTypeService = activityTypeService;
|
||||
}
|
||||
|
||||
public async Task Handle(RenderingTypeScriptDefinitions notification, CancellationToken cancellationToken)
|
||||
{
|
||||
var output = notification.Output;
|
||||
|
||||
output.AppendLine("declare function instantFromDateTimeUtc(dateTime: DateTime): Instant");
|
||||
output.AppendLine("declare function instantFromUtc(year: number, month: number, day: number, hour?: number, minute?: number, second?: number): Instant");
|
||||
output.AppendLine("declare function currentInstant(): Instant;");
|
||||
output.AppendLine("declare function currentYear(): number;");
|
||||
output.AppendLine("declare function startOfMonth(instant?: Instant): LocalDate;");
|
||||
output.AppendLine("declare function endOfMonth(instant?: Instant): LocalDate;");
|
||||
output.AppendLine("declare function startOfPreviousMonth(instant?: Instant): LocalDate;");
|
||||
output.AppendLine("declare function addDurationTo(instant: Instant, duration: Duration): Instant;");
|
||||
output.AppendLine("declare function subtractDurationFrom(instant: Instant, duration: Duration): Instant;");
|
||||
output.AppendLine("declare function durationFromSeconds(seconds: number): Duration;");
|
||||
output.AppendLine("declare function durationFromMinutes(minutes: number): Duration;");
|
||||
output.AppendLine("declare function durationFromHours(hours: number): Duration;");
|
||||
output.AppendLine("declare function durationFromDays(days: number): Duration;");
|
||||
output.AppendLine("declare function formatInstant(instant: Instant, format: string, culture?: CultureInfo): string;");
|
||||
output.AppendLine("declare function localDateFromInstant(instant: Instant): LocalDate;");
|
||||
output.AppendLine("declare function instantFromLocalDate(localDate: LocalDate): LocalDate;");
|
||||
output.AppendLine("declare function durationBetween(a: Instant, b: Instant): Duration;");
|
||||
output.AppendLine("declare function periodFromNow(pastInstant: Instant): Period;");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -13,12 +13,10 @@ namespace Elsa.Scripting.JavaScript.Handlers
|
|||
{
|
||||
public class RenderJavaScriptTypeDefinitions : INotificationHandler<RenderingTypeScriptDefinitions>
|
||||
{
|
||||
private readonly IConfiguration _configuration;
|
||||
private readonly IActivityTypeService _activityTypeService;
|
||||
|
||||
public RenderJavaScriptTypeDefinitions(IConfiguration configuration, IActivityTypeService activityTypeService)
|
||||
public RenderJavaScriptTypeDefinitions(IActivityTypeService activityTypeService)
|
||||
{
|
||||
_configuration = configuration;
|
||||
_activityTypeService = activityTypeService;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue