Skip to content

Commit 8c9a9be

Browse files
committed
docs
1 parent 3db86de commit 8c9a9be

9 files changed

Lines changed: 494 additions & 34 deletions

Documentation/Blazorise.Docs/Models/Snippets.generated.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28116,6 +28116,40 @@ private sealed class InvoiceLineModel
2811628116
}
2811728117
}";
2811828118

28119+
public const string ReportingCsvDataSourceExample = @"@using Blazorise.Reporting.DataSources.Csv
28120+
28121+
<Report>
28122+
<ReportDataSources>
28123+
<ReportCsvDataSource Name=""Products""
28124+
Source=""https://data.example.com/products.csv""
28125+
Encoding=""utf-8""
28126+
Delimiter="",""
28127+
HasHeaderRow />
28128+
</ReportDataSources>
28129+
<ReportPage Name=""Products"">
28130+
<ReportDetail Name=""Product row"" Height=""24"" DataSource=""Products"">
28131+
<ReportField Field=""Name"" X=""30"" Y=""3"" Width=""240"" Height=""18"" />
28132+
<ReportField Field=""Price"" X=""285"" Y=""3"" Width=""90"" Height=""18"" />
28133+
</ReportDetail>
28134+
</ReportPage>
28135+
</Report>";
28136+
28137+
public const string ReportingCsvDataSourceRegistrationExample = @"using Blazorise.Reporting.DataSources.Csv;
28138+
28139+
builder.Services
28140+
.AddBlazorise()
28141+
.AddBlazoriseReporting()
28142+
.AddBlazoriseReportingCsvDataSource(
28143+
httpClient => httpClient.ConfigureHttpClient( client =>
28144+
{
28145+
client.Timeout = TimeSpan.FromSeconds( 30 );
28146+
} ),
28147+
options =>
28148+
{
28149+
options.MaxSourceSize = 5 * 1024 * 1024;
28150+
options.ResourceAllowed = uri => uri.Host.Equals( ""data.example.com"", StringComparison.OrdinalIgnoreCase );
28151+
} );";
28152+
2811928153
public const string ReportingDataSetDataSourceExample = @"@using System.Data
2812028154

