diff --git a/Repository/Reports/Samples/02-LINQ/204-LINQ Sample - Web Scraping - Countries Tables.srex b/Repository/Reports/Samples/02-LINQ/204-LINQ Sample - Web Scraping - Countries Tables.srex index 9f0f0cf2..10384669 100644 --- a/Repository/Reports/Samples/02-LINQ/204-LINQ Sample - Web Scraping - Countries Tables.srex +++ b/Repository/Reports/Samples/02-LINQ/204-LINQ Sample - Web Scraping - Countries Tables.srex @@ -268,252 +268,6 @@ Report 1 - - true - @using System.IO -@using System.Threading -@using QuestPDF.Infrastructure -@using QuestPDF.Fluent -@using QuestPDF.Helpers -@using Colors = QuestPDF.Helpers.Colors -@using Svg.Skia -@using PuppeteerSharp -@using Seal.Model -@using Seal.Helpers -@using Seal.Renderer -@{ - Report report = Model; - ReportView view = report.CurrentView; - - //Community License, please check https://www.questpdf.com/ - QuestPDF.Settings.License = LicenseType.Community; - - PDFRenderer renderer = view.PDFRenderer; - PDFResult result = new PDFResult(report); - var document = new PDFReportDocument() { Renderer = renderer }; - result.Document = document; - - //Browser Puppeteer - try - { - if (!string.IsNullOrEmpty(report.HTMLResultFilePath) && File.Exists(report.HTMLResultFilePath)) - { - //Download browser, save in it Assemblies\Chrome directory by default - string chromePath = Directory.GetFiles(report.Repository.AssembliesFolder, "chrome.exe", SearchOption.AllDirectories).FirstOrDefault(); - if (string.IsNullOrEmpty(chromePath)) - { - var bfOptions = new BrowserFetcherOptions() { Path = report.Repository.AssembliesFolder }; - await new BrowserFetcher(bfOptions).DownloadAsync(); - chromePath = Directory.GetFiles(report.Repository.AssembliesFolder, "chrome.exe", SearchOption.AllDirectories).FirstOrDefault(); - //Try default location - if (string.IsNullOrEmpty(chromePath)) await new BrowserFetcher().DownloadAsync(); - } - - //Print HTML has been generated for JavaScript Charts or Gauge - result.Browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true, ExecutablePath = chromePath }); - result.Page = await result.Browser.NewPageAsync(); - await result.Page.GoToAsync("file:///" + report.HTMLResultFilePath, null, new WaitUntilNavigation[] { WaitUntilNavigation.Networkidle0, WaitUntilNavigation.DOMContentLoaded }); - Thread.Sleep(200); - } - document.GeneratePdf(report.ResultFilePath); - - } - finally - { - if (result.Page != null) await result.Page.CloseAsync(); - if (result.Browser != null) await result.Browser.CloseAsync(); - } - -} - -@functions { - public class PDFReportDocument : IDocument - { - public PDFRenderer Renderer; - public Report Report { get { return Renderer.Report; } } - public ReportView View { get { return Renderer.View; } } - - public void Compose(IDocumentContainer container) - { - container - .Page(page => - { - page.Margin(30); - - var pageSize = Helper.GetStaticPropertyValue(typeof(PageSizes), Renderer.GetValue("page_size")) as PageSize; - if (pageSize != null) - { - if (Renderer.GetValue("page_orientation") == "landscape") page.Size(pageSize.Landscape()); - else page.Size(pageSize.Portrait()); - } - - page.Header().Element(ComposeHeader); - - page.Content().Column(column => - { - //Content - column.Item().Element(ComposeContent); - - //Information and messages - bool showInformation = Renderer.GetBoolValue("show_information"); - bool showMessages = Renderer.GetBoolValue("show_messages"); - if (showInformation || showMessages) column.Item().PageBreak(); - if (showInformation) ComposeInformation(column.Item()); - if (showMessages) ComposeMessages(column.Item()); - }); - - page.Footer().Element(ComposeFooter); - }); - } - - void ComposeHeader(IContainer container) - { - - container.Row(row => - { - //Title - row.RelativeItem().Column(column => - { - column.Item() - .DefaultTextStyle(x => x.FontSize(Renderer.GetNumericValue("title_font_size")).SemiBold().FontColor(Renderer.GetValue("title_font_color"))) - .Text($"{Report.DisplayNameEx}"); - }); - - //Logo - var configuration = Report.Repository.Configuration; - if (configuration.HasLogo) - { - var logoContainer = row.ConstantItem(80).Height(40); - if (configuration.LogoFilePath.EndsWith("svg")) - { - // var svg = new SKSvg(); - // svg.Load(configuration.LogoFilePath); - //logoContainer.Svg(svg); - logoContainer.Svg(SvgImage.FromFile(configuration.LogoFilePath)); - } - else - { - logoContainer.Image(configuration.LogoFilePath); - } - } - }); - } - void ComposeContent(IContainer container) - { - container - .Column(column => - { - foreach (ReportView childView in View.Views.OrderBy(i => i.SortOrder)) - { - Renderer.Result.Container = column.Item(); - childView.Parse(); - } - }); - } - - void ComposeFooter(IContainer container) - { - //Page numbers and execution date - container - .DefaultTextStyle(x => x.FontSize(Renderer.GetNumericValue("footer_font_size")).FontColor(Colors.Grey.Darken4)) - .Row(row => - { - row.RelativeItem().Text(x => - { - x.Span(Report.Translate("Page") + " "); - x.CurrentPageNumber(); - x.Span(" / "); - x.TotalPages(); - }); - row.RelativeItem().AlignRight().Text($"{Report.ExecutionStartDate}"); - }); - - } - - void ComposeInformation(IContainer container) - { - container.Column(column => - { - column.Item().Row(row => - { - row.AutoItem().Text($"{Report.Translate("Execution date")}: {Report.ExecutionStartDate}"); - row.RelativeItem().AlignRight().Text(string.Format("{0}: {1} {2}", Report.Translate("Duration"), Math.Floor(Report.ExecutionFullDuration.TotalSeconds), Report.Translate("seconds"))); - }); - - column.Item().PaddingTop(10); - column.Item().Table(table => - { - //Column definition - table.ColumnsDefinition(columns => - { - columns.RelativeColumn(4); - columns.RelativeColumn(1); - columns.RelativeColumn(1); - columns.RelativeColumn(2); - columns.RelativeColumn(8); - }); - - //Header - table.Header(header => - { - header.Cell().Element(CellStyle).Text(Report.Translate("Model")); - header.Cell().Element(CellStyle).AlignCenter().Text(Report.Translate("#")); - header.Cell().Element(CellStyle).AlignCenter().Text(Report.Translate("Pages")); - header.Cell().Element(CellStyle).AlignCenter().Text(Report.Translate("Duration")); - header.Cell().Element(CellStyle).Text(Report.Translate("Restrictions")); - static IContainer CellStyle(IContainer container) - { - return container.BorderBottom(1).BorderTop(1).BorderColor(Colors.Grey.Lighten1).Background(Colors.Grey.Lighten4).PaddingVertical(5).DefaultTextStyle(x => x.SemiBold().FontSize(10)); - } - }); - - //Body - foreach (ReportModel item in Report.Models.Where(i => i.ResultTable != null && i.Pages != null)) - { - - table.Cell().Element(CellStyle).Text($"{item.Name} ({item.Connection.Name}"); - table.Cell().Element(CellStyle).AlignCenter().Text($"{item.ResultTable.Rows.Count}"); - table.Cell().Element(CellStyle).AlignCenter().Text($"{item.Pages.Count}"); - table.Cell().Element(CellStyle).AlignCenter().Text($"{item.ExecutionDuration}"); - table.Cell().Element(CellStyle).Text($"{item.RestrictionText}"); - if (item.IsLINQ) - { - foreach (var subModel in item.LINQSubModels) - { - table.Cell().Element(CellStyle).Text($"{item.Name} ({subModel.Connection.Name})"); - table.Cell().Element(CellStyle).Text($"{subModel.ResultTable.Rows.Count})"); - table.Cell().Element(CellStyle).Text($"{subModel.Pages.Count})"); - table.Cell().Element(CellStyle).Text($"{subModel.ExecutionDuration})"); - table.Cell().Element(CellStyle).Text($"{subModel.RestrictionText})"); - } - } - } - static IContainer CellStyle(IContainer container) - { - return container.BorderBottom(1).BorderColor(Colors.Grey.Lighten2).PaddingVertical(5).DefaultTextStyle(x => x.FontSize(10)); - } - - }); - }); - } - - void ComposeMessages(IContainer container) - { - container.Column(column => - { - var fontSize = Renderer.GetNumericValue("messages_font_size"); - column.Item().PaddingTop(10); - - column.Item() - .Border(0) - .BorderColor(Colors.Grey.Lighten1).Background(Colors.Grey.Lighten4).PaddingVertical(5) - .DefaultTextStyle(x => x.FontSize(fontSize)) - .Text(Report.ExecutionMessages.Trim()); - }); - } - } -} - false