diff --git a/FruitBankHybrid.Shared/Components/Grids/ShippingDocuments/GridShippingDocumentInfoPanel.razor b/FruitBankHybrid.Shared/Components/Grids/ShippingDocuments/GridShippingDocumentInfoPanel.razor index 7f3320f..016d03d 100644 --- a/FruitBankHybrid.Shared/Components/Grids/ShippingDocuments/GridShippingDocumentInfoPanel.razor +++ b/FruitBankHybrid.Shared/Components/Grids/ShippingDocuments/GridShippingDocumentInfoPanel.razor @@ -4,7 +4,7 @@ @using System.IO @inject IJSRuntime JS - + @*
?? @@ -24,33 +24,43 @@ @if (dataItem is ShippingDocument doc) { - +
- - - - - - + + + + + + @foreach (var shippingItem in doc.ShippingItems) { - - - - - - + + + + + + } + + + + + + + + + +
Termék neveNév a dokumentumonRaklapokMennyiségNet.súlyBrt.súlyNév a dokumentumonTermék neveRakl.Menny.Net.súlyBr.súly
@shippingItem.ProductName@shippingItem.NameOnDocument@shippingItem.QuantityOnDocument@shippingItem.NetWeightOnDocument@shippingItem.GrossWeightOnDocument@shippingItem.PalletsOnDocument@shippingItem.NameOnDocument@shippingItem.ProductName@shippingItem.PalletsOnDocument@shippingItem.QuantityOnDocument@shippingItem.NetWeightOnDocument@shippingItem.GrossWeightOnDocument
TOTAL:@doc.ShippingItems.Sum(x => x.PalletsOnDocument)@doc.ShippingItems.Sum(x => x.QuantityOnDocument)@double.Round(doc.ShippingItems.Sum(x => x.NetWeightOnDocument), 1)@double.Round(doc.ShippingItems.Sum(x => x.GrossWeightOnDocument), 1)
-
+
} @@ -65,19 +75,18 @@ @code { - private readonly string[] _pdfFiles = new[] - { + private readonly string[] _pdfFiles = + [ "1_Albaran_AH25007715.pdf", "2_BANK FRA.pdf", "3_BP-30M35_20251113_163816.pdf" - }; + ]; - protected override async Task OnAfterRenderAsync(bool firstRender) + private async Task OnDataItemChangedAsync(object? dataItem) { - if (firstRender) - { - var pdfUrls = _pdfFiles.Select(f => $"_content/FruitBankHybrid.Shared/uploads/{f}").ToArray(); - await JS.InvokeVoidAsync("pdfViewer.renderPdfs", "pdfContainer", pdfUrls); - } + // Véletlenszerű PDF kiválasztása minden sor váltáskor + var randomPdf = _pdfFiles[Random.Shared.Next(_pdfFiles.Length)]; + var pdfUrls = new[] { $"_content/FruitBankHybrid.Shared/uploads/{randomPdf}" }; + await JS.InvokeVoidAsync("pdfViewer.renderPdfs", "pdfContainer", pdfUrls); } } diff --git a/FruitBankHybrid.Shared/Layout/MainLayout.razor.cs b/FruitBankHybrid.Shared/Layout/MainLayout.razor.cs index 812df12..42821e2 100644 --- a/FruitBankHybrid.Shared/Layout/MainLayout.razor.cs +++ b/FruitBankHybrid.Shared/Layout/MainLayout.razor.cs @@ -61,7 +61,8 @@ public partial class MainLayout : LayoutComponentBase } else if (LoggedInModel.IsLoggedIn) { - StateHasChanged(); // Refresh UI after successful auto-login + RefreshMainLayout(); + //StateHasChanged(); // Refresh UI after successful auto-login } } diff --git a/FruitBankHybrid.Shared/wwwroot/js/pdfViewer.js b/FruitBankHybrid.Shared/wwwroot/js/pdfViewer.js index 3f57803..0efe690 100644 --- a/FruitBankHybrid.Shared/wwwroot/js/pdfViewer.js +++ b/FruitBankHybrid.Shared/wwwroot/js/pdfViewer.js @@ -4,6 +4,7 @@ window.pdfViewer = { _currentContainerId: null, _currentPdfUrls: null, _renderTimeout: null, + _lastRenderedUrls: null, // Track what was last rendered renderPdfs: async function (containerId, pdfUrls) { // Wait for container to be available @@ -19,14 +20,24 @@ window.pdfViewer = { return; } + // Check if URLs changed - if same, skip render (use cache) + const urlsKey = JSON.stringify(pdfUrls); + if (this._lastRenderedUrls === urlsKey && this._currentContainerId === containerId) { + console.log('[PDF] Same URLs, skipping render (cached)'); + return; + } + + console.log('[PDF] New URLs detected, rendering:', pdfUrls); + // Store for resize handling this._currentContainerId = containerId; this._currentPdfUrls = pdfUrls; + this._lastRenderedUrls = urlsKey; // Setup resize observer this._setupResizeObserver(container); - // Initial render + // Render await this._doRender(container, pdfUrls); }, @@ -74,17 +85,19 @@ window.pdfViewer = { return; } - console.log('Rendering PDFs at width:', containerWidth); + console.log('[PDF] Rendering at width:', containerWidth, 'URLs:', pdfUrls); for (const url of pdfUrls) { try { - // Use cached PDF if available + // Use cached PDF document if available (PDF.js document cache) let pdf = this._pdfCache.get(url); if (!pdf) { - console.log('Loading PDF:', url); + console.log('[PDF] Loading new PDF:', url); const loadingTask = pdfjsLib.getDocument(url); pdf = await loadingTask.promise; this._pdfCache.set(url, pdf); + } else { + console.log('[PDF] Using cached PDF:', url); } for (let pageNum = 1; pageNum <= pdf.numPages; pageNum++) { @@ -111,7 +124,7 @@ window.pdfViewer = { }).promise; } } catch (error) { - console.error('Error rendering PDF:', url, error); + console.error('[PDF] Error rendering:', url, error); const errorDiv = document.createElement('div'); errorDiv.textContent = 'Hiba a PDF betöltésekor: ' + url + ' - ' + error.message; errorDiv.style.color = 'red'; @@ -129,6 +142,13 @@ window.pdfViewer = { if (this._renderTimeout) { clearTimeout(this._renderTimeout); } + // Keep PDF cache for performance, only clear on full dispose this._pdfCache.clear(); + this._lastRenderedUrls = null; + }, + + // Clear only the render cache (not PDF documents) + clearRenderCache: function() { + this._lastRenderedUrls = null; } };