@page "/" Home @page "/ballooning" @using System.Text.Json @using PdfMarker.Models @using PdfMarker.Services @inject PdfStorageService PdfStorage @inject HttpClient Http @inject IJSRuntime JS @rendermode InteractiveServer @**@

Documento

@if (pdf != null) {

Pallini

}

Preview PDF

@if (pdf == null) {

Nessun documento caricato

} else { @* *@
}
@code { UploadedPdf? pdf; List balloons = new(); private ElementReference pdfPreview; protected override async Task OnAfterRenderAsync(bool firstRender) { await JS.InvokeVoidAsync("balloonCanvas.resizeToIframe"); await DrawBalloons(); } void OnUploadProgress(UploadProgressArgs args) { // opzionale } async Task OnUploadComplete(UploadCompleteEventArgs args) { var json = JsonSerializer.Deserialize(args.RawResponse, new JsonSerializerOptions(){PropertyNameCaseInsensitive = true}); // 1️⃣ Recupero risposta upload var uploadResult = JsonSerializer.Deserialize( args.RawResponse, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); pdf = new UploadedPdf { FileName = json.File, PreviewUrl = $"/uploads/{json.File}?v={DateTime.UtcNow.Ticks}" }; // 2️⃣ Chiamata API di process var response = await Http.PostAsJsonAsync( "/api/ballooning/process", new AutoBalloonRequest { FileName = json.File }); if (!response.IsSuccessStatusCode) { // TODO: gestione errore (toast/log) return; } var autoResult = await response.Content .ReadFromJsonAsync(); // 3️⃣ Aggiorna stato UI balloons = autoResult?.Balloons ?? new(); // 4️⃣ Disegno pallini await DrawBalloons(); StateHasChanged(); /*var json = JsonSerializer.Deserialize(args.RawResponse, new JsonSerializerOptions(){PropertyNameCaseInsensitive = true}); pdf = new UploadedPdf { FileName = json.File, PreviewUrl = $"/uploads/{json.File}" }; StateHasChanged();*/ } void AddBalloon() { balloons.Add(new BalloonVm { Number = balloons.Count + 1 }); } void RemoveBalloon(BalloonVm balloon) { balloons.Remove(balloon); } async Task DrawBalloons() { if (balloons == null || balloons.Count == 0) { await JS.InvokeVoidAsync("balloonCanvas.clear"); return; } var payload = balloons.Select(b => new { number = b.Number, x = b.X, y = b.Y, selected = b.Selected }); await JS.InvokeVoidAsync("balloonCanvas.draw", payload); } }