@namespace ScadaLink.CentralUI.Components.Forms @using ScadaLink.Commons.Types.DataConnections @using ScadaLink.Commons.Types.Flattening
@Title
@if (IsLegacy) {
This connection was migrated from a legacy format. Review the settings and Save to update.
}
@RenderFieldError("EndpointUrl")
Authentication
@if (Config.UserIdentity is null) { } else {
@if (Config.UserIdentity.TokenType == OpcUaUserTokenType.UsernamePassword) {
@RenderFieldError("UserIdentity.Username")
} else if (Config.UserIdentity.TokenType == OpcUaUserTokenType.X509Certificate) {
@RenderFieldError("UserIdentity.CertificatePath")
}
}
Timing
@RenderFieldError("SessionTimeoutMs")
@RenderFieldError("OperationTimeoutMs")
Subscription
@RenderFieldError("PublishingIntervalMs")
@RenderFieldError("SamplingIntervalMs")
@RenderFieldError("QueueSize")
@RenderFieldError("KeepAliveCount")
@RenderFieldError("LifetimeCount")
@RenderFieldError("MaxNotificationsPerPublish")
Advanced subscription
@RenderFieldError("SubscriptionDisplayName")
Deadband filter
@if (Config.Deadband is null) { } else {
@RenderFieldError("Deadband.Value")
}
Heartbeat
@if (Config.Heartbeat is null) { } else {
@RenderFieldError("Heartbeat.TagPath")
@RenderFieldError("Heartbeat.MaxSilenceSeconds")
}
@code { [Parameter, EditorRequired] public OpcUaEndpointConfig Config { get; set; } = default!; [Parameter] public string Title { get; set; } = "Endpoint"; [Parameter] public string IdPrefix { get; set; } = "endpoint"; [Parameter] public bool IsLegacy { get; set; } [Parameter] public ValidationResult? Errors { get; set; } private void EnableHeartbeat() => Config.Heartbeat = new OpcUaHeartbeatConfig(); private void EnableAuthentication() => Config.UserIdentity = new OpcUaUserIdentityConfig(); private void EnableDeadband() => Config.Deadband = new OpcUaDeadbandConfig(); private RenderFragment? RenderFieldError(string field) { var match = Errors?.Errors.FirstOrDefault(e => e.EntityName != null && (e.EntityName == field || e.EntityName.EndsWith("." + field))); return match is null ? null : @
@match.Message
; } }