From 6e76e1ad53ece6de18a4ec86dc7fa0312d64825b Mon Sep 17 00:00:00 2001 From: David-Moreira Date: Mon, 6 Dec 2021 00:27:34 +0000 Subject: [PATCH] Initial commit --- Blazorise.sln | 7 ++ Demos/Blazorise.Demo/Blazorise.Demo.csproj | 1 + Demos/Blazorise.Demo/Pages/Dashboard.razor | 49 ++++++----- Demos/Blazorise.Demo/Pages/_Imports.razor | 3 +- Demos/Blazorise.Demo/_Imports.razor | 1 + .../Models/Snippets.generated.cs | 10 ++- .../Blazorise.Docs/NewFilesToBuild.txt | 1 - .../Code/DataGridScrollToExampleCode.html | 10 ++- .../Blazorise.PivotGrid.csproj | 27 +++++++ .../Blazorise.PivotGrid/PivotGrid.razor | 81 +++++++++++++++++++ .../Blazorise.PivotGrid/PivotGrid.razor.cs | 63 +++++++++++++++ .../Blazorise.PivotGrid/PivotGridColumn.razor | 1 + .../PivotGridColumn.razor.cs | 28 +++++++ .../Blazorise.PivotGrid/PivotGridRow.razor | 1 + .../Blazorise.PivotGrid/PivotGridRow.razor.cs | 25 ++++++ .../Blazorise.PivotGrid/PivotGridValue.razor | 1 + .../PivotGridValue.razor.cs | 27 +++++++ 17 files changed, 301 insertions(+), 35 deletions(-) create mode 100644 Source/Extensions/Blazorise.PivotGrid/Blazorise.PivotGrid.csproj create mode 100644 Source/Extensions/Blazorise.PivotGrid/PivotGrid.razor create mode 100644 Source/Extensions/Blazorise.PivotGrid/PivotGrid.razor.cs create mode 100644 Source/Extensions/Blazorise.PivotGrid/PivotGridColumn.razor create mode 100644 Source/Extensions/Blazorise.PivotGrid/PivotGridColumn.razor.cs create mode 100644 Source/Extensions/Blazorise.PivotGrid/PivotGridRow.razor create mode 100644 Source/Extensions/Blazorise.PivotGrid/PivotGridRow.razor.cs create mode 100644 Source/Extensions/Blazorise.PivotGrid/PivotGridValue.razor create mode 100644 Source/Extensions/Blazorise.PivotGrid/PivotGridValue.razor.cs diff --git a/Blazorise.sln b/Blazorise.sln index fefeec6c41..09f499b90a 100644 --- a/Blazorise.sln +++ b/Blazorise.sln @@ -94,6 +94,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{50E48B EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blazorise.Shared", "Shared\Blazorise.Shared\Blazorise.Shared.csproj", "{692A8724-CF60-4A33-921D-EB8F3A60A2CF}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Blazorise.PivotGrid", "Source\Extensions\Blazorise.PivotGrid\Blazorise.PivotGrid.csproj", "{D023DEA5-D026-45F8-A71F-54DE27C6C5D1}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -244,6 +246,10 @@ Global {692A8724-CF60-4A33-921D-EB8F3A60A2CF}.Debug|Any CPU.Build.0 = Debug|Any CPU {692A8724-CF60-4A33-921D-EB8F3A60A2CF}.Release|Any CPU.ActiveCfg = Release|Any CPU {692A8724-CF60-4A33-921D-EB8F3A60A2CF}.Release|Any CPU.Build.0 = Release|Any CPU + {D023DEA5-D026-45F8-A71F-54DE27C6C5D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D023DEA5-D026-45F8-A71F-54DE27C6C5D1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D023DEA5-D026-45F8-A71F-54DE27C6C5D1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D023DEA5-D026-45F8-A71F-54DE27C6C5D1}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -287,6 +293,7 @@ Global {224FDE0F-A04B-4BF4-8D14-E0D7871B0F1E} = {73CD9574-5204-442D-A67C-CA7B038057C2} {CCA627E3-633E-4F00-854C-F028AB298CF5} = {C2D0A89F-530E-413F-9D0E-9EE2129A2275} {692A8724-CF60-4A33-921D-EB8F3A60A2CF} = {50E48BFC-84F3-480A-BAE7-201E72CE94B9} + {D023DEA5-D026-45F8-A71F-54DE27C6C5D1} = {9731051E-0AA7-411E-A76A-987854F034DA} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {205B3EA4-470F-45DA-911E-346AF7D0A9A5} diff --git a/Demos/Blazorise.Demo/Blazorise.Demo.csproj b/Demos/Blazorise.Demo/Blazorise.Demo.csproj index 18a8aed560..5296a2d0b3 100644 --- a/Demos/Blazorise.Demo/Blazorise.Demo.csproj +++ b/Demos/Blazorise.Demo/Blazorise.Demo.csproj @@ -11,6 +11,7 @@ + diff --git a/Demos/Blazorise.Demo/Pages/Dashboard.razor b/Demos/Blazorise.Demo/Pages/Dashboard.razor index 4ae8183cda..3203a2df37 100644 --- a/Demos/Blazorise.Demo/Pages/Dashboard.razor +++ b/Demos/Blazorise.Demo/Pages/Dashboard.razor @@ -1,30 +1,29 @@ @page "/" @inject IVersionProvider VersionProvider -Blazorise - - Blazorise is a component library built on top of Blazor and CSS frameworks like Bootstrap, Bulma, Ant Design, and Material. It can be used to build responsive, single-page web applications. - + + + + + + + + + + + + + - - - Note: - - - This is a demo application for Blazorise used to show basic example for most of the components and extensions. - - - Full source code for this demo can be found on GitHub. - - - If you wish to learn more about Blazorise please go to the official documentation. - - + +@code { + [Inject] EmployeeData EmployeeData { get; set; } - - On the left sidebar you can see the Blazorise components and extensions in action. - -
- - Demo application for: Blazorise @($"v{VersionProvider.MilestoneVersion}") - \ No newline at end of file + private IEnumerable inMemoryData; + + protected override async Task OnInitializedAsync() + { + inMemoryData = (await EmployeeData.GetDataAsync().ConfigureAwait(false)).Take(25); + await base.OnInitializedAsync(); + } +} \ No newline at end of file diff --git a/Demos/Blazorise.Demo/Pages/_Imports.razor b/Demos/Blazorise.Demo/Pages/_Imports.razor index c31c3ded7c..b542ce055f 100644 --- a/Demos/Blazorise.Demo/Pages/_Imports.razor +++ b/Demos/Blazorise.Demo/Pages/_Imports.razor @@ -1,3 +1,4 @@ @layout MainLayout @using Blazorise.Shared.Data -@using Blazorise.Shared.Models \ No newline at end of file +@using Blazorise.Shared.Models +@using Blazorise.PivotGrid \ No newline at end of file diff --git a/Demos/Blazorise.Demo/_Imports.razor b/Demos/Blazorise.Demo/_Imports.razor index 67a447cecb..9fc863bce7 100644 --- a/Demos/Blazorise.Demo/_Imports.razor +++ b/Demos/Blazorise.Demo/_Imports.razor @@ -10,6 +10,7 @@ @using Blazorise.Charts @using Blazorise.Charts.Streaming @using Blazorise.DataGrid +@using Blazorise.PivotGrid @using Blazorise.Sidebar @using Blazorise.Snackbar @using Blazorise.TreeView diff --git a/Documentation/Blazorise.Docs/Models/Snippets.generated.cs b/Documentation/Blazorise.Docs/Models/Snippets.generated.cs index 8737ebc171..0ba2e94987 100644 --- a/Documentation/Blazorise.Docs/Models/Snippets.generated.cs +++ b/Documentation/Blazorise.Docs/Models/Snippets.generated.cs @@ -3857,8 +3857,10 @@ private bool RowSelectableHandler( RowSelectableEventArgs rowSelectabl Data=""@employeeList"" @bind-SelectedRow=""@selectedEmployee"" Responsive - Virtualize - VirtualizeOptions=""@(new() { DataGridHeight = ""250px""})""> + ShowPager + FixedHeader + FixedHeaderDataGridMaxHeight=""250px"" + PageSize=""50""> @@ -3885,10 +3887,10 @@ protected override async Task OnInitializedAsync() } private Task ScrollToRow() - => dataGridRef.ScrollToRow(1).AsTask(); + => dataGridRef.ScrollToRow(30).AsTask(); private Task ScrollToPixels() - => dataGridRef.ScrollToPixels(250).AsTask(); + => dataGridRef.ScrollToPixels(500).AsTask(); }"; public const string DataGridSelectingExample = @"Data="@employeeList" @bind-SelectedRow="@selectedEmployee" Responsive - Virtualize - VirtualizeOptions="@(new() { DataGridHeight = "250px"})"> + ShowPager + FixedHeader + FixedHeaderDataGridMaxHeight="250px" + PageSize="50"> <DataGridCommandColumn TItem="Employee" /> <DataGridColumn TItem="Employee" Field="@nameof(Employee.Id)" Caption="#" Sortable="false" /> <DataGridColumn TItem="Employee" Field="@nameof(Employee.FirstName)" Caption="First Name" Editable="true" /> @@ -37,10 +39,10 @@ } private Task ScrollToRow() - => dataGridRef.ScrollToRow(1).AsTask(); + => dataGridRef.ScrollToRow(30).AsTask(); private Task ScrollToPixels() - => dataGridRef.ScrollToPixels(250).AsTask(); + => dataGridRef.ScrollToPixels(500).AsTask(); } diff --git a/Source/Extensions/Blazorise.PivotGrid/Blazorise.PivotGrid.csproj b/Source/Extensions/Blazorise.PivotGrid/Blazorise.PivotGrid.csproj new file mode 100644 index 0000000000..ce5d108499 --- /dev/null +++ b/Source/Extensions/Blazorise.PivotGrid/Blazorise.PivotGrid.csproj @@ -0,0 +1,27 @@ + + + + + net6.0 + enable + enable + + + + blazorise blazor components pivotgrid + + + + true + 1591 + + + + + + + + + + + diff --git a/Source/Extensions/Blazorise.PivotGrid/PivotGrid.razor b/Source/Extensions/Blazorise.PivotGrid/PivotGrid.razor new file mode 100644 index 0000000000..eacb87f0bb --- /dev/null +++ b/Source/Extensions/Blazorise.PivotGrid/PivotGrid.razor @@ -0,0 +1,81 @@ +@typeparam TItem +@attribute [CascadingTypeParameter(nameof(TItem))] + + @PivotGridColumns + @PivotGridRows + @PivotGridValues + + +@*Example: *@ + + + + + + + + + + + + + + + + + + + + + + + + + +
...(Col Year)2021 - click expands into more trs with detail(Col Year)2022 - click expands into more trs with detail
...(Data)Amount(Data)Count
(row) Africa - click expands into more trs with detail1005
(row) Asia - click expands into more trs with detail30009
+ + + + @*Cols*@ + + + @foreach (var colGroup in colGroups) + { + + @colGroup + + } + + + @*Values*@ + + + @for (var i = 0; i < colGroups.Count; i++) + { + @foreach (var value in Values) + { + + @value.Caption + + } + } + + + + @foreach (var rowGroup in rowGroups) + { + + @rowGroup + @*Iterate data vs no. columns?*@ + + } + + + + + +
+@code { + private List rowGroups = new() { "Africa", "Asia" }; + private List colGroups = new() { "2021", "2022" }; +} \ No newline at end of file diff --git a/Source/Extensions/Blazorise.PivotGrid/PivotGrid.razor.cs b/Source/Extensions/Blazorise.PivotGrid/PivotGrid.razor.cs new file mode 100644 index 0000000000..0c7db01c3f --- /dev/null +++ b/Source/Extensions/Blazorise.PivotGrid/PivotGrid.razor.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Components; + +namespace Blazorise.PivotGrid +{ + public partial class PivotGrid : ComponentBase + { + + [Parameter] + public IEnumerable Data { get; set; } + + + protected List> Values { get; set; } = new(); + protected List> Columns { get; set; } = new(); + protected List> Rows { get; set; } = new(); + + + [Parameter] + public RenderFragment PivotGridColumns { get; set; } + + [Parameter] + public RenderFragment PivotGridRows { get; set; } + + [Parameter] + public RenderFragment PivotGridValues { get; set; } + + + + public void AddColumn( PivotGridColumn column ) + { + Columns.Add( column ); + } + + public bool RemoveColumn( PivotGridColumn column ) + { + return Columns.Remove( column ); + } + + public void AddRow( PivotGridRow row ) + { + Rows.Add( row ); + } + + public bool RemoveRow( PivotGridRow row ) + { + return Rows.Remove( row ); + } + + public void AddValue( PivotGridValue value ) + { + Values.Add( value ); + } + + public bool RemoveValue( PivotGridValue value ) + { + return Values.Remove( value ); + } + } +} diff --git a/Source/Extensions/Blazorise.PivotGrid/PivotGridColumn.razor b/Source/Extensions/Blazorise.PivotGrid/PivotGridColumn.razor new file mode 100644 index 0000000000..8b284a79f9 --- /dev/null +++ b/Source/Extensions/Blazorise.PivotGrid/PivotGridColumn.razor @@ -0,0 +1 @@ +@typeparam TItem \ No newline at end of file diff --git a/Source/Extensions/Blazorise.PivotGrid/PivotGridColumn.razor.cs b/Source/Extensions/Blazorise.PivotGrid/PivotGridColumn.razor.cs new file mode 100644 index 0000000000..74a6677e87 --- /dev/null +++ b/Source/Extensions/Blazorise.PivotGrid/PivotGridColumn.razor.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Components; + +namespace Blazorise.PivotGrid +{ + public partial class PivotGridColumn : ComponentBase + { + + [CascadingParameter] + public PivotGrid ParentPivotGrid { get; set; } + + [Parameter] + public string Field { get; set; } + + [Parameter] + public string Caption { get; set; } + + protected override void OnInitialized() + { + base.OnInitialized(); + ParentPivotGrid?.AddColumn( this ); + } + } +} diff --git a/Source/Extensions/Blazorise.PivotGrid/PivotGridRow.razor b/Source/Extensions/Blazorise.PivotGrid/PivotGridRow.razor new file mode 100644 index 0000000000..ceee4b8d82 --- /dev/null +++ b/Source/Extensions/Blazorise.PivotGrid/PivotGridRow.razor @@ -0,0 +1 @@ +@typeparam TItem diff --git a/Source/Extensions/Blazorise.PivotGrid/PivotGridRow.razor.cs b/Source/Extensions/Blazorise.PivotGrid/PivotGridRow.razor.cs new file mode 100644 index 0000000000..6e0122cf33 --- /dev/null +++ b/Source/Extensions/Blazorise.PivotGrid/PivotGridRow.razor.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Components; + +namespace Blazorise.PivotGrid +{ + public partial class PivotGridRow : ComponentBase + { + + [CascadingParameter] + public PivotGrid ParentPivotGrid { get; set; } + + [Parameter] + public string Field { get; set; } + + protected override void OnInitialized() + { + base.OnInitialized(); + ParentPivotGrid?.AddRow( this ); + } + } +} diff --git a/Source/Extensions/Blazorise.PivotGrid/PivotGridValue.razor b/Source/Extensions/Blazorise.PivotGrid/PivotGridValue.razor new file mode 100644 index 0000000000..ceee4b8d82 --- /dev/null +++ b/Source/Extensions/Blazorise.PivotGrid/PivotGridValue.razor @@ -0,0 +1 @@ +@typeparam TItem diff --git a/Source/Extensions/Blazorise.PivotGrid/PivotGridValue.razor.cs b/Source/Extensions/Blazorise.PivotGrid/PivotGridValue.razor.cs new file mode 100644 index 0000000000..b2ed2b98b2 --- /dev/null +++ b/Source/Extensions/Blazorise.PivotGrid/PivotGridValue.razor.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Components; + +namespace Blazorise.PivotGrid +{ + public partial class PivotGridValue : ComponentBase + { + + [CascadingParameter] + public PivotGrid ParentPivotGrid { get; set; } + + [Parameter] + public string Field { get; set; } + [Parameter] + public string Caption { get; set; } + + protected override void OnInitialized() + { + base.OnInitialized(); + ParentPivotGrid?.AddValue( this ); + } + } +}