From 18ea2b0933f24ee35ac678010221bbdfdaa76064 Mon Sep 17 00:00:00 2001 From: Svetoslav Dimitrov Date: Mon, 15 Jun 2020 14:50:47 +0300 Subject: [PATCH 1/4] docs(chart): initial commit of the events article --- components/chart/events.md | 50 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 components/chart/events.md diff --git a/components/chart/events.md b/components/chart/events.md new file mode 100644 index 0000000000..63e0859d4c --- /dev/null +++ b/components/chart/events.md @@ -0,0 +1,50 @@ +--- +title: Events +page_title: Chart for Blazor | Events +description: Events in the Charts for Blazor +slug: chart-events +tags: telerik,blazor,chart,events,event +published: true +position: 32 +--- + +# Chart Events + +This article explains the available events for the Telerik Chart for Blazor. + + +## OnSeriesClick + +The `OnSeriesClick` event fires as a response to the user click on a ``. + +It exposes a `ChartSeriesClickEventArgs` object which provides the following data: + +* `DataItem` - the data item for the clicked series. You may need to cast it to its type. + * For aggregated fields it will contain the aggregated value for the corresponding series only. The other fields will be equal to the default values set in the model class. +* `SeriesIndex` - the index of the clicked ``. +* `SeriesName` - bound to the `Name` parameter of the clicked ``. + +### Examples + +These examples showcase the different applications of the `OnSeriesClick` event. + +* [Basic Configuration](#basic-configuration) +* [Load Additional Data Based on User Click](#load-additional-data-based-on-user-click) + +#### Basic Configuration + +````CSHTML + +//This example will show how to extract the data from a Categorical Chart without aggregates. + +```` + +#### Load Additional Data Based on User Click + +````CSHTML + +//This example will show to get additional data for the chart on click and draw another chart based on that data. That could be also done as a demo with the SalesOrderHeader and SalesDetails (might be wrong on the exact name) data as they are linked. E.g. a pie chart draws a categorical chart. On the series click a service will be called with suitable filter. This might also be suitable for the blazor-ui repo so waiting for your feedback. + +//A simpler example of the beforesaid can be used here too. + +```` From c965d11b9c93615ba621ffdd460e7753dd922e05 Mon Sep 17 00:00:00 2001 From: Svetoslav Dimitrov Date: Thu, 18 Jun 2020 14:13:26 +0300 Subject: [PATCH 2/4] chore(chart): improvements on the chart click event docs --- components/chart/events.md | 235 +++++++++++++++++- .../images/onseries-click-basic-example.gif | Bin 0 -> 40852 bytes .../onseries-click-get-model-example.gif | Bin 0 -> 41356 bytes 3 files changed, 226 insertions(+), 9 deletions(-) create mode 100644 components/chart/images/onseries-click-basic-example.gif create mode 100644 components/chart/images/onseries-click-get-model-example.gif diff --git a/components/chart/events.md b/components/chart/events.md index 63e0859d4c..fbda265000 100644 --- a/components/chart/events.md +++ b/components/chart/events.md @@ -19,32 +19,249 @@ The `OnSeriesClick` event fires as a response to the user click on a ``. -* `SeriesName` - bound to the `Name` parameter of the clicked ``. +* `DataItem` - provides the data model of the current series item. You need to cast it to the type from your datasource, which needs to be serializable. + + * If you are using a [Date Axis]({%slug components/chart/date-axis%}), the DataItem will contain the only the aggregated value in the corresponding y-value field, because it is a collection of more than one items. See the Category below for details. + + +* `Category` - provides information on the category the data point is located in. You need to cast it to the type in your data source, for example DateTime, string, int or another type. The Category parameter is applicable to [Categorical Charts]({%slug components/chart/databind%}#series-types). + + * When using a [Date Axis]({%slug components/chart/date-axis%}), you can use it, together with the BaseUnit value of the axis, to filter the data source and obtain the actual data items from the data source in case you want to provide extra information about them. + + +* `Percentage` - applicable to [Donut]({%slug components/chart/types/donut%}), [Pie]({%slug components/chart/types/pie%}) and [Stacked 100%]({%slug components/chart/stack%}#stack-100) Charts - the percentage value of the current data point from the whole. + +* `SeriesIndex` - provides the index of the the data point belongs to. + +* `SeriesName` - bound to the Name parameter of the the data point belongs to. + +* `SeriesColor` - shows the RGB color of the Series the data point belongs to. + +* `CategoryIndex` - shows the index of the data point's x-axis category. ### Examples These examples showcase the different applications of the `OnSeriesClick` event. * [Basic Configuration](#basic-configuration) -* [Load Additional Data Based on User Click](#load-additional-data-based-on-user-click) +* [Get The Data Model For The Clicked Series](#get-the-data-model-for-the-clicked-series) +* [Load Data On Demand Based On Series Click](#load-data-on-demand-based-on-series-click) #### Basic Configuration ````CSHTML +@* Get the Category from which the user clicked. *@ + + + + + + + + + + + + + + + + + + + + + + + + +
+ Clicked from: @logger +
+@code { + public List series1Data = new List() { 10, 2, 5, 6 }; + public List series2Data = new List() { 5, 8, 2, 7 }; + public string[] xAxisItems = new string[] { "Q1", "Q2", "Q3", "Q4" }; + + string logger = String.Empty; + + void OnSeriesClickHandler(ChartSeriesClickEventArgs args) + { + var category = args.Category.ToString(); + logger = category; + } +} + +```` + +>caption The result from the code snippet above + +![onseriesclick basic example](images/onseries-click-basic-example.gif) + +#### Get The Data Model For The Clicked Series + +````CSHTML + +@* Receive the data model based on the series the user clicked on *@ + + + + + + + + + + + + + +@if (!String.IsNullOrEmpty(logger)) +{ +
+ @logger +
+} + +@code { -//This example will show how to extract the data from a Categorical Chart without aggregates. + string logger = String.Empty; + + void OnSeriesClickHandler(ChartSeriesClickEventArgs args) + { + //Get the data model for the clicked series + string item = (args.DataItem as MyPieChartModel).SegmentName; + MyPieChartModel dataModel = pieData.Where(x => x.SegmentName == item).FirstOrDefault(); + + logger = $"Clicked from {dataModel.SegmentName} with value {dataModel.SegmentValue}"; + } + + public class MyPieChartModel + { + public string SegmentName { get; set; } + public double SegmentValue { get; set; } + } + + public List pieData = new List +{ + new MyPieChartModel + { + SegmentName = "Product 1", + SegmentValue = 2 + }, + new MyPieChartModel + { + SegmentName = "Product 2", + SegmentValue = 3 + }, + new MyPieChartModel + { + SegmentName = "Product 3", + SegmentValue = 4 + } + }; +} ```` -#### Load Additional Data Based on User Click +>caption The result from the code snippet above + +![onseriesclick basic example](images/onseries-click-get-model-example.gif) + +#### Load Data On Demand Based On Series Click ````CSHTML -//This example will show to get additional data for the chart on click and draw another chart based on that data. That could be also done as a demo with the SalesOrderHeader and SalesDetails (might be wrong on the exact name) data as they are linked. E.g. a pie chart draws a categorical chart. On the series click a service will be called with suitable filter. This might also be suitable for the blazor-ui repo so waiting for your feedback. +@* Load data on demand based on series click *@ -//A simpler example of the beforesaid can be used here too. + + + + + + + + + + + + +@if (GridData.Any()) +{ +
+ + +
+} + +@code { + public List GridData { get; set; } = new List(); + + async Task OnSeriesClickHandler(ChartSeriesClickEventArgs args) + { + int clickedId = (args.DataItem as MyPieChartModel).SegmentId; + + GridData = await GenerateGridData(clickedId); + } + + async Task> GenerateGridData(int id) + { + GridData = new List() + { + new MyGridModel() + { + Id = id, + ProductManager = $"Product manager {id}", + ProductLaunchDate = DateTime.Today.AddDays(-id), + isActive = id % 2 == 0 ? true : false + } + }; + return await Task.FromResult(GridData); + } + + public List pieData = new List +{ + new MyPieChartModel + { + SegmentId = 1, + SegmentName = "Product 1", + SegmentValue = 2 + }, + new MyPieChartModel + { + SegmentId = 2, + SegmentName = "Product 2", + SegmentValue = 3 + }, + new MyPieChartModel + { + SegmentId = 3, + SegmentName = "Product 3", + SegmentValue = 4 + } + }; + + public class MyPieChartModel + { + public int SegmentId { get; set; } + public string SegmentName { get; set; } + public double SegmentValue { get; set; } + } + + public class MyGridModel + { + public int Id { get; set; } + public string ProductManager { get; set; } + public DateTime ProductLaunchDate { get; set; } + public bool isActive { get; set; } + } +} ```` + +>caption The result from the code snippet above + +![onseriesclick basic example](images/onseries-click-get-model-example.gif) diff --git a/components/chart/images/onseries-click-basic-example.gif b/components/chart/images/onseries-click-basic-example.gif new file mode 100644 index 0000000000000000000000000000000000000000..dacf3e47df3dcfc99fd49c3d950f97bf64353bab GIT binary patch literal 40852 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 literal 0 HcmV?d00001 diff --git a/components/chart/images/onseries-click-get-model-example.gif b/components/chart/images/onseries-click-get-model-example.gif new file mode 100644 index 0000000000000000000000000000000000000000..28a8c617685eb4f7d8a2e5b119a777ca24863cc4 GIT binary patch literal 41356 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 z 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 literal 0 HcmV?d00001 From 0420f22bbe0c7b389ede1e300432e67143419807 Mon Sep 17 00:00:00 2001 From: Svetoslav Dimitrov Date: Thu, 18 Jun 2020 14:36:52 +0300 Subject: [PATCH 3/4] chore(chart): fixes on the chart click event article --- components/chart/events.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/components/chart/events.md b/components/chart/events.md index fbda265000..7beb8a4d8c 100644 --- a/components/chart/events.md +++ b/components/chart/events.md @@ -21,19 +21,19 @@ It exposes a `ChartSeriesClickEventArgs` object which provides the following dat * `DataItem` - provides the data model of the current series item. You need to cast it to the type from your datasource, which needs to be serializable. - * If you are using a [Date Axis]({%slug components/chart/date-axis%}), the DataItem will contain the only the aggregated value in the corresponding y-value field, because it is a collection of more than one items. See the Category below for details. - + * If you are using a [Date Axis]({%slug components/chart/date-axis%}), the `DataItem` will contain the only the aggregated value in the corresponding y-value field, because it is a collection of more than one items. See the `Category` below for details. -* `Category` - provides information on the category the data point is located in. You need to cast it to the type in your data source, for example DateTime, string, int or another type. The Category parameter is applicable to [Categorical Charts]({%slug components/chart/databind%}#series-types). - * When using a [Date Axis]({%slug components/chart/date-axis%}), you can use it, together with the BaseUnit value of the axis, to filter the data source and obtain the actual data items from the data source in case you want to provide extra information about them. +* `Category` - provides information on the category the data point is located in. You need to cast it to the type in your data source, for example `DateTime`, `string`, `int` or another type. The Category parameter is applicable to [Categorical Charts]({%slug components/chart/databind%}#series-types). + + * When using a [Date Axis]({%slug components/chart/date-axis%}), you can use it, together with the `BaseUnit` value of the axis, to filter the data source and obtain the actual data items from the data source in case you want to provide extra information about them. * `Percentage` - applicable to [Donut]({%slug components/chart/types/donut%}), [Pie]({%slug components/chart/types/pie%}) and [Stacked 100%]({%slug components/chart/stack%}#stack-100) Charts - the percentage value of the current data point from the whole. -* `SeriesIndex` - provides the index of the the data point belongs to. +* `SeriesIndex` - provides the index of the `` the data point belongs to. -* `SeriesName` - bound to the Name parameter of the the data point belongs to. +* `SeriesName` - bound to the Name parameter of the `` the data point belongs to. * `SeriesColor` - shows the RGB color of the Series the data point belongs to. @@ -47,7 +47,7 @@ These examples showcase the different applications of the `OnSeriesClick` event. * [Get The Data Model For The Clicked Series](#get-the-data-model-for-the-clicked-series) * [Load Data On Demand Based On Series Click](#load-data-on-demand-based-on-series-click) -#### Basic Configuration +### Basic Configuration ````CSHTML @* Get the Category from which the user clicked. *@ @@ -98,7 +98,7 @@ These examples showcase the different applications of the `OnSeriesClick` event. ![onseriesclick basic example](images/onseries-click-basic-example.gif) -#### Get The Data Model For The Clicked Series +### Get The Data Model For The Clicked Series ````CSHTML @@ -169,7 +169,7 @@ These examples showcase the different applications of the `OnSeriesClick` event. ![onseriesclick basic example](images/onseries-click-get-model-example.gif) -#### Load Data On Demand Based On Series Click +### Load Data On Demand Based On Series Click ````CSHTML From 32de3a01126ac7cb2b1ab1467f01f309bf3512d2 Mon Sep 17 00:00:00 2001 From: Marin Bratanov Date: Fri, 19 Jun 2020 16:38:49 +0300 Subject: [PATCH 4/4] chore(chart): minor improvements on events article --- components/chart/events.md | 41 +++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/components/chart/events.md b/components/chart/events.md index 7beb8a4d8c..297d3dc76b 100644 --- a/components/chart/events.md +++ b/components/chart/events.md @@ -10,14 +10,27 @@ position: 32 # Chart Events -This article explains the available events for the Telerik Chart for Blazor. +This article explains the available events for the Telerik Chart for Blazor: + +* [OnSeriesClick](#onseriesclick) ## OnSeriesClick The `OnSeriesClick` event fires as a response to the user click on a ``. -It exposes a `ChartSeriesClickEventArgs` object which provides the following data: +Below you can find: + +* [Event Arguments](#event-arguments) +* Examples: + * [Basic Click Handler](#basic-click-handler) + * [Get The Data Model For The Clicked Series](#get-the-data-model-for-the-clicked-series) + * [Load Data On Demand Based On Series Click](#load-data-on-demand-based-on-series-click) + + +### Event Arguments + +The event handler receives a `ChartSeriesClickEventArgs` object which provides the following data: * `DataItem` - provides the data model of the current series item. You need to cast it to the type from your datasource, which needs to be serializable. @@ -43,11 +56,11 @@ It exposes a `ChartSeriesClickEventArgs` object which provides the following dat These examples showcase the different applications of the `OnSeriesClick` event. -* [Basic Configuration](#basic-configuration) +* [Basic Click Handler](#basic-click-handler) * [Get The Data Model For The Clicked Series](#get-the-data-model-for-the-clicked-series) * [Load Data On Demand Based On Series Click](#load-data-on-demand-based-on-series-click) -### Basic Configuration +### Basic Click Handler ````CSHTML @* Get the Category from which the user clicked. *@ @@ -78,6 +91,7 @@ These examples showcase the different applications of the `OnSeriesClick` event.
Clicked from: @logger
+ @code { public List series1Data = new List() { 10, 2, 5, 6 }; public List series2Data = new List() { 5, 8, 2, 7 }; @@ -91,17 +105,16 @@ These examples showcase the different applications of the `OnSeriesClick` event. logger = category; } } - ```` >caption The result from the code snippet above ![onseriesclick basic example](images/onseries-click-basic-example.gif) + ### Get The Data Model For The Clicked Series ````CSHTML - @* Receive the data model based on the series the user clicked on *@ @@ -144,7 +157,7 @@ These examples showcase the different applications of the `OnSeriesClick` event. } public List pieData = new List -{ + { new MyPieChartModel { SegmentName = "Product 1", @@ -162,17 +175,16 @@ These examples showcase the different applications of the `OnSeriesClick` event. } }; } - ```` >caption The result from the code snippet above -![onseriesclick basic example](images/onseries-click-get-model-example.gif) +![onseriesclick get data model example](images/onseries-click-get-model-example.gif) + ### Load Data On Demand Based On Series Click ````CSHTML - @* Load data on demand based on series click *@ @@ -223,7 +235,7 @@ These examples showcase the different applications of the `OnSeriesClick` event. } public List pieData = new List -{ + { new MyPieChartModel { SegmentId = 1, @@ -259,9 +271,10 @@ These examples showcase the different applications of the `OnSeriesClick` event. public bool isActive { get; set; } } } - ```` ->caption The result from the code snippet above -![onseriesclick basic example](images/onseries-click-get-model-example.gif) + +## See Also + +* [Live Demo: Chart Events](https://demos.telerik.com/blazor-ui/chart/events)