2812128155
<Report Editable
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<div class="blazorise-codeblock">
2+
<div class="html"><pre>
3+
<span class="atSign">&#64;</span>using Blazorise.Reporting.DataSources.Csv
4+
5+
<span class="htmlTagDelimiter">&lt;</span><span class="htmlElementName">Report</span><span class="htmlTagDelimiter">&gt;</span>
6+
<span class="htmlTagDelimiter">&lt;</span><span class="htmlElementName">ReportDataSources</span><span class="htmlTagDelimiter">&gt;</span>
7+
<span class="htmlTagDelimiter">&lt;</span><span class="htmlElementName">ReportCsvDataSource</span> <span class="htmlAttributeName">Name</span><span class="htmlOperator">=</span><span class="quot">&quot;</span><span class="htmlAttributeValue">Products</span><span class="quot">&quot;</span>
8+
<span class="htmlAttributeName">Source</span><span class="htmlOperator">=</span><span class="quot">&quot;</span><span class="htmlAttributeValue">https://data.example.com/products.csv</span><span class="quot">&quot;</span>
9+
<span class="htmlAttributeName">Encoding</span><span class="htmlOperator">=</span><span class="quot">&quot;</span><span class="htmlAttributeValue">utf-8</span><span class="quot">&quot;</span>
10+
<span class="htmlAttributeName">Delimiter</span><span class="htmlOperator">=</span><span class="quot">&quot;</span><span class="htmlAttributeValue">,</span><span class="quot">&quot;</span>
11+
<span class="htmlAttributeName">HasHeaderRow</span> <span class="htmlTagDelimiter">/&gt;</span>
12+
<span class="htmlTagDelimiter">&lt;/</span><span class="htmlElementName">ReportDataSources</span><span class="htmlTagDelimiter">&gt;</span>
13+
<span class="htmlTagDelimiter">&lt;</span><span class="htmlElementName">ReportPage</span> <span class="htmlAttributeName">Name</span><span class="htmlOperator">=</span><span class="quot">&quot;</span><span class="htmlAttributeValue">Products</span><span class="quot">&quot;</span><span class="htmlTagDelimiter">&gt;</span>
14+
<span class="htmlTagDelimiter">&lt;</span><span class="htmlElementName">ReportDetail</span> <span class="htmlAttributeName">Name</span><span class="htmlOperator">=</span><span class="quot">&quot;</span><span class="htmlAttributeValue">Product row</span><span class="quot">&quot;</span> <span class="htmlAttributeName">Height</span><span class="htmlOperator">=</span><span class="quot">&quot;</span><span class="htmlAttributeValue">24</span><span class="quot">&quot;</span> <span class="htmlAttributeName">DataSource</span><span class="htmlOperator">=</span><span class="quot">&quot;</span><span class="htmlAttributeValue">Products</span><span class="quot">&quot;</span><span class="htmlTagDelimiter">&gt;</span>
15+
<span class="htmlTagDelimiter">&lt;</span><span class="htmlElementName">ReportField</span> <span class="htmlAttributeName">Field</span><span class="htmlOperator">=</span><span class="quot">&quot;</span><span class="htmlAttributeValue">Name</span><span class="quot">&quot;</span> <span class="htmlAttributeName">X</span><span class="htmlOperator">=</span><span class="quot">&quot;</span><span class="htmlAttributeValue">30</span><span class="quot">&quot;</span> <span class="htmlAttributeName">Y</span><span class="htmlOperator">=</span><span class="quot">&quot;</span><span class="htmlAttributeValue">3</span><span class="quot">&quot;</span> <span class="htmlAttributeName">Width</span><span class="htmlOperator">=</span><span class="quot">&quot;</span><span class="htmlAttributeValue">240</span><span class="quot">&quot;</span> <span class="htmlAttributeName">Height</span><span class="htmlOperator">=</span><span class="quot">&quot;</span><span class="htmlAttributeValue">18</span><span class="quot">&quot;</span> <span class="htmlTagDelimiter">/&gt;</span>
16+
<span class="htmlTagDelimiter">&lt;</span><span class="htmlElementName">ReportField</span> <span class="htmlAttributeName">Field</span><span class="htmlOperator">=</span><span class="quot">&quot;</span><span class="htmlAttributeValue">Price</span><span class="quot">&quot;</span> <span class="htmlAttributeName">X</span><span class="htmlOperator">=</span><span class="quot">&quot;</span><span class="htmlAttributeValue">285</span><span class="quot">&quot;</span> <span class="htmlAttributeName">Y</span><span class="htmlOperator">=</span><span class="quot">&quot;</span><span class="htmlAttributeValue">3</span><span class="quot">&quot;</span> <span class="htmlAttributeName">Width</span><span class="htmlOperator">=</span><span class="quot">&quot;</span><span class="htmlAttributeValue">90</span><span class="quot">&quot;</span> <span class="htmlAttributeName">Height</span><span class="htmlOperator">=</span><span class="quot">&quot;</span><span class="htmlAttributeValue">18</span><span class="quot">&quot;</span> <span class="htmlTagDelimiter">/&gt;</span>
17+
<span class="htmlTagDelimiter">&lt;/</span><span class="htmlElementName">ReportDetail</span><span class="htmlTagDelimiter">&gt;</span>
18+
<span class="htmlTagDelimiter">&lt;/</span><span class="htmlElementName">ReportPage</span><span class="htmlTagDelimiter">&gt;</span>
19+
<span class="htmlTagDelimiter">&lt;/</span><span class="htmlElementName">Report</span><span class="htmlTagDelimiter">&gt;</span>
20+
</pre></div>
21+
</div>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<div class="blazorise-codeblock">
2+
<div class="html"><pre>
3+
using Blazorise.Reporting.DataSources.Csv;
4+
5+
builder.Services
6+
.AddBlazorise()
7+
.AddBlazoriseReporting()
8+
.AddBlazoriseReportingCsvDataSource(
9+
httpClient =&gt; httpClient.ConfigureHttpClient( client =&gt;
10+
{
11+
client.Timeout = TimeSpan.FromSeconds( 30 );
12+
} ),
13+
options =&gt;
14+
{
15+
options.MaxSourceSize = 5 * 1024 * 1024;
16+
options.ResourceAllowed = uri =&gt; uri.Host.Equals( &quot;data.example.com&quot;, StringComparison.OrdinalIgnoreCase );
17+
} );
18+
</pre></div>
19+
</div>

Documentation/Blazorise.Docs/Pages/Docs/Extensions/Reporting/DataSourcesPage.razor

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
@page "/docs/extensions/reporting/data-sources"
22

3-
<Seo Canonical="/docs/extensions/reporting/data-sources" Title="Blazorise Reporting data sources" Description="Bind Blazorise reports to object data sources, nested models, and detail collections." />
3+
<Seo Canonical="/docs/extensions/reporting/data-sources" Title="Blazorise Reporting data sources" Description="Bind Blazorise reports to objects, DataSets, DataTables, and CSV sources." />
44

55
<DocsPageTitle Path="Extensions/Reporting/Data Sources" AddedVersion="New">
66
Reporting data sources
77
</DocsPageTitle>
88

99
<DocsPageLead>
10-
Reports can bind to an object model, DataSet, or DataTable, expose nested fields in the field explorer, and repeat detail bands from enumerable data paths.
10+
Reports can bind to an object model, DataSet, DataTable, or CSV source, expose fields in the field explorer, and repeat detail bands from enumerable data paths.
1111
</DocsPageLead>
1212

