diff --git a/EnvelopeGenerator.ReceiverUI/Pages/ReportViewer.razor b/EnvelopeGenerator.ReceiverUI/Pages/ReportViewer.razor index 9f46153a..55750e60 100644 --- a/EnvelopeGenerator.ReceiverUI/Pages/ReportViewer.razor +++ b/EnvelopeGenerator.ReceiverUI/Pages/ReportViewer.razor @@ -15,19 +15,47 @@
Unterschrift
-

Bitte fuegen Sie vor dem PDF-Export Ihre Unterschrift in das Feld unten ein.

- +

+ @if(SignatureApplied) { + Die Unterschrift wurde dem Bericht hinzugefuegt. Sie koennen die Unterschrift erneuern oder das signierte PDF exportieren. + } else { + Bitte fuegen Sie vor dem PDF-Export Ihre Unterschrift hinzu. + } +

@if(!string.IsNullOrWhiteSpace(SignatureValidationMessage)) { -
@SignatureValidationMessage
+
@SignatureValidationMessage
} -
- - +
+
+ + +

Bitte unterschreiben Sie im folgenden Feld.

+ + @if(!string.IsNullOrWhiteSpace(PopupValidationMessage)) { +
@PopupValidationMessage
+ } +
+ +
+ + + +
+
+
+ @if(Report is not null) { } @@ -36,7 +64,9 @@ DxReportViewer reportViewer; XtraReport? Report; bool SignatureApplied; + bool SignaturePopupVisible; string? SignatureValidationMessage; + string? PopupValidationMessage; int ViewerKey; protected override async Task OnInitializedAsync() { @@ -45,31 +75,38 @@ await Task.CompletedTask; } - protected override async Task OnAfterRenderAsync(bool firstRender) { - if(firstRender) - await JSRuntime.InvokeVoidAsync("receiverSignature.initialize", "receiver-signature-pad"); + async Task OpenSignaturePopupAsync() { + SignaturePopupVisible = true; + SignatureValidationMessage = null; + PopupValidationMessage = null; + await InvokeAsync(StateHasChanged); + await Task.Delay(50); + await JSRuntime.InvokeVoidAsync("receiverSignature.initialize", "receiver-signature-pad"); } - async Task ClearSignatureAsync() { + async Task RenewSignatureAsync() { + PopupValidationMessage = null; await JSRuntime.InvokeVoidAsync("receiverSignature.clear", "receiver-signature-pad"); - SignatureApplied = false; - SignatureValidationMessage = null; - Report = CreateReportInstance(); - ViewerKey++; + } + + void CloseSignaturePopup() { + PopupValidationMessage = null; + SignaturePopupVisible = false; } async Task ApplySignatureAsync() { var signatureDataUrl = await JSRuntime.InvokeAsync("receiverSignature.getDataUrl", "receiver-signature-pad"); if(string.IsNullOrWhiteSpace(signatureDataUrl)) { - SignatureApplied = false; - SignatureValidationMessage = "Die Unterschrift ist fuer den PDF-Export erforderlich."; + PopupValidationMessage = "Die Unterschrift ist fuer den PDF-Export erforderlich."; return; } + PopupValidationMessage = null; SignatureValidationMessage = null; Report = CreateSignedReportInstance(signatureDataUrl); SignatureApplied = true; + SignaturePopupVisible = false; ViewerKey++; } @@ -94,14 +131,6 @@ return report; } - void ApplySignatureToReport(string signatureDataUrl) { - Report ??= ReportStorage.TryGetReport("LargeDatasetReport", out var savedReport) - ? savedReport - : PredefinedReports.ReportsFactory.GetReport("LargeDatasetReport"); - - AddSignature(Report, signatureDataUrl); - } - static void AddSignature(XtraReport report, string signatureDataUrl) { var imageBytes = Convert.FromBase64String(signatureDataUrl[(signatureDataUrl.IndexOf(',') + 1)..]); using var imageStream = new MemoryStream(imageBytes);