1313
<DocsPageSection>
@@ -28,6 +28,36 @@
2828
</DocsPageSectionContent>
2929
</DocsPageSection>
3030

31+
<DocsPageSubtitle>
32+
CSV data source
33+
</DocsPageSubtitle>
34+
35+
<DocsPageParagraph>
36+
Install the <Code>Blazorise.Reporting.DataSources.Csv</Code> package and import the <Code>Blazorise.Reporting.DataSources.Csv</Code> namespace. Register the provider after the core Reporting services. Calling <Code>AddBlazoriseReportingCsvDataSource()</Code> without callbacks uses the default HTTP configuration and a 5 MB source limit.
37+
</DocsPageParagraph>
38+
39+
<DocsPageSection>
40+
<DocsPageSectionHeader Title="Registration">
41+
The optional callbacks configure the HTTP client and decide which remote CSV addresses the application permits.
42+
</DocsPageSectionHeader>
43+
<DocsPageSectionSource Code="ReportingCsvDataSourceRegistrationExample" />
44+
</DocsPageSection>
45+
46+
<DocsPageParagraph>
47+
Set <Code>ReportCsvDataSource.Source</Code> to inline CSV text, a local file path in a server application, or an absolute HTTP or HTTPS URL. The first row supplies field names by default, and the provider infers the field types from the remaining rows.
48+
</DocsPageParagraph>
49+
50+
<DocsPageSection>
51+
<DocsPageSectionHeader Title="Declarative CSV">
52+
Give the source a name and use that name as the data source of a detail band.
53+
</DocsPageSectionHeader>
54+
<DocsPageSectionSource Code="ReportingCsvDataSourceExample" />
55+
</DocsPageSection>
56+
57+
<DocsPageParagraph>
58+
HTTP sources are downloaded by the browser in Blazor WebAssembly and therefore follow browser CORS rules. In server applications they are downloaded by the server, so use <Code>ResourceAllowed</Code> to restrict user-controlled URLs. Server registrations disable and reject redirects by default. If the primary HTTP handler is replaced, keep automatic redirects disabled so an allowed address cannot redirect to a blocked destination.
59+
</DocsPageParagraph>
60+
3161
<DocsPageSection>
3262
<DocsPageSectionHeader Title="Detail data source">
3363
Assign the detail band data source to a collection path. Fields inside the detail band are then resolved against each collection item.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
@using Blazorise.Reporting.DataSources.Csv
2+
3+
<Report>
4+
<ReportDataSources>
5+
<ReportCsvDataSource Name="Products"
6+
Source="https://data.example.com/products.csv"
7+
Encoding="utf-8"
8+
Delimiter=","
9+
HasHeaderRow />
10+
</ReportDataSources>
11+
<ReportPage Name="Products">
12+
<ReportDetail Name="Product row" Height="24" DataSource="Products">
13+
<ReportField Field="Name" X="30" Y="3" Width="240" Height="18" />
14+
<ReportField Field="Price" X="285" Y="3" Width="90" Height="18" />
15+
</ReportDetail>
16+
</ReportPage>
17+
</Report>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using Blazorise.Reporting.DataSources.Csv;
2+
3+
builder.Services
4+
.AddBlazorise()
5+
.AddBlazoriseReporting()
6+
.AddBlazoriseReportingCsvDataSource(
7+
httpClient => httpClient.ConfigureHttpClient( client =>
8+
{
9+
client.Timeout = TimeSpan.FromSeconds( 30 );
10+
} ),
11+
options =>
12+
{
13+
options.MaxSourceSize = 5 * 1024 * 1024;
14+
options.ResourceAllowed = uri => uri.Host.Equals( "data.example.com", StringComparison.OrdinalIgnoreCase );
15+
} );

Documentation/Blazorise.Docs/Pages/Docs/Extensions/Reporting/GettingStartedPage.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@
179179
Learn <Anchor To="docs/extensions/reporting/layout">layout</Anchor> for pages, bands, measurements, panels, lines, rectangles, and layout tables.
180180
</UnorderedListItem>
181181
<UnorderedListItem>
182-
Explore <Anchor To="docs/extensions/reporting/data-sources">data sources</Anchor> for object models, nested fields, collections, DataSet, and DataTable.
182+
Explore <Anchor To="docs/extensions/reporting/data-sources">data sources</Anchor> for object models, nested fields, collections, DataSet, DataTable, and CSV.
183183
</UnorderedListItem>
184184
<UnorderedListItem>
185185
Add <Anchor To="docs/extensions/reporting/expressions">expressions</Anchor>, formula fields, aggregates, and running totals.

0 commit comments

Comments
 (0)