From efd8f22ee7043952fa21fdd23c408831f5e7d714 Mon Sep 17 00:00:00 2001 From: rokesh-karthikeyan Date: Tue, 14 Dec 2021 18:18:20 +0530 Subject: [PATCH 1/8] flut-5960-[feature][flutter]: UG for newly added supports --- Flutter/cartesian-charts/callbacks.md | 71 +++++++++++++-------------- Flutter/circular-charts/callbacks.md | 36 ++++++++++++++ Flutter/circular-charts/datalabel.md | 32 ++++++++++++ Flutter/funnel-chart/callbacks.md | 33 +++++++++++++ Flutter/funnel-chart/datalabel.md | 27 ++++++++++ Flutter/pyramid-chart/callbacks.md | 34 +++++++++++++ Flutter/pyramid-chart/datalabel.md | 33 ++++++++++++- 7 files changed, 228 insertions(+), 38 deletions(-) diff --git a/Flutter/cartesian-charts/callbacks.md b/Flutter/cartesian-charts/callbacks.md index 5e092dd78..291e96632 100644 --- a/Flutter/cartesian-charts/callbacks.md +++ b/Flutter/cartesian-charts/callbacks.md @@ -83,42 +83,6 @@ Triggers when the visible range of an axis is changed, i.e. value changes for mi {% endhighlight %} -## onAxisLabelRender - -Triggers while rendering the axis labels. Text and text styles such as color, font size, and font weight can be customized. The [`onAxisLabelRender`](https://pub.dev/documentation/syncfusion_flutter_charts/latest/charts/SfCartesianChart/onAxisLabelRender.html) Callback contains the following arguments. - -* [`text`](https://pub.dev/documentation/syncfusion_flutter_charts/latest/charts/AxisLabelRenderArgs/text.html) - specifies the axis label to be rendered. -* [`value`](https://pub.dev/documentation/syncfusion_flutter_charts/latest/charts/AxisLabelRenderArgs/value.html) - specifies the actual value of the current axis label. -* [`axisName`](https://pub.dev/documentation/syncfusion_flutter_charts/latest/charts/AxisLabelRenderArgs/axisName.html) - specifies the axis name. -* [`orientation`](https://pub.dev/documentation/syncfusion_flutter_charts/latest/charts/AxisLabelRenderArgs/orientation.html) - specifies the current axis orientation. -* [`axis`](https://pub.dev/documentation/syncfusion_flutter_charts/latest/charts/AxisLabelRenderArgs/axis.html) - holds the information about the current axis. -* [`textStyle`](https://pub.dev/documentation/syncfusion_flutter_charts/latest/charts/AxisLabelRenderArgs/textStyle.html) - used to change the text color, size, font family, font style, and font weight. - - -{% highlight dart %} - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Center( - child: SfCartesianChart( - onAxisLabelRender: (AxisLabelRenderArgs args) { - if (args.axisName == 'primaryXAxis') { - args.text = 'Text'; - TextStyle textStyle = args.textStyle; - args.textStyle = textStyle.copyWith(color: Colors.red); - } - } - ) - ) - ); - } - -{% endhighlight %} - -#### See Also - -* [Using dateTime values in y-axis using onAxisLabelRender callback](https://www.syncfusion.com/kb/12224/how-to-use-datetime-values-in-the-y-axis-sfcartesianchart). ## onDataLabelRender @@ -1024,6 +988,41 @@ Triggers when the error bar is being rendered. In this `onRenderDetailsUpdate` c {% endhighlight %} +## OnCreateRenderer + +Used to create the renderer for custom series. + +This is applicable only when the custom series is defined in the sample + and for built-in series types, it is not applicable. + +Renderer created in this will hold the series state and + this should be created for each series. [onCreateRenderer] callback + function should return the renderer class and should not return null. + +Series state will be created only once per series and will not be created +again when we update the series. + +Defaults to `null`. + +{% highlight dart %} + + Widget build(BuildContext context) { + return Container( + child: SfCartesianChart( + series: >[ + LineSeries( + onCreateRenderer:(ChartSeries series){ + return CustomLinerSeriesRenderer(); + } + ), + ], + )); + } + class CustomLinerSeriesRenderer extends LineSeriesRenderer { + // custom implementation here... + } +{% endhighlight %} + ## See Also * [Customize the tooltip using its callback event](https://www.syncfusion.com/kb/11507/how-to-customize-the-tooltip-using-callback-events-sfcartesianchart). diff --git a/Flutter/circular-charts/callbacks.md b/Flutter/circular-charts/callbacks.md index d4c215b29..7444ebd85 100644 --- a/Flutter/circular-charts/callbacks.md +++ b/Flutter/circular-charts/callbacks.md @@ -405,3 +405,39 @@ The callback contains the following argument: The onCreateShader callback is called once while rendering the data points and legend. For further reference on this callback, Check the [`Gradient and ImageShader`](./circular-series-customization#Gradient-fill-and-shader) section. + + +## OnCreateRenderer + +Used to create the renderer for custom series. + +This is applicable only when the custom series is defined in the sample + and for built-in series types, it is not applicable. + +Renderer created in this will hold the series state and + this should be created for each series. [onCreateRenderer] callback + function should return the renderer class and should not return null. + +Series state will be created only once per series and will not be created +again when we update the series. + +Defaults to `null`. + +{% highlight dart %} + + Widget build(BuildContext context) { + return Container( + child: SfCircularChart( + series: >[ + PieSeries( + onCreateRenderer:(CircularSeries series){ + return CustomPieSeriesRenderer(); + } + ), + ], + )); + } + class CustomPieSeriesRenderer extends PieSeriesRenderer { + // custom implementation here... + } +{% endhighlight %} \ No newline at end of file diff --git a/Flutter/circular-charts/datalabel.md b/Flutter/circular-charts/datalabel.md index 6d623134e..672cd6bda 100644 --- a/Flutter/circular-charts/datalabel.md +++ b/Flutter/circular-charts/datalabel.md @@ -426,3 +426,35 @@ Data label and its connector line in the Circular charts for the point value 0 c If the user didn’t provide text color to the data label, then by default, the saturation color is applied to the data label text. i.e., if the data points background color intensity is dark, then the data label will render in white color (#FFFFFF) and if the data points background color intensity is light, data label will render in black color (#000000). ![label_saturation](images/datalabel/circular_saturation.png) + + +## Over flow mode + +Action on data labels when it’s overflowing from its region area. + +The overflowing data label rendering behavior can be changed based on this. If `overflowMode` property is set to `OverflowMode.none` then the `labelIntersectAction` takes the priority, else +`overflowMode` takes the priority. + + _Note:_ This is applicable for pie, doughnut, pyramid, and funnel series + types alone. + +Defaults to `OverflowMode.none`. + +{% highlight dart %} + + Widget build(BuildContext context) { + return Container( + child: SfCircularChart( + series: >[ + PieSeries( + dataLabelSettings: DataLabelSettings( + isVisible: true, + overflowMode: OverflowMode.trim + ), + ), + ], + ) + ); + } + +![dataLabel_overflow](images/datalabel/circular_overflow.jpg) \ No newline at end of file diff --git a/Flutter/funnel-chart/callbacks.md b/Flutter/funnel-chart/callbacks.md index f45d996f7..4d01015e9 100644 --- a/Flutter/funnel-chart/callbacks.md +++ b/Flutter/funnel-chart/callbacks.md @@ -307,3 +307,36 @@ Triggers when long press on the series point. The [`onPointLongPress`](https://p ); } {% endhighlight %} + +## OnCreateRenderer + +///Used to create the renderer for custom series. + +This is applicable only when the custom series is defined in the sample + and for built-in series types, it is not applicable. + +Renderer created in this will hold the series state and + this should be created for each series. [onCreateRenderer] callback + function should return the renderer class and should not return null. + +Series state will be created only once per series and will not be created +again when we update the series. + +Defaults to `null`. + +{% highlight dart %} + + Widget build(BuildContext context) { + return Container( + child: SfFunnelChart( + series: FunnelSeries( + onCreateRenderer:(FunnelSeries series){ + return CustomFunnelSeriesRenderer(); + } + ), + )); + } + class CustomFunnelSeriesRenderer extends FunnelSeriesRenderer { + // custom implementation here... + } +{% endhighlight %} diff --git a/Flutter/funnel-chart/datalabel.md b/Flutter/funnel-chart/datalabel.md index e72c30e99..bfaa9940f 100644 --- a/Flutter/funnel-chart/datalabel.md +++ b/Flutter/funnel-chart/datalabel.md @@ -165,4 +165,31 @@ If the user didn’t provide text color to the data label, then by default, the ![label_saturation](images/datalabel/funnel_saturation.png) +## Over flow mode +Action on data labels when it’s overflowing from its region area. + +The overflowing data label rendering behavior can be changed based on this. If `overflowMode` property is set to `OverflowMode.none` then the `labelIntersectAction` takes the priority, else +`overflowMode` takes the priority. + + _Note:_ This is applicable for pie, doughnut, pyramid, and funnel series + types alone. + +Defaults to `OverflowMode.none`. + +{% highlight dart %} + + Widget build(BuildContext context) { + return Container( + child: SfFunnelChart( + series: PieSeries( + dataLabelSettings: DataLabelSettings( + isVisible: true, + overflowMode: OverflowMode.trim + ), + ), + ), + ); + } + +![label_overflow](images/datalabel/funnel_overflow.jpg) \ No newline at end of file diff --git a/Flutter/pyramid-chart/callbacks.md b/Flutter/pyramid-chart/callbacks.md index bfab2b38d..c028b7168 100644 --- a/Flutter/pyramid-chart/callbacks.md +++ b/Flutter/pyramid-chart/callbacks.md @@ -309,3 +309,37 @@ Triggers when long press on the series point. The [`onPointLongPress`](https://p ); } {% endhighlight %} + + +## OnCreateRenderer + +Used to create the renderer for custom series. + +This is applicable only when the custom series is defined in the sample + and for built-in series types, it is not applicable. + +Renderer created in this will hold the series state and + this should be created for each series. [onCreateRenderer] callback + function should return the renderer class and should not return null. + +Series state will be created only once per series and will not be created +again when we update the series. + +Defaults to `null`. + +{% highlight dart %} + + Widget build(BuildContext context) { + return Container( + child: SfPyramidChart( + series: PyramidSeries( + onCreateRenderer:(PyramidSeries series){ + return CustomPyramidSeriesRenderer(); + } + ), + )); + } + class CustomPyramidSeriesRenderer extends PyramidSeriesRenderer { + // custom implementation here... + } +{% endhighlight %} \ No newline at end of file diff --git a/Flutter/pyramid-chart/datalabel.md b/Flutter/pyramid-chart/datalabel.md index 0323b9c7f..55ff45a20 100644 --- a/Flutter/pyramid-chart/datalabel.md +++ b/Flutter/pyramid-chart/datalabel.md @@ -242,8 +242,37 @@ Data label and its connector line in the Pyramid charts for the point value 0 ca ![hide_0_value](images/datalabel/dataLabel_0_value.png) -### Data label saturation color +## Data label saturation color If the user didn’t provide text color to the data label, then by default, the saturation color is applied to the data label text. i.e., if the data points background color intensity is dark, then the data label will render in white color (#FFFFFF) and if the data points background color intensity is light, data label will render in black color (#000000). -![label_saturation](images/datalabel/pyramid_saturation.png) \ No newline at end of file +![label_saturation](images/datalabel/pyramid_saturation.png) + +## Over flow mode + +Action on data labels when it’s overflowing from its region area. + +The overflowing data label rendering behavior can be changed based on this. If `overflowMode` property is set to `OverflowMode.none` then the `labelIntersectAction` takes the priority, else +`overflowMode` takes the priority. + + _Note:_ This is applicable for pie, doughnut, pyramid, and funnel series + types alone. + +Defaults to `OverflowMode.none`. + +{% highlight dart %} + + Widget build(BuildContext context) { + return Container( + child: SfPyramidChart( + series: PyramidSeries( + dataLabelSettings: DataLabelSettings( + isVisible: true, + overflowMode: OverflowMode.trim + ), + ), + ) + ); + } + +![label_overflow](images/datalabel/pyramid_overflow.jpg) \ No newline at end of file From a3d67bf8c5219e7447134152259f412f3dcb392a Mon Sep 17 00:00:00 2001 From: rokesh-karthikeyan Date: Tue, 14 Dec 2021 18:30:08 +0530 Subject: [PATCH 2/8] flut-5960-[feature][flutter]: label formatter callback ug --- Flutter/cartesian-charts/callbacks.md | 2 +- Flutter/circular-charts/callbacks.md | 29 ++++++++++++++++++++++++++- Flutter/funnel-chart/callbacks.md | 2 +- Flutter/pyramid-chart/callbacks.md | 2 +- 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/Flutter/cartesian-charts/callbacks.md b/Flutter/cartesian-charts/callbacks.md index 291e96632..8753a339e 100644 --- a/Flutter/cartesian-charts/callbacks.md +++ b/Flutter/cartesian-charts/callbacks.md @@ -988,7 +988,7 @@ Triggers when the error bar is being rendered. In this `onRenderDetailsUpdate` c {% endhighlight %} -## OnCreateRenderer +## onCreateRenderer Used to create the renderer for custom series. diff --git a/Flutter/circular-charts/callbacks.md b/Flutter/circular-charts/callbacks.md index 7444ebd85..8fb055c73 100644 --- a/Flutter/circular-charts/callbacks.md +++ b/Flutter/circular-charts/callbacks.md @@ -407,7 +407,7 @@ The onCreateShader callback is called once while rendering the data points and legend. For further reference on this callback, Check the [`Gradient and ImageShader`](./circular-series-customization#Gradient-fill-and-shader) section. -## OnCreateRenderer +## onCreateRenderer Used to create the renderer for custom series. @@ -440,4 +440,31 @@ Defaults to `null`. class CustomPieSeriesRenderer extends PieSeriesRenderer { // custom implementation here... } +{% endhighlight %} + +## axisLabelFormatter + +Called while rendering each axis label in the chart. + +Provides label text, axis name, orientation of the axis, trimmed text and text styles such as color, + font size, and font weight to the user using the `AxisLabelRenderDetails` class. + +You can customize the text and text style using the `ChartAxisLabel` class and can return it. + + Defaults to `null`. + +{% highlight dart %} + + Widget build(BuildContext context) { + return Container( + child: SfCartesianChart( + primarXAxis: CategoryAxis( + axisLabelFormatter: (AxisLabelRenderDetails details) => axis(details), + ), + )); + } + + ChartAxisLabel axis(AxisLabelRenderDetails details) { + return ChartAxisLabel('axis Label', details.textStyle); + } {% endhighlight %} \ No newline at end of file diff --git a/Flutter/funnel-chart/callbacks.md b/Flutter/funnel-chart/callbacks.md index 4d01015e9..17e4f5003 100644 --- a/Flutter/funnel-chart/callbacks.md +++ b/Flutter/funnel-chart/callbacks.md @@ -308,7 +308,7 @@ Triggers when long press on the series point. The [`onPointLongPress`](https://p } {% endhighlight %} -## OnCreateRenderer +## onCreateRenderer ///Used to create the renderer for custom series. diff --git a/Flutter/pyramid-chart/callbacks.md b/Flutter/pyramid-chart/callbacks.md index c028b7168..92e01e990 100644 --- a/Flutter/pyramid-chart/callbacks.md +++ b/Flutter/pyramid-chart/callbacks.md @@ -311,7 +311,7 @@ Triggers when long press on the series point. The [`onPointLongPress`](https://p {% endhighlight %} -## OnCreateRenderer +## onCreateRenderer Used to create the renderer for custom series. From b09763bb1cc6262037a20d53458ef53c57377a78 Mon Sep 17 00:00:00 2001 From: rokesh-karthikeyan Date: Tue, 14 Dec 2021 18:34:40 +0530 Subject: [PATCH 3/8] flut-5960-[feature][flutter]: review changes --- Flutter/cartesian-charts/callbacks.md | 4 ++-- .../images/datalabel/circular_overflow.jpg | Bin 0 -> 65594 bytes .../images/datalabel/funnel_overflow.jpg | Bin 0 -> 67129 bytes .../images/datalabel/pyramid_overflow.jpg | Bin 0 -> 59120 bytes 4 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 Flutter/circular-charts/images/datalabel/circular_overflow.jpg create mode 100644 Flutter/funnel-chart/images/datalabel/funnel_overflow.jpg create mode 100644 Flutter/pyramid-chart/images/datalabel/pyramid_overflow.jpg diff --git a/Flutter/cartesian-charts/callbacks.md b/Flutter/cartesian-charts/callbacks.md index 8753a339e..34ea81b6f 100644 --- a/Flutter/cartesian-charts/callbacks.md +++ b/Flutter/cartesian-charts/callbacks.md @@ -1012,13 +1012,13 @@ Defaults to `null`. series: >[ LineSeries( onCreateRenderer:(ChartSeries series){ - return CustomLinerSeriesRenderer(); + return CustomLineSeriesRenderer(); } ), ], )); } - class CustomLinerSeriesRenderer extends LineSeriesRenderer { + class CustomLineSeriesRenderer extends LineSeriesRenderer { // custom implementation here... } {% endhighlight %} diff --git a/Flutter/circular-charts/images/datalabel/circular_overflow.jpg b/Flutter/circular-charts/images/datalabel/circular_overflow.jpg new file mode 100644 index 0000000000000000000000000000000000000000..07c79773a951f7729e12093fca7d7045b57a6993 GIT binary patch literal 65594 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

`}a@!uhnR-G8Mde!D@7z<}0&+@938#4@z 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

c4A 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 OG%%V5XrBiD-vj{l;{-tf literal 0 HcmV?d00001 diff --git a/Flutter/funnel-chart/images/datalabel/funnel_overflow.jpg b/Flutter/funnel-chart/images/datalabel/funnel_overflow.jpg new file mode 100644 index 0000000000000000000000000000000000000000..291733b2ecd042782e565f3b14946c71f29a08bc GIT binary patch literal 67129 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 B{o?=t literal 0 HcmV?d00001 diff --git a/Flutter/pyramid-chart/images/datalabel/pyramid_overflow.jpg b/Flutter/pyramid-chart/images/datalabel/pyramid_overflow.jpg new file mode 100644 index 0000000000000000000000000000000000000000..feeda3b9d9dae815542aec24a81fb05398b005f0 GIT binary patch literal 59120 zcmeEv2|Sc*-~R~7Iw=Zagb3NmZb~5)k~Lzog=F8?sT8t?P_jfJ>tsvT$sWqSlYL)e ztb%X<=~@(0{L$kbsb&q@a+bpa_egn53|n zq=+yGwEq#|cddk)@e$E4`vT!%U-k(F1VEth@E`ln34UldKQtH8gFC~sr@8!pNu+z7 z-a}vyfjtEF5ZFWD7X*H-Z3sz7iVA@K=ooOqegeX8I>mm#W5NI;295!~6Y9qV$9~z5 zB{=!54d7?lNATTyLj7{zzVG|sq;EIB@%8*2Uk!)=--GW5odX@%zn^43@c|MN5>nCw zWE3=%6y)R-^oI_EX_y!w%uEc7j4bSYoGh%T*ccg4igBG15EKy+fpAL5hzm*c35y8r zT!es>l$3&;f{v1sPUtw}aiLwm@b5s>2Y{Ys5E2{*?V~0jq$a>ugCM|D5(D0)9S765 z7r{P4BI5ld2S~}tfd&N!fgTeQ?js^3CME*hMg(5K|3O65#D|Uxp51>~&5(rEjz;Ki zSmFUTxtt2xtF24y!bbM@NXd>IrK4v!!NGZwi(5qWw3xVr)it$s@9P`d+B-VCx_f&2Mn=cRCnl$+XJ%2$E30ek8|clgoqhqD;@58d(zD<6 ziyG+HJ|ZGQB9fhc5$tmTHbQD5;^Tt*51mybF|<3(Ds=Y%ja*n_P6a8O@YN++Bl}je zBkUq0Cr~?G`_i-jUdQhJk9zh?$A0vy4@5yo01O@>H3$mY*g6SHx2f3KQDp$=nraGH|CoR@G@^RJ$X036q+jp z@}S?m(KeyG(7kAD6NTz%qVvd5SPR1|k(bY?lvF>3%rEmFFOzpNASkh9g1>iW)^DJh z!<-AlDvs%|*@;Y%942!!b+@0gH10G-ssc7JNZt04+cc)$ZWGq$MMiS$XJ*lS%%1))5`KUCv!j%$gmH$?+ z2qG7%x zsJ@9wijbiovhEjx$>l|9xp~$T3QExhQN+gg&S@X|6iMsdDs0RcE@T&KW7E+lbD)AZ zRBMSB59-T@=H)c@%MPJQ$KkMs;(!-5)rwJ>kJQfktDPaH0sZ_&XK<=?o6qmm4NN<3 z9&FsbigTKbKMxy#Jk8`*N;UDK(p2CJjF_!@AGqzaBH~63xAnf6H)WPOf5Xv$vPe(H ztO3G(ov*#w?mZ3}=Pqia{0SlzqkaXEszIaW7xTLglMs*THA|_5bgDLzjboMF=G{>` zjmp+Fns4$Fne2Ps;X!x0Mb;u@Qx9OHn91Mv6igk`C(Ua9JU*Q%tI5=LY!N&TI>_?v99AMG{)_7gLLJ;#Evz6O!So57JiXbtorn~bN^%a3DOiLdORo! zc|u;%{Eg*VgO@7&+mih_H(Wm4Ob^}+?J6B~_JR~X`Sw@n{G83^)K+U#RsRQQUKVmH zVNQ>kQ75xtpa1EH3hf^)RBYntjBZ_YOg`e&p`GNp^fL(n6rnAO7;uZWJRq$gu@zHw zaDgy`(O%?Kj zzaqtu3hF1Tgre007tM;o)iIZq?Tz9eGW+h6d?SCY*!P(o{N(<5cC!A?^KhXzZIV-| z5;NBy_N=mJXPU^5Sd12tSx1g~ePnyg?(^jB^&B?rwJDid4>}dpO3wV)lyElTW6pB@q;P0ufo1#4MIu+H zu|~D$N%?|5j}W1hUeS>)4~mhOQi^NYs`hx0tG83t!;-L>;R(8mPrehlCCu~yau5>d zu$+hJt16~!#ExvX7QsuQk`g)|Ixc6w?27Sk_)RJDfGw$}+gq}ucu@3)4;2Q>wzW0& z(H_g!;tlwkl3UdDViSKRSKD~u(vp}rl4+NhQ~9c1_TC+{$FS?q0HQyJ z)0JSG>C5Pd7m52+89@5A->YDfL9Z7VmX#Xc^}`8)i5@B9IHI4fGi{#Y{?lyIiRT7b z$wSt(st=wyt1|G56tg8~^P0@lr0;yc>(Em0RBu5jSI8l!KJPNc&5aaG`MxBxM77In z_kM_>x2g;VZpA^)>8=m#y;Jd^taB15m5!#H0TCa_64M8jOewBDClNA??yxcrZM&Q7 zeDk{NJ-cJI#{=jiE2D(Q9fQlSBRCIHiBI3E$u2%oUYKuQVevHD8K)o?|77NViurJ+ zmD+{(+!r`3J^UwCOM~dVX(*+HyLcz{0?kv-MTVUN*CwaSJpP_}^ zSop=2n9D0U)+?{oE=>F&KuPcc1Fr;~Wu?ld5;*mH#MzY4OJs}W#57IcMX!RIkNN7UpLTj5 zBlX(G@shl7{+9>i3V;8)a=EB7DT;GOt}{TTVd~+~-14WPW?N(RNeQ<2PT01t>gG7W z{-J824xAM4An;JPAkZv0b<>-h;Q^>9hq7tG^$(5>dpbKlxR`r6>lCot1nK^}hV znRw7+Xu(T7DE`uBD>jQ0vkYqreO31s{=YfF-R91k%>ol`k|!zekhM%GYi`y9jgb#e zrzhO*r;pOGXE~%Ny=_kUitJ>mQySb1eal4sA>W0EaAstR#i1!?@akK@9U#nWUiStS-3Ph89{IkW@x7KYO)rKqd>2kg?J#j1XH3Q75AjzH400GRsX9{HGF&f+kGQRH0~P zT$Qi&V3`k11{lh-0@KhW_mn_s_8E<bvQ{qt8FrU^qS=LJd}I!U6!7# zga0j$*M4bN16ILN02moZHVTiVHc`<~Xl;E1UZ-2Z5O}o4RAr^XS$PxZ2Q&m9(2Hu@VBeHry+hX_C%wS1_Ra2) z?lhm^M2E4J+1Q>3%p!y4o5VTbequ7@3+`Sj%uOmLNGMRHSJ5zbw=|Y8 z;e^Ukl1aNtx?0&xLVz|c93+HVf}J-Nnn5HFh8rTw7tnq$*boTzO?}Ul41S! zEG{lCd@jO#Huh%xf)WxE`~pJ!LPESi3tk5|Yez#@UTX)oZx=Xk>R@bdVe4pNW6iR2 zK|>=OCr24pCnpON$(x2ZMU6~MM0t%2g-v(`1x*Zj4NZgvc};|cO~gb6#f5GP8nJ$V zKr7o{ZvTf+0QUpBBzex>)DQ>+Y1r7@mi=$Vex&(-d)kldn4ULuG?m?P&F~5e@d}D) z0KuUz?wX%Y`r1aCf2VUlbyoK45dc46?-#TI=vn>)uf3b>3gkVw_TbtT0=sIwM_qex z?FxZiHQuAHJ-Bv-z^)qaQP&<^yFy@BjrXW)53XGyu&c&<)U^lKt`OK&<2~xygKJj^ z?5gn|b?w2mD+G4cc#pdF;Mx@eyK1~gU3+lt3V~fU-lMKPxORoWt{U%A*B)HELSR>o z_o!=Ct6$Zk6`*wbT7ZLDFd|+oi z17b1~lKlrL$S5et$;inmsSX{aq@t!GCqH=PAoXDyT3T8P@KL%WG<1h(XlcHz!axX| zLqtqUOiW5cNlr<#>(`f67>Ke6*$4?(_f}y575w8@VZf><1prGh>}`7(?9sp;4eZgt z9u55CXyD%ZGLvkRN5(^Y$ro!yfQur>1sFS189s1eOV?|!gg zA;A%{LTaGQR=l?-60iDy~orF6`^)vIj`aUr(u=cTe-zK;%0R=z*kX}`4vNl9=AuL2AnewtOFDmVpnmAr>zNuE|^sIEe_AE&V5B zzVqyVOsC#A&_mVjuFW-DwMD0gH@dH?&>|lwZE7!F2UnJlW7A7bfwK67N+t!mA=9qR z#?(5WA463RLgcd#n)bAI(_IOsZNGv@ff_;Sz5J^Cx_whT6}=9W+z}l65b8@f zkU@wC-JY9tpDCwD7h%Z97RdFrxT9Pywk^yWK~MRh2zk7J5+bZ+g^(o8lP-9gRm z>0FQA=baB{BT*oTd^~>8qkRro&TIIetuOxZH~{=&suuDlH3(Ty>XPc}&LvD0VKaI0 zIUdw#VQcH{e-ICP7wkEw=Pia385Bl&=VU9tm09bEcwjSf)msyDlyE8YB36+^ad!2% zYA#f;rfYp|LcN6SWKs#$xmBrk3sf|Q1Af5qnu*tjGnwP&X8kATeNzL8=g{40+O>F4 z4kW0&YShZIN?n$%{J#D>I@F|s?K_Xi+jvmFZmPAABErTdrF( zAUUorzr_7XXd?^e%4>|}>LC3Q^YHUGrr!zW#@++FW0DXpi@m9}u%)M%>q%~U~CC$ZKBbMYi>-I7d2pMvl?pho^I;|@;j@2{qr`WqlJ%V)*U`w zzrcEr#)3VpnEP(H>M+j=NiB}!S*AAAKHo za8{spo3G%ezN|E}bNS^2-x@nSXdmqou~*bNxzekuhry% z#kSfZe?a7lRRo_k@8UskoK|EUhyGlK9624@C9sm>JUr)RPUA(fbBXMwMO+NSY`BXRPuv$m|j9}8k1pVc#dI3mj_-F_7EVG1fCa4p#0 zs$wzwWh@VzEMgfk{1)=SNPAXX5~`g@<`uRX!dF;`;EwB2lc(*m1IFYFO3nWzxf>+I zj^V1kg|@*D3lNl-(IH#ZE+FH&r}R4mmbW8G<^wRz0x#wTg+rBbE2}}}g@siL`p(<; z0BJ403cLeLEdGPGQjhg?fJd{!4>-{odqunF@g+c{7d)RrDFeoEL_9r~V?%x0HEOqT zr*m2wct0@cmv1QCBruJL*tmcL#d*2bNlaHY(ahF5oxc2bIAg5il_8EJ^oe?qjU4{!q=akj>BISMXx9>O7!t0E#F2?L%`S#PCV$S zVgw-h&!FLpMNo7x6lnS6-`0>FZ8kc!#2=c^>!g!@?Gw+X!Zd$OF1UsqT#Hm53A_1_ zU4bfykcaC%%Ld|uDn}#k?h+m}WDiFxQ#-70j=3|fM4EuhvAtY>a(mFS_;JQAbrL99nuAI zLa|--@Twbz=m7N1B*jm*pP5_YT)NLB1#qk80ICA89O}1ii)UQ|Wz$nCpMiGQu6D^G ze{yza^7uDic}Kgcpw&|fbMc~s|!07X|XT; zbCvO}u%1;!LjF)+MvZ%CkXSLi0&Bh1WccJWZ%WjK0W*57BWP)#O|9El$p^P2oahWE z*9z8)R-I@^82A@psdbtC7V&~hEUlGKM0YjSevZv^q6;$9*6*j>L-o-Up*e0iuZ{`BjXB+shkigI}poNoO$ z5osY4s>f4>H9mTvEDAC1X|;U`UQdaFVQoY4AjK2>^PPAQyI3WBZIKff?5^6Uhr3`C z2%WnR-;&^|l|6`tjX7;pc~QYB&{gN#^En>|XJvJ8w<(nLAAk79dK2op_G;QI>sEG% zEXpUkq`hMe+E=ICZc|QXDLjS`RG@3Xu}fAK`Q6(ZT11-!g?eMwN-}~SYtJWB{nJ#kq*Sh6 zb#~E$vB7GFmOYpO^Xjz&eEM0yXIWv4{j+yl5Bz*f`Av_Mj7e>%(FX3TCyQSuW*HCh zVI!R6But>kCSufIp@r9@Ti2{u+ZXy?>KfHp+T_2PF}e1_faLm75++o@G}Ht+zbUOh znl~zvfIA|mQtOOlK}J4;m?eJNC<_=1YB5x$=C@I&RPJq1H5iOHYhyl!>%mp!Nv>Rb zlU@JpZt9Cu+;wPe2SFCcdg(E7CLWc5ld`!yk?eqNLCkct3P~e&4`Y`!cjnQXXzsSL zw4fcKd5H{559p>}crFFK%Gv!$L7qiu?+_pfqCI)q*jAF z9H*3C$AeO|Y16h9JtaCE%jDWe;rF%cQTs#A4Jy*%K`^o)8@BSJ$Ne0eH!PGGrDk-WM|vYrp*x8Q%3N-b;uBJ9_!Kbx$!mCAwe2m$2R>yS4Z0V)V+9RrAbT?bP`OV`=Vc_eZN z%AK+UM}`89Rd|cHIz7LjcPY}suA|ob8p&w#1JR;*S-&pZ_SCMShg%ZzLVy|Gwqu41 z0M0=MFLUn;{{-TvQM+QGFK=ui`r$L1FO3CLf6^;@&gJJG)1D8vVXh_H>a|@AG^$S= z--^B8aUoq3`0he-Wx9=StiFmasnN~OJH7BjW8AT@gRcp%eV_zq7>=msV&ni3{rMM- z@VjRC_4Do*l>k`ud{-*L!I3)~+`wYv?|9}ew%+zue>#Fg1jM?_Xnz3wlV(wWcid?K zt0})b5IJ%btqrHJc{8P9`bDD#9M^Q-tYt>!df3#`%f-=wydq9I$$_eV9-01#hY*st z(8{ALndu!GV;`D5*xoe?)X6<|zlBr$kgsj_hJSOt06@eX4?@SBuEB$3yO3x~2p)9! zIz%tjcpW~UUe;QxrXSyfoa*bwg9u&#mYaG1QOve39yBZh$0!5MZr~a+J~5io_AUhC zyt3d+3{V_La1Ok=0D&U}7DBCVU3ca*)2Uv&QQ{_LyWI2z#Th77Efp$nK5wHwAyRLL*Ui|^4+X7>m6v8SB z;g%&2$SoQfp-}IBfdvCr5YKDOz~9}=@4GxJ#d9t7X|TKEae>i#G|Qx*Ge*PY}?NdvQaNuK)3&UX&fC}Cc`LMJI^`Ve z$3v2j8r~gLJg16CfD0_2_|V2_`K z0rt2otLNi>*$BVaaQzP!6chfs10;qfIN$wqiaYsi}eXJah z$!Nj&262_j@1L@m#C^^r;3=UvKq5YG*>kx`0!OB#BxaU8KVNojwUhS2SSW)99PG*S z%GF2bS^ewWP>%(AGxiZRMQ8RqvIQ%+yQu9k&d@~Mz*1qAlmv$F!=Rr2z6spQk)jI6d?S}& z@^4~B2bI-z${m<|qY0{-s_5B=N6xaC5slv=$l_M_Yz@%uS=Vi-%;4iv>S#(Z3SKEN zS1c@)XiT%-HujTxR0kT&;`(6}K)kjq;u|^fR6KJyT z%Pst-%TaU6(H@F(;p|Q~2{~;VRH!61w@G8+bNk5#x}D3O<>hwumHTyQXgF_Bf9kK1 z=41EOqzWmczwn-IDUBy~OQc=&W!9%6^qhG_Yd7*%z+5VFE<9 z*%B!-35Xm;Hy2^17;=;thJA?2vCC!1&YbdP>G*{B_3g+$IK%3a`XI?ftc_2pg)!@! z4cH`7eTUhusn*N=OabOa^knZ^o_|nkOg#GaS_dEVRE&?55K@``o*vLR?nYNzh(z zx?B$r0@kvp(SG9n+^ukd4RFHn)F!Nh;gdWh>r!}7gws+gwhTU_(OI^AVc*a`j5!JC zwhZz~CV$V`Men9T8loGM0KdGLk{yZRf4bax7}uwYi-Tghm_4=+^j8w-V=KV zemJ4B{BesT@a-z++E?e;but%t$L`Uby+f@5A{plSh%|@YU-5*Yl{mso^KW(4O7$~M z5hTmA8Ojv$2uuY%^3aY#bFP;@tJGzR_ANCVUZjRsUNdIsdtC5FYgf$;^I98Rz&v+|sO`p|3sdyig3GxRp@YQKP|S#m`Ad4>e_MbB!WGi7oU# z@4E#pebcr&BATh%5Umq`=FA#ZKXRD02R&3qZF(*f9ieEo|1%z>9B!V!A>nGc ze6bdS&E!+DwRflTX+fF~`Qq5yF?N7GS5B5^bxEi7Ou&jt(4mz|G5hEC_Sv&%rihG_ zEtA5PSEXGQG+!6+$nn;S7R9_NEq27HCKa#Ez_@XZj}X2%Sx^0?1;6^2^7d_tWM1zZ znkqD?dZ-jJ`wRG?R)OSYGV}RxB6P@D&Fy4$<)~igQ%^o?20j9BgJPYtL)Z1t=Q7YF zN?oP$qY0Y~rAl_|8L#?@6R+nH-?n?3m&fQh?40@HsLG+qSr5$|niWQCrV*#{66<~* z-63IrY}E5$q&YZPn69ItI4C`rdIe;Clbvwd7J6JCwot)Pzr-<|>&x{@FE?D0@%4KQ zDQ4~|HtI2=E;RUj5Mf$K6%PXIs+<}Tw-DTC7t2UB zK0HjQ2RR^nTnTmQourHZL|bxe{G99dsjQOEIrV zQKY`f6h}LeKrVZ_8O2%0%)5jsXDDuMKL;50>Jr}!d%CZN{bLleb`t|Zc~mizs#1KK zrMBdLP;heKL7+qAd;L_~>(<6$cO2HPhnEH5S`z0YEw{7!&C2H8lK}(Q{kXxzHm~a+ zYcU4L^x{cShh0@`inY>H_w_lM)op;Opo`&_w}i)I!bYdWp@75Xl)-T~& zr{j@#SVDXgVCUhd7oG!Qhywrz{F~)cC6*S4G;~=^*fFXlI^UcI(R18=*`F(G2$+`2 z*yPbUW#-c#bUmeF34v$>goI=|5x)4sKu|aSWH&oX%)fx?>Qxtgm9{&dhVa^J_cm^d;cSMiPMlKs(O_vd^P>sLy~ezjf?(O=?xqJLq!jlC5{Z zQQVejvwy;g)6FkO<{{k<47Qf?8JqBmoG}1g&rR&1-55I7u8?Zw5$KT_-SqGyJJb$4 zwKRs?Y1;mLsvF>aj0ThEiTyBhm49vKYGU@2jKB;r zx}_I9kGYsPHQ2ygaq9Oput1R86Zj&O&1T#|eNLR45*`Gnbalm?H$I`9kg{|?&Cpn# zTHPgSbq?#sY$5Ls!>|;qVwNLtI0onlaT|Q&pIY- zPH|t8h{7Kfcz``F-A^_66e-!9Z{8ji+74U^O-=ADI z2ZZZPoODa3oq;din}M!0sBWVH$I?%YyI3H7`O?iINoD*$0R#EbdaIgnTg&h1@Q>&4qJuK}xMtx4;T}PssbN-s{i`jIpoVQ`LK&14MykvPMhT`uf4qm){$~)r5 z^d>3IsP6T?V83#|N1m`wTxV8=QP$&v%dY{8w+MH}+o?kHqp_NoonMif zL7KzfPoTk$YvXVdCpg>HlJ*`<9!nT>&;UFMo-rtb+4*EFm@6nw6h(qFMpLPtA)WxD zrqAu}-z7y2upbs++x(U7wW)_bQIlc8gIEI0To!^6jm*Gi=-sPPx!NgI1+5;ygIJ)F z!*!bL8thwTVC_?hYe5>U>$=!FV!&{yPIyHONWk5049rZORDoH&20nLb?i6mP`eI2D zFJ9QO@(?~!I7_=i>Cs#jr?;(F`R2hh$Je1Ja2fBg0&s>c#+2;b6s&6KC>euX@v50B z@BnQPn%zi`e`i}oJE8t6_7LYJE`UsFSG;pxm1m{v8^}6{JlLEUeuvr5(_7AY3lHk` zJ`yh~9yRT+J?*_Q4W2SM1`~d!S^7fRv18jCl4!0{G6(2nw8N0=|C6VsolYPTg>(Lv zAYF8S4|#SbFU(k1SX^*bHpe$k_6si+1w6~MfP5ri&o0kb!vdOY783Jefk~_zygfGD2tE9p2 zjMBO*jJQ2+D1jg0hJU~Jw%33YB8_KM70soM@xrhGaq?0;sEKT$qUK`pRed~&?c)d2lZMGB zOJtzJ3&lJ>=ucz()ab(_wW;Z@m#PYxPof}=lu-#bhc8Iiimx#8OVOByULK|hnk;v1 zftx`?nPpoRJQYW6LUfxStj)cR8gaCe{nSQ&waPZ+Ot?Z3eZ?`A1GAk6lTwP3*~5}A zUrwu+J817LTa{F#Ab={Y0{cf)rMW(<%=L_U$xSm*4KcQU2O55S{52`~ z{rmcr<{;!jZ?1mt{)ZzF(40D{6D5cE^BiO`kb|1pDlAj)Cq>ShX1E;tNL+?0kd#xc z-Nw{`-gtyTEj{Ver>w52fqd;62z5Czt_4Pkfx^eE4v#sfjRvc$`VU?=U(w6AEoK=Q z75@-=?4a=S{PnRATb@C{PYC$hl~5}ql%Wq(e5Jg!j(W&k90Xm=sst&ibyH+!l34Xj z(Z5RboA8rne;LeWv^nd+9cJe-*Rj^XGnS!Bh4IEFODks$4!K5Xp}9uLuVJ21%93kc z>g~>6KOPpMAk@DECUE7*WkVsVf%zph=6BDNYjly}BkFL4!Kql?DwkIZ@*PwrI*lfI zr#0&7C2kTcz1yF^mAraYML%dzDyr=Z;V84mBH(d}5#n zN6>?w$7_bs718m=eR2mE)7TcKq+e9xkQj5j)eyuo-uZNGfp$4`-U9Wkc55gQWPuBuFxJAl3N zJwib^=*>7g)Hg_*f2u$Ez8n9V0m+OHx?9yiamht{S(K+tCbUtA^e}c}7 zCt2Qg-^5$*DIgTTXCvvSKKY+;oWJrM+ImkFAQvbX!z+Euj<@w7q6NFy0%g#rWe#9NFSd_Z20jbr9bX<(3-7;jM0|aJfu&e=JR}EY=2swdSlzF=y@1Dpm(Qq4 zOkq~j*TYs>!^-Jnj?mQh`DE?KqK&h|$; zlU_-DT{r1$1Y!pfyXVieC#v_QrP6x1NRxH)7`@siQBISBz1fa0*uLiJ`fS|;eF^G+ z$||X(i|@0#YWrC1VY;WC&phtdlf9~AY9eu8K~Uj74$*pgC0?_X6-LjD28(HwJ>+Ak zssIYBjN^CQP9xxAoTfixE78|5 zpUNa0%V<=}U%3Te@Oe4?CZ1ByhP=PGukuZpYs#!ilxDC(=WUV`{vi97@s0Xq`MO?@ zU@n+mwEtBgW1}q4?oHIzx1q3R4ht1HSL1Q+qbfw5Ro7y z_O8zvco5f_R^-F)(JAOLPq9%bExbZ5^ET#0Hou>zBJ-o@Bid~o=<2Zk3)}1l)5EmV%ydic z+L~im^RxK#iYgi<#a#_}WxdMHhGOn_t#^qD>*ruuc|#6#>F`2OcMWXm^7eRZ zIThfZ){K?b)hth6A?!B4DEZb#XnsOp`)GEc({Kistnxag#_CjJJ>l49UAfi13@dA4eL3q&%rs)df7JSf4anioeS$>9Hwdj)z?}E zv?eNCu~)9oDq(9cMd|o=1nH`&de3iGji@A}^wyg~uc5AD&Xl69hM(}qH`HBjG2S<+ zoTw8Wef(}!w#o%gaZTDuXnsP)r%NOJwUB$pS5SD+Lr+JWwb(=yZNKWee)N%|A-g_mU?fXF0Vk@Z$ z_J`#n>Qw!i`Ig|J82QW@_eKACn=Us;J-7Qu-W*hzo(?-)ar5|w9d_txad#qVEiGTl zV@a>Nh^w))Y7>zXlF^;31M|q?SFmL{Prw~*%nsdBc7W-i&2aK%oVYR|7qNxdm1JRL z$*%^d$LzW-$2gBCJ_;Dd`5Cs{46Ws^4 zU)p#C+D|wN4_?z}n=hy9$}$P5-Chtt#?zgWXB|xfaL>@RzH^l=<{x4-u{$JZ`A)}^+zDkS>=dad; z-r$+U{>}{3&ig~YUV6IR>~w~kLd;CsItD8DEeV_Fo$T8`=+S;a(Cj1I^tpl-9-~KE zF9?rvTO2E8qKfKjeuYh8X5SWh7|IWSy77c!p-yxaOIskB9kMY~DP}3NI~%e1No-e$M~>Sn2ENme=Orv^AdgGNzRD zvO*_ZP*V=B_Rpj`OHZVp@wvGHkkS8#l^5Jn55otKhV|d#jymN5I@#kf?M70Ag)Qg~ z9O3T0q|pdof0i&#GIgEydY9Rfkm(vH1Js3G@VxS~vh*L^C!p=Dc6M%S z7WN0cn27){7hg2m8E!yFC` z!*Rc5IEibnS_iKoMR86WOdA-^J{Qb#F;GEt6b}k`fjhh)g>%z~50T?RHQI#okY2QR z1+H)s*;GDO{+rusz$?8{;mtgV?GZRSec1fPHWb_g?ZR|#b`Q7={e06}Gu6sjX!}lQmyF-jn zLxWNKny++QuR0z|jOUkxih#tpKzHxCu}t9zVd7dq`o;M{nw|8Edvg6MSsap2n!g4b zbtE-zrqZSfjRsX6zNI-HYp?}zXjKl84;OXXsld7WUSxJP)bS5Q`hOtim{j~Wq^a-P zq#+PTbTMuL2`TUESD&=$bEro4F`vq79rFZ2Rb@b^s_il(BnjXX<-x9&phjKUVcN3Kny%8lAb z28SV=793RIRym-0Q6ZvdC68>d4$Rp(?b=DBb}ivAExPy`E>s1=g|FCo^Jm+P(}KQ+ z3nxP4qeLCQlBeh<7G~^8jpE-)8CtE|Nf}CMGjMCT@imK3Lp7y7<61++npEG(q|B}7 zf6*Rzviw_^oA>JV&n0omK#Jd&a$_Ksaw`EC z3h0-iVE8f=F+YZ4`Na9qh$c$|wU@=W0A*Tf#qclCM1Ij`3`Vy3(9!e7gQ-au(3f7- zRG;~p5Ze&Dlj&YH=kN~4YD4B)c(L>BajR6V2&T(llD9;{x_U?h4_qny%LG(H%0uuX?(2O7adhiRsrs=!XEOD8*xkx`1mHu$GSJYDC zs&}dfP)L@b@mCN0pIuMh$&M*5Kkvh+_zStubJ*8!$*M4qml(~{dW+=@2|=IJ9gZ{TOfP$2kDCKn z^iDm1&SUoc&*<;3I!-%@2SG}K?2ZE)RVDAk-VEHLIMqJg`@Lf00^$kWqWKUWWbT^V ztQfok>r2>R9a{1YI`@ejqE+2`x;`y)$ra zR<-dp0Uc#e<9a(DI=f;i(oboh%?kSA+tOo};Jz|epy92%HA8|+M014Ur z$9r-JLe4v?B+y%FoNXI3)>ADEd9-bd^h#O>i-;Jhmt!{j*AJnNWQ@Xm-6v`hX@j>S zQnFh!3-d}pWQZHkq{_UeJ2t#n3-jxf=_*LUs6MONush#&-8?3f&oIu`g;nZ8 zk9d>7(O7$KB^Fa1H_^e7{;Jlzg*p z`{+E*0Q;GL}Kml`aQtzU8n$1gsGaK?6(zEE=P062`#WaYnl z^74znor7MMFlq0OAySMcimfJr65%P83~&fN^NsLEcVH)gpX=JfdvRytx52p2?p`Nl zD2N_grgEAh#?5j4kYyX)DXgb19yC3ky*+G$34`y0_fR$BLFZ36;6Vl8y9G%9q5W(6 zO+HxfH{%WuSByaYJq-It@wN&Jr3t`;3 z6G|jR%x78eC7;BqDQvAk-*0X;;;s_IfeM*0Jm_VbT5Y2lkQ7h!WauDqZ4`0HA}luu z$Y_jS%P#L8v3WR#eQk}g?Yk*0$Pv$?x0o;AxJmY;w*)>&E9i9kp!)DaOb89J{$(pcFj4xS1jU<-NJ z{VHpyXKDogu$%@1?Obi9u|W1l7cxA%t_Vq>>3<=pQ1s#UJNwjo4mE6i7h0<{0%NQS za%#OBkju6S$B^@!{J2O}Jy~gV*qG|W1SUS*5j2}lXyuz?{lY#`8RPmxAF2*q2x7iN zPwiUKq++KF2bMXiMAEpjjUBDwbtxKMBX;U_Y_OV7ZowMWdDbUHqWTs9MW|?BN z(8tEI4v(&Qs-R(Z791H)N29%x2VZMOPmtNYeZXCz@#rFuVl?Gz!*w-^L%Con!?`T1 z5#x;}&vMls0sF6IECv{y>W=C=*{3YKz7U+h8F`fAng6>cyIEon_peWF;~L$t2C=VKq8e##!~IrEao++TDRdzX{xM!nSE&2+}p^Zk^rdAp#742AXq( z-_McBnQpjK1g%SYgr3O%j5GIH=5)oe7>XQWJm}_?$L*0@?o4YmY8Ozy*E@a_O(?5c z*WYmod{q4dmw+EoWCfJU{MJ`P%Mmj$U#Yb&Iwt(to$Du!7Km7!TRoHXzw__^3p+Mo zc2Y{p!fdBtGx^g_!KMhgmFiREPm+A6TJ5_e|D7l1cMK)^noM(3j;2?E#pS=!6Z2=i z_}N1fv*V#5>6w_4{+3Xzzu?)s&F=~rzmtIRJ9MJMXq3g>=KsLn(td{dVqf7we_&v- z{@%a>90!d`Ku!EkjK?CV(T z8Hx{n@gK7O%HsO!A=|;9^ScUbwHjWQ0qgIaiJm;8!SR_w@^Mnd~n07VJ{0;QXyRP*f*T(D$c^Y+@?~~?#{fQ7mV@F|VMWDR6 z`b&B752vBKyeAw;G}QKmFzLCv8C#6C-#Da{^R7DA;hxN+XBPafJ|)i!$& zcT>cEfHA!*GNOG^dO2VmK4PQ?lo7=yY_z<<9XWx-Y}Nyz1G0HseJ%X>rs`HjG`zVg zJE;hQ)&Z6`SefF)uAan$9z3)GmWi>456Okj$C@pZ>^0j1WRF7j=EDD;Ikc66M~^I} z20CVG90F=gEd)DiUG30mq8q2|PlaWqQDh3y*&jfB1pi=1JfESx-F2;)GiX@KC&#yW zpG<|K2F`{O*n3^1v8m0;xLa-bqFL*-Vz2F_i%+d))RCai3l8moku?fE`z!tYyTJV) zeDcg5eLeF=?5Osk1J8X=e_a?C&W$MqmZqLWrS2?E?bW~d|Ju9qc&PLLZ=Id+AK97Rm-yGcak7DJIxj>$PgZe}nHbNGGO-FEZa z-|n`@@ArK?e*T)rJU*Yt=l%G6UdQ|Wx}ML+7MA(%*CLdyKr_P(2KTxFP5goO^*bkm zUz|yyOdxWm7{C#)CXjfR$uPS}y(00;KIF4^P3m>5xtz{HyAL?F5$qJ>fWFu z7gWF~MoaS;-X+CnMHMuNNNLmi&|I<`yZ@NG%^FrDi($;NH$5Oestgd$`i%GAdkrJM zGm9dp8t@a|ypmssr+EtjD0K%qOkQvwlFU5#mXf;IP0C!vqKW`af_jNDxdgwtEbtu8 zOqgrRABY~ky54w{5>VW_1Tf#E;P8i%0dtia)10+R-cEmtu?Qmhb}HG2E3*fL_5P^z z@p8B$L~~)mJkJX{E@9HJhly!GlB+7>paT{%~y8%P_TSvLts z0GX)*ZuNU|T=YZO-)~#wf1s7I%H&OVs_h9`j5W~AMa-FD-rKJ-u>kKj56S!6wnIYW zus@lAW%#1`L~}7v5(Q9g5kkzUY@Vt2B-ZHy0%RHmvS)xo&)1}Vn2k{fK&{#b2T@nq zw5Sag=ZjG#FY8r-?oLv#>3yV~4Ua9l;;084K&3NVegm{;w?l>p0TJx}H)^PV;+YNq z%^qCey<7u;3<^R#T2p#0K(pv9w0;7> zyda*`w#K|bg@p)&$eiomu1X(S2EQfyNTyUO(*HJM945=6F7r~aIb?r5%kd(Vn7a}4 zfq2?;6800aKH$ERe(k<~k=>g6^7)nfn$SS_L3@S`owghMxr3QWLdQliI?Q}&P+77s z0<<=YOV%QM^(W5Z|JpsU3y3;~+(}W%PPnWrV}ilu!F14nzc6ryzXYOeg=5VX>cD(p ze-*!Ehn#x-H{&Me73Z}^?jj^FL4V|6$Q<_L5prQhJ?Y~Ho!2`Qk5ptp6d0CQ1D4VstsODJCHf_1i z$1h)t{K%?Z|)Z)?_a-HW%YKJJ#&h`IRyi|fZ-{4O3>E{Q&3`f3om)e%;R zei~?&-UHI{Z?cfuMe+(QNI$oD!5kK)^_nc7pIE<8X;iewOgn7qhn>PcgV1*uDWGal zk>_o)PAjYZ&LJ0G`&axunml6g07D*FbgpH1^%l0#2u=~I@R>H+l_aH$xknODJv~;# zq5|i-?C0%!s5Q1dVm$Fqh;4zFk6PQgM7x-2k z03w69Y<)MtYEUuCi17I+^)^#p|Im_}9d}5qXx>oUNzB+@XvSEQB2hQ4h7PG)s^q0Y zLPu{MyWVeTXM6TAyw>wE6ZMfLp||USVMlgri-!Za`~z2zp^?J&>{6+ogPHdL_xh~N zSNO<@&==|&d-XhgSr5d2)Hw~b4Bh>sdggCjX9jD4ZNY+^g7AH9N!kkimkvEaKTK>J zJOatq4IyEmm@u%_DwCiP=UxXjfd{Kh9!R#b@3^af0kdtzw8#po)p1KM49tS_pPL?I zw795|UzyJpms@7&~^no7y*SW2J4plLhNN?!W!m96 z&6Pejuv={x#TRd!m{FfGp|EGaIU7+y%Gua>A4k3UX?9=Ra&CMaEqZ_t*?namK%-an z9sL10+_-Rbg#x1=@)?fdx1tA~^DVwNU#6O)xYCo*e4{%-QS*eWv5DOKJcXKqZ2BGA z*%8elmG3}Q2N7MW0ItW}3yR-yeINb%dbS5~S!beV8dMAQC<=`8n3q-Leh6JiL}3wV zevRbA!|1+Rt4t{$AN$0)ORX}Y$Xe;Q!;G!tl##DPmd`dnp+8O`_NVg%2MzX}cwKv= zxW=jIPB2Qb@3~0w_oFPLzDdt?7ORP(kwa+iYw?{ZCy|GOy?a#d)+QS?pDDe;dZtz# zo#As228O-^7iZD}7$V57{MNaW$D^A3j=CVbO!?W-N+xzg;L@eX5s zf<>9<{+45|^GthpD>gMvKBLOhZjoU1AR*W|u88*=NN~-ljJ>0QV?vuDZ?8{4udgpO z;quM)L?72lk^-g)WEA(hn;>b^9iOehOVox+<|>`}quzthuV=_+ zth2Tp{Drk8B0~&7<=rbSMc&qL^E^O_>vn3E3-+76Y@GWa^-e+wn&Wti*HxO1Q?{o5C0}Ys#U~m*GF@EL#bZ-ysC2S`H}}h z*4?8bvM>cbGmj_Hlg|!aqvmsZe)SMPH+C*Y;-P5yQ|;WPLe=>ObW!XBmq99OCtR7h zL=zLVc`K#bF@5Pd=4gwQ93;7)59gl zvB$o8ryN^TBNj%;x7O3}(F+aLGv~aQt8bKfII8aja6T}+`WwfR-<>z$Ss0xH6TY#+ zhuhW3f@d&8d>6NP?fHcPsM(_fE=#&e;l|>4%kqq*XJP;bAg(nAAYPvO@Kkb`%J?$q zn>t_?e5&_Ngv820yRikk2^k)d^4G5HZUCR-#TtOmQ9~P`P3u0CE%hiRRFeNsM0HG` z-vfPj)T$%T`ABBul>mO6);futu6%C6iKtLFKh99F6G{;2=tYGPY5KMt5(DrYPFiss zD~s3m?;YVCYi-KiR-wv!hX|PX z3(o&>loklj{}+aPKCQ9scLP@o42=KxqAfo(EZ$bmFIYlvys95*dZXBio*vznGf*BU zMK(d!0B>5}F}dY)zyHUxz2$a`1*FU$naspChNr&raCNGqR|nM^i$jLs?;W#0NgcU} z94UIPDAu!ui$TH|$fQn_jza)Q3%DomM^I0X#^uaeojw?t!l!l1who zau2r|Lv#%_SiROS-U2~-BOnW^7Qo&T0rvdTy=6Tw+Nr>2&{&|(?j+XO$8)+#qUwl> zE8f1`4o|l>0|-(kGk;BxlKDw+LS6$l{dupgK-Bzu2Zx?0u0+DnMvLA<8N7=A6|u z&1R*^_Uig^o@TnmK*&eHyZGr*sy{c*f4+78OP&wyKm!12;T$2M@@V#EAh%T&XnuP8 z;Mov%)>30u##gZ8UAn~9`qn`R=$gqyfni~pah%8>WEwR8v4rWT#3+6}v9M0xae%S+ z3o;8OKw`Az$HXXgLt<3?KQl49F;V*S|1V6Kj(wi^{-+bB$(U=mlEm9E?zt44sZ?Y9 zb^`RObl9=F!|DR8!h%&AayZX#UmezN(9!f-qMd*N1Jx^hKoOUD21ywK5u1=Zf%Z~! z7aC_NfDaloB?pCePOdU3Q(Hk)K7cOekr%y@G)uW!6$CWUA1Pt50x)x=SKy&21~5*Eb%K&UH29Z(!8aXBkc2n_X2pk zj1~%6Cr$%8-;+J6h-#w%c#Yo1g)QndK&BYl>@4S$Sqa0Ruq1}9+VG`-a`=XYF;*$4 z{4R#)Qpn;FKrW|A)JVd>2DwCUTpIeMP3uQF)oqGtQ%pbE?xr;fZ(7sOzJ1f_{Xg29 z;=N24ZxZ5Zz^IxFg7MlP7 literal 0 HcmV?d00001 From 3f81195c76891055db9f417960a7810dc4802a17 Mon Sep 17 00:00:00 2001 From: rokesh-karthikeyan Date: Wed, 15 Dec 2021 15:10:45 +0530 Subject: [PATCH 4/8] flut-5960-[feature][flutter]: review changes --- Flutter/cartesian-charts/callbacks.md | 61 ++++++++++++++++++++------- Flutter/circular-charts/datalabel.md | 17 +++----- Flutter/funnel-chart/callbacks.md | 9 +--- Flutter/funnel-chart/datalabel.md | 2 +- Flutter/pyramid-chart/datalabel.md | 10 ++--- 5 files changed, 61 insertions(+), 38 deletions(-) diff --git a/Flutter/cartesian-charts/callbacks.md b/Flutter/cartesian-charts/callbacks.md index 34ea81b6f..bc999f7f2 100644 --- a/Flutter/cartesian-charts/callbacks.md +++ b/Flutter/cartesian-charts/callbacks.md @@ -990,14 +990,9 @@ Triggers when the error bar is being rendered. In this `onRenderDetailsUpdate` c ## onCreateRenderer -Used to create the renderer for custom series. +Used to create the renderer for custom series.This is applicable only when the custom series is defined in the sample and for built-in series types, it is not applicable. -This is applicable only when the custom series is defined in the sample - and for built-in series types, it is not applicable. - -Renderer created in this will hold the series state and - this should be created for each series. [onCreateRenderer] callback - function should return the renderer class and should not return null. +Renderer created in this will hold the series state and this should be created for each series. [onCreateRenderer]() callback function should return the renderer class and should not return null. Series state will be created only once per series and will not be created again when we update the series. @@ -1009,17 +1004,53 @@ Defaults to `null`. Widget build(BuildContext context) { return Container( child: SfCartesianChart( - series: >[ - LineSeries( + series: >[ + ColumnSeries( onCreateRenderer:(ChartSeries series){ - return CustomLineSeriesRenderer(); - } - ), - ], - )); + return CustomColumnSeriesRenderer(); + } + ), + ], + ) + ); } - class CustomLineSeriesRenderer extends LineSeriesRenderer { + class CustomColumnSeriesRenderer extends ColumnSeriesRenderer { // custom implementation here... + @override + ChartSegment createSegment() { + return _ColumnCustomPainter(); + } + } + + class _CustomColumnSeriesRenderer extends ColumnSeriesRenderer { + _CustomColumnSeriesRenderer(this.series); + + final ColumnSeries series; + @override + ChartSegment createSegment() { + return _ColumnCustomPainter(series); + } + } + + class _ColumnCustomPainter extends ColumnSegment { + _ColumnCustomPainter(this.series); + + final ColumnSeries series; + @override + int get currentSegmentIndex => super.currentSegmentIndex!; + + @override + Paint getFillPaint() { + final Paint customerFillPaint = Paint(); + customerFillPaint.color = series.dataSource[currentSegmentIndex].y > 30 ? Colors.red : Colors.green; + customerFillPaint.style = PaintingStyle.fill; + return customerFillPaint; + } + + @override + void onPaint(Canvas canvas) { + super.onPaint(canvas); + } } {% endhighlight %} diff --git a/Flutter/circular-charts/datalabel.md b/Flutter/circular-charts/datalabel.md index 672cd6bda..2d575c32d 100644 --- a/Flutter/circular-charts/datalabel.md +++ b/Flutter/circular-charts/datalabel.md @@ -428,12 +428,9 @@ If the user didn’t provide text color to the data label, then by default, the ![label_saturation](images/datalabel/circular_saturation.png) -## Over flow mode +## Overflow mode -Action on data labels when it’s overflowing from its region area. - -The overflowing data label rendering behavior can be changed based on this. If `overflowMode` property is set to `OverflowMode.none` then the `labelIntersectAction` takes the priority, else -`overflowMode` takes the priority. +Action on data labels when it’s overflowing from its region area.The overflowing data label rendering behavior can be changed based on this. If `overflowMode` property is set to `OverflowMode.none` then the `labelIntersectAction` takes the priority, else `overflowMode` takes the priority. _Note:_ This is applicable for pie, doughnut, pyramid, and funnel series types alone. @@ -450,11 +447,11 @@ Defaults to `OverflowMode.none`. dataLabelSettings: DataLabelSettings( isVisible: true, overflowMode: OverflowMode.trim - ), - ), - ], - ) - ); + ), + ), + ], + ) + ); } ![dataLabel_overflow](images/datalabel/circular_overflow.jpg) \ No newline at end of file diff --git a/Flutter/funnel-chart/callbacks.md b/Flutter/funnel-chart/callbacks.md index 17e4f5003..06e8b8b04 100644 --- a/Flutter/funnel-chart/callbacks.md +++ b/Flutter/funnel-chart/callbacks.md @@ -310,14 +310,9 @@ Triggers when long press on the series point. The [`onPointLongPress`](https://p ## onCreateRenderer -///Used to create the renderer for custom series. +Used to create the renderer for custom series. This is applicable only when the custom series is defined in the sample and for built-in series types, it is not applicable. -This is applicable only when the custom series is defined in the sample - and for built-in series types, it is not applicable. - -Renderer created in this will hold the series state and - this should be created for each series. [onCreateRenderer] callback - function should return the renderer class and should not return null. +Renderer created in this will hold the series state and this should be created for each series. [onCreateRenderer] callback function should return the renderer class and should not return null. Series state will be created only once per series and will not be created again when we update the series. diff --git a/Flutter/funnel-chart/datalabel.md b/Flutter/funnel-chart/datalabel.md index bfaa9940f..59ee446aa 100644 --- a/Flutter/funnel-chart/datalabel.md +++ b/Flutter/funnel-chart/datalabel.md @@ -165,7 +165,7 @@ If the user didn’t provide text color to the data label, then by default, the ![label_saturation](images/datalabel/funnel_saturation.png) -## Over flow mode +## Overflow mode Action on data labels when it’s overflowing from its region area. diff --git a/Flutter/pyramid-chart/datalabel.md b/Flutter/pyramid-chart/datalabel.md index 55ff45a20..1aa359dd1 100644 --- a/Flutter/pyramid-chart/datalabel.md +++ b/Flutter/pyramid-chart/datalabel.md @@ -248,7 +248,7 @@ If the user didn’t provide text color to the data label, then by default, the ![label_saturation](images/datalabel/pyramid_saturation.png) -## Over flow mode +## Overflow mode Action on data labels when it’s overflowing from its region area. @@ -269,10 +269,10 @@ Defaults to `OverflowMode.none`. dataLabelSettings: DataLabelSettings( isVisible: true, overflowMode: OverflowMode.trim - ), - ), - ) - ); + ), + ), + ) + ); } ![label_overflow](images/datalabel/pyramid_overflow.jpg) \ No newline at end of file From 30aaeefea841e3194208becd3b863f896077e24d Mon Sep 17 00:00:00 2001 From: rokesh-karthikeyan Date: Wed, 15 Dec 2021 15:55:47 +0530 Subject: [PATCH 5/8] flut-5960-[feature][flutter]: review changes --- Flutter/cartesian-charts/callbacks.md | 13 ++++++------- Flutter/circular-charts/callbacks.md | 12 +++--------- Flutter/circular-charts/datalabel.md | 5 ++--- Flutter/funnel-chart/callbacks.md | 5 ++--- Flutter/funnel-chart/datalabel.md | 8 ++++---- Flutter/pyramid-chart/callbacks.md | 12 +++--------- Flutter/pyramid-chart/datalabel.md | 8 +++----- 7 files changed, 23 insertions(+), 40 deletions(-) diff --git a/Flutter/cartesian-charts/callbacks.md b/Flutter/cartesian-charts/callbacks.md index bc999f7f2..bfdb016c8 100644 --- a/Flutter/cartesian-charts/callbacks.md +++ b/Flutter/cartesian-charts/callbacks.md @@ -992,10 +992,9 @@ Triggers when the error bar is being rendered. In this `onRenderDetailsUpdate` c Used to create the renderer for custom series.This is applicable only when the custom series is defined in the sample and for built-in series types, it is not applicable. -Renderer created in this will hold the series state and this should be created for each series. [onCreateRenderer]() callback function should return the renderer class and should not return null. +Renderer created in this will hold the series state and this should be created for each series.[onCreateRenderer]() callback function should return the renderer class and should not return null. -Series state will be created only once per series and will not be created -again when we update the series. +Series state will be created only once per series and will not be created again when we update the series. Defaults to `null`. @@ -1016,9 +1015,9 @@ Defaults to `null`. } class CustomColumnSeriesRenderer extends ColumnSeriesRenderer { // custom implementation here... - @override - ChartSegment createSegment() { - return _ColumnCustomPainter(); + @override + ChartSegment createSegment() { + return _ColumnCustomPainter(); } } @@ -1026,7 +1025,7 @@ Defaults to `null`. _CustomColumnSeriesRenderer(this.series); final ColumnSeries series; - @override + @override ChartSegment createSegment() { return _ColumnCustomPainter(series); } diff --git a/Flutter/circular-charts/callbacks.md b/Flutter/circular-charts/callbacks.md index 8fb055c73..ccc1b45e7 100644 --- a/Flutter/circular-charts/callbacks.md +++ b/Flutter/circular-charts/callbacks.md @@ -409,17 +409,11 @@ the data points and legend. For further reference on this callback, Check the [` ## onCreateRenderer -Used to create the renderer for custom series. +Used to create the renderer for custom series.This is applicable only when the custom series is defined in the sample and for built-in series types, it is not applicable. -This is applicable only when the custom series is defined in the sample - and for built-in series types, it is not applicable. +Renderer created in this will hold the series state and this should be created for each series. [onCreateRenderer]() callback function should return the renderer class and should not return null. -Renderer created in this will hold the series state and - this should be created for each series. [onCreateRenderer] callback - function should return the renderer class and should not return null. - -Series state will be created only once per series and will not be created -again when we update the series. +Series state will be created only once per series and will not be created again when we update the series. Defaults to `null`. diff --git a/Flutter/circular-charts/datalabel.md b/Flutter/circular-charts/datalabel.md index 2d575c32d..354253525 100644 --- a/Flutter/circular-charts/datalabel.md +++ b/Flutter/circular-charts/datalabel.md @@ -432,8 +432,7 @@ If the user didn’t provide text color to the data label, then by default, the Action on data labels when it’s overflowing from its region area.The overflowing data label rendering behavior can be changed based on this. If `overflowMode` property is set to `OverflowMode.none` then the `labelIntersectAction` takes the priority, else `overflowMode` takes the priority. - _Note:_ This is applicable for pie, doughnut, pyramid, and funnel series - types alone. + _Note:_ This is applicable for pie, doughnut, pyramid, and funnel series types alone. Defaults to `OverflowMode.none`. @@ -453,5 +452,5 @@ Defaults to `OverflowMode.none`. ) ); } - +{% endhighlight %} ![dataLabel_overflow](images/datalabel/circular_overflow.jpg) \ No newline at end of file diff --git a/Flutter/funnel-chart/callbacks.md b/Flutter/funnel-chart/callbacks.md index 06e8b8b04..fbabb7ab1 100644 --- a/Flutter/funnel-chart/callbacks.md +++ b/Flutter/funnel-chart/callbacks.md @@ -312,10 +312,9 @@ Triggers when long press on the series point. The [`onPointLongPress`](https://p Used to create the renderer for custom series. This is applicable only when the custom series is defined in the sample and for built-in series types, it is not applicable. -Renderer created in this will hold the series state and this should be created for each series. [onCreateRenderer] callback function should return the renderer class and should not return null. +Renderer created in this will hold the series state and this should be created for each series. [onCreateRenderer]() callback function should return the renderer class and should not return null. -Series state will be created only once per series and will not be created -again when we update the series. +Series state will be created only once per series and will not be created again when we update the series. Defaults to `null`. diff --git a/Flutter/funnel-chart/datalabel.md b/Flutter/funnel-chart/datalabel.md index 59ee446aa..2bc5bc8db 100644 --- a/Flutter/funnel-chart/datalabel.md +++ b/Flutter/funnel-chart/datalabel.md @@ -169,11 +169,10 @@ If the user didn’t provide text color to the data label, then by default, the Action on data labels when it’s overflowing from its region area. -The overflowing data label rendering behavior can be changed based on this. If `overflowMode` property is set to `OverflowMode.none` then the `labelIntersectAction` takes the priority, else -`overflowMode` takes the priority. +The overflowing data label rendering behavior can be changed based on this. If [overflowMode]() property is set to `OverflowMode.none` then the `labelIntersectAction` takes the priority, else +[overflowMode]() takes the priority. - _Note:_ This is applicable for pie, doughnut, pyramid, and funnel series - types alone. +_Note:_ This is applicable for pie, doughnut, pyramid, and funnel series types alone. Defaults to `OverflowMode.none`. @@ -191,5 +190,6 @@ Defaults to `OverflowMode.none`. ), ); } +{% endhighlight %} ![label_overflow](images/datalabel/funnel_overflow.jpg) \ No newline at end of file diff --git a/Flutter/pyramid-chart/callbacks.md b/Flutter/pyramid-chart/callbacks.md index 92e01e990..455e5e23b 100644 --- a/Flutter/pyramid-chart/callbacks.md +++ b/Flutter/pyramid-chart/callbacks.md @@ -313,17 +313,11 @@ Triggers when long press on the series point. The [`onPointLongPress`](https://p ## onCreateRenderer -Used to create the renderer for custom series. +Used to create the renderer for custom series. This is applicable only when the custom series is defined in the sample and for built-in series types, it is not applicable. -This is applicable only when the custom series is defined in the sample - and for built-in series types, it is not applicable. +Renderer created in this will hold the series state and this should be created for each series. [onCreateRenderer]() callback function should return the renderer class and should not return null. -Renderer created in this will hold the series state and - this should be created for each series. [onCreateRenderer] callback - function should return the renderer class and should not return null. - -Series state will be created only once per series and will not be created -again when we update the series. +Series state will be created only once per series and will not be created again when we update the series. Defaults to `null`. diff --git a/Flutter/pyramid-chart/datalabel.md b/Flutter/pyramid-chart/datalabel.md index 1aa359dd1..e38874e64 100644 --- a/Flutter/pyramid-chart/datalabel.md +++ b/Flutter/pyramid-chart/datalabel.md @@ -252,11 +252,9 @@ If the user didn’t provide text color to the data label, then by default, the Action on data labels when it’s overflowing from its region area. -The overflowing data label rendering behavior can be changed based on this. If `overflowMode` property is set to `OverflowMode.none` then the `labelIntersectAction` takes the priority, else -`overflowMode` takes the priority. +The overflowing data label rendering behavior can be changed based on this. If [overflowMode]() property is set to `OverflowMode.none` then the `labelIntersectAction` takes the priority, else [overflowMode]() takes the priority. - _Note:_ This is applicable for pie, doughnut, pyramid, and funnel series - types alone. +_Note:_ This is applicable for pie, doughnut, pyramid, and funnel series types alone. Defaults to `OverflowMode.none`. @@ -274,5 +272,5 @@ Defaults to `OverflowMode.none`. ) ); } - +{% endhighlight %} ![label_overflow](images/datalabel/pyramid_overflow.jpg) \ No newline at end of file From ac276cd8d0c4d90d7fe3c6493e38d032e73d2072 Mon Sep 17 00:00:00 2001 From: rokesh-karthikeyan Date: Wed, 15 Dec 2021 16:58:14 +0530 Subject: [PATCH 6/8] flut-5960-[feature][flutter]: review changes --- Flutter/circular-charts/callbacks.md | 9 +++------ Flutter/funnel-chart/datalabel.md | 3 +-- Flutter/pyramid-chart/datalabel.md | 2 +- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/Flutter/circular-charts/callbacks.md b/Flutter/circular-charts/callbacks.md index ccc1b45e7..7ba3ded63 100644 --- a/Flutter/circular-charts/callbacks.md +++ b/Flutter/circular-charts/callbacks.md @@ -438,14 +438,11 @@ Defaults to `null`. ## axisLabelFormatter -Called while rendering each axis label in the chart. - -Provides label text, axis name, orientation of the axis, trimmed text and text styles such as color, - font size, and font weight to the user using the `AxisLabelRenderDetails` class. +Called while rendering each axis label in the chart. Provides label text, axis name, orientation of the axis, trimmed text and text styles such as color, font size, and font weight to the user using the `AxisLabelRenderDetails` class. You can customize the text and text style using the `ChartAxisLabel` class and can return it. - Defaults to `null`. +Defaults to `null`. {% highlight dart %} @@ -459,6 +456,6 @@ You can customize the text and text style using the `ChartAxisLabel` class and c } ChartAxisLabel axis(AxisLabelRenderDetails details) { - return ChartAxisLabel('axis Label', details.textStyle); + return ChartAxisLabel('axis Label', details.textStyle); } {% endhighlight %} \ No newline at end of file diff --git a/Flutter/funnel-chart/datalabel.md b/Flutter/funnel-chart/datalabel.md index 2bc5bc8db..7656a1f88 100644 --- a/Flutter/funnel-chart/datalabel.md +++ b/Flutter/funnel-chart/datalabel.md @@ -169,8 +169,7 @@ If the user didn’t provide text color to the data label, then by default, the Action on data labels when it’s overflowing from its region area. -The overflowing data label rendering behavior can be changed based on this. If [overflowMode]() property is set to `OverflowMode.none` then the `labelIntersectAction` takes the priority, else -[overflowMode]() takes the priority. +The overflowing data label rendering behavior can be changed based on this. If `overflowMode` property is set to `OverflowMode.none` then the `labelIntersectAction` takes the priority, else `overflowMode` takes the priority. _Note:_ This is applicable for pie, doughnut, pyramid, and funnel series types alone. diff --git a/Flutter/pyramid-chart/datalabel.md b/Flutter/pyramid-chart/datalabel.md index e38874e64..98c459ce8 100644 --- a/Flutter/pyramid-chart/datalabel.md +++ b/Flutter/pyramid-chart/datalabel.md @@ -252,7 +252,7 @@ If the user didn’t provide text color to the data label, then by default, the Action on data labels when it’s overflowing from its region area. -The overflowing data label rendering behavior can be changed based on this. If [overflowMode]() property is set to `OverflowMode.none` then the `labelIntersectAction` takes the priority, else [overflowMode]() takes the priority. +The overflowing data label rendering behavior can be changed based on this. If `overflowMode` property is set to `OverflowMode.none` then the `labelIntersectAction` takes the priority, else `overflowMode` takes the priority. _Note:_ This is applicable for pie, doughnut, pyramid, and funnel series types alone. From d924f5b362ee6984ad039e83e55dfd304ff14579 Mon Sep 17 00:00:00 2001 From: rokesh-karthikeyan Date: Fri, 17 Dec 2021 15:51:52 +0530 Subject: [PATCH 7/8] flut-5960-[feature][flutter]: added reference links --- Flutter/cartesian-charts/callbacks.md | 2 +- Flutter/circular-charts/callbacks.md | 2 +- Flutter/circular-charts/datalabel.md | 4 ++-- Flutter/funnel-chart/callbacks.md | 2 +- Flutter/funnel-chart/datalabel.md | 4 ++-- Flutter/pyramid-chart/callbacks.md | 2 +- Flutter/pyramid-chart/datalabel.md | 4 ++-- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Flutter/cartesian-charts/callbacks.md b/Flutter/cartesian-charts/callbacks.md index bfdb016c8..26de40850 100644 --- a/Flutter/cartesian-charts/callbacks.md +++ b/Flutter/cartesian-charts/callbacks.md @@ -992,7 +992,7 @@ Triggers when the error bar is being rendered. In this `onRenderDetailsUpdate` c Used to create the renderer for custom series.This is applicable only when the custom series is defined in the sample and for built-in series types, it is not applicable. -Renderer created in this will hold the series state and this should be created for each series.[onCreateRenderer]() callback function should return the renderer class and should not return null. +Renderer created in this will hold the series state and this should be created for each series. [onCreateRenderer](https://pub.dev/documentation/syncfusion_flutter_charts/latest/charts/CartesianSeries/onCreateRenderer.html) callback function should return the renderer class and should not return null. Series state will be created only once per series and will not be created again when we update the series. diff --git a/Flutter/circular-charts/callbacks.md b/Flutter/circular-charts/callbacks.md index 7ba3ded63..5c6504ee2 100644 --- a/Flutter/circular-charts/callbacks.md +++ b/Flutter/circular-charts/callbacks.md @@ -411,7 +411,7 @@ the data points and legend. For further reference on this callback, Check the [` Used to create the renderer for custom series.This is applicable only when the custom series is defined in the sample and for built-in series types, it is not applicable. -Renderer created in this will hold the series state and this should be created for each series. [onCreateRenderer]() callback function should return the renderer class and should not return null. +Renderer created in this will hold the series state and this should be created for each series. [onCreateRenderer](https://pub.dev/documentation/syncfusion_flutter_charts/latest/charts/CircularSeries/onCreateRenderer.html) callback function should return the renderer class and should not return null. Series state will be created only once per series and will not be created again when we update the series. diff --git a/Flutter/circular-charts/datalabel.md b/Flutter/circular-charts/datalabel.md index 354253525..0f6eb53f5 100644 --- a/Flutter/circular-charts/datalabel.md +++ b/Flutter/circular-charts/datalabel.md @@ -430,9 +430,9 @@ If the user didn’t provide text color to the data label, then by default, the ## Overflow mode -Action on data labels when it’s overflowing from its region area.The overflowing data label rendering behavior can be changed based on this. If `overflowMode` property is set to `OverflowMode.none` then the `labelIntersectAction` takes the priority, else `overflowMode` takes the priority. +Action on data labels when it’s overflowing from its region area.The overflowing data label rendering behavior can be changed based on this. If `overflowMode` property is set to `OverflowMode.none` then the [`labelIntersectAction`](https://pub.dev/documentation/syncfusion_flutter_charts/latest/charts/DataLabelSettings/labelIntersectAction.html) takes the priority, else `overflowMode` takes the priority. - _Note:_ This is applicable for pie, doughnut, pyramid, and funnel series types alone. + N> This is applicable for pie, doughnut, pyramid, and funnel series types alone. Defaults to `OverflowMode.none`. diff --git a/Flutter/funnel-chart/callbacks.md b/Flutter/funnel-chart/callbacks.md index fbabb7ab1..1123395ed 100644 --- a/Flutter/funnel-chart/callbacks.md +++ b/Flutter/funnel-chart/callbacks.md @@ -312,7 +312,7 @@ Triggers when long press on the series point. The [`onPointLongPress`](https://p Used to create the renderer for custom series. This is applicable only when the custom series is defined in the sample and for built-in series types, it is not applicable. -Renderer created in this will hold the series state and this should be created for each series. [onCreateRenderer]() callback function should return the renderer class and should not return null. +Renderer created in this will hold the series state and this should be created for each series. [onCreateRenderer](https://pub.dev/documentation/syncfusion_flutter_charts/latest/charts/FunnelSeries/onCreateRenderer.html) callback function should return the renderer class and should not return null. Series state will be created only once per series and will not be created again when we update the series. diff --git a/Flutter/funnel-chart/datalabel.md b/Flutter/funnel-chart/datalabel.md index 7656a1f88..a26706ae4 100644 --- a/Flutter/funnel-chart/datalabel.md +++ b/Flutter/funnel-chart/datalabel.md @@ -169,9 +169,9 @@ If the user didn’t provide text color to the data label, then by default, the Action on data labels when it’s overflowing from its region area. -The overflowing data label rendering behavior can be changed based on this. If `overflowMode` property is set to `OverflowMode.none` then the `labelIntersectAction` takes the priority, else `overflowMode` takes the priority. +The overflowing data label rendering behavior can be changed based on this. If `overflowMode` property is set to `OverflowMode.none` then the [`labelIntersectAction`](https://pub.dev/documentation/syncfusion_flutter_charts/latest/charts/DataLabelSettings/labelIntersectAction.html) takes the priority, else `overflowMode` takes the priority. -_Note:_ This is applicable for pie, doughnut, pyramid, and funnel series types alone. +N> This is applicable for pie, doughnut, pyramid, and funnel series types alone. Defaults to `OverflowMode.none`. diff --git a/Flutter/pyramid-chart/callbacks.md b/Flutter/pyramid-chart/callbacks.md index 455e5e23b..12397cc99 100644 --- a/Flutter/pyramid-chart/callbacks.md +++ b/Flutter/pyramid-chart/callbacks.md @@ -315,7 +315,7 @@ Triggers when long press on the series point. The [`onPointLongPress`](https://p Used to create the renderer for custom series. This is applicable only when the custom series is defined in the sample and for built-in series types, it is not applicable. -Renderer created in this will hold the series state and this should be created for each series. [onCreateRenderer]() callback function should return the renderer class and should not return null. +Renderer created in this will hold the series state and this should be created for each series. [onCreateRenderer](https://pub.dev/documentation/syncfusion_flutter_charts/latest/charts/PyramidSeries/onCreateRenderer.html) callback function should return the renderer class and should not return null. Series state will be created only once per series and will not be created again when we update the series. diff --git a/Flutter/pyramid-chart/datalabel.md b/Flutter/pyramid-chart/datalabel.md index 98c459ce8..a8b1d8229 100644 --- a/Flutter/pyramid-chart/datalabel.md +++ b/Flutter/pyramid-chart/datalabel.md @@ -252,9 +252,9 @@ If the user didn’t provide text color to the data label, then by default, the Action on data labels when it’s overflowing from its region area. -The overflowing data label rendering behavior can be changed based on this. If `overflowMode` property is set to `OverflowMode.none` then the `labelIntersectAction` takes the priority, else `overflowMode` takes the priority. +The overflowing data label rendering behavior can be changed based on this. If `overflowMode` property is set to `OverflowMode.none` then the [`labelIntersectAction'](https://pub.dev/documentation/syncfusion_flutter_charts/latest/charts/DataLabelSettings/labelIntersectAction.html) takes the priority, else `overflowMode` takes the priority. -_Note:_ This is applicable for pie, doughnut, pyramid, and funnel series types alone. +N> This is applicable for pie, doughnut, pyramid, and funnel series types alone. Defaults to `OverflowMode.none`. From b3aec6ef5b449b56d85c03525eca4c0c6fa14cf5 Mon Sep 17 00:00:00 2001 From: rokesh-karthikeyan Date: Fri, 17 Dec 2021 16:07:06 +0530 Subject: [PATCH 8/8] flut-590-[feature][flutter]: review changes --- Flutter/cartesian-charts/callbacks.md | 2 +- Flutter/circular-charts/callbacks.md | 2 +- Flutter/funnel-chart/callbacks.md | 2 +- Flutter/pyramid-chart/callbacks.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Flutter/cartesian-charts/callbacks.md b/Flutter/cartesian-charts/callbacks.md index 26de40850..1d79b1794 100644 --- a/Flutter/cartesian-charts/callbacks.md +++ b/Flutter/cartesian-charts/callbacks.md @@ -992,7 +992,7 @@ Triggers when the error bar is being rendered. In this `onRenderDetailsUpdate` c Used to create the renderer for custom series.This is applicable only when the custom series is defined in the sample and for built-in series types, it is not applicable. -Renderer created in this will hold the series state and this should be created for each series. [onCreateRenderer](https://pub.dev/documentation/syncfusion_flutter_charts/latest/charts/CartesianSeries/onCreateRenderer.html) callback function should return the renderer class and should not return null. +Renderer created in this will hold the series state and this should be created for each series. [`onCreateRenderer`](https://pub.dev/documentation/syncfusion_flutter_charts/latest/charts/CartesianSeries/onCreateRenderer.html) callback function should return the renderer class and should not return null. Series state will be created only once per series and will not be created again when we update the series. diff --git a/Flutter/circular-charts/callbacks.md b/Flutter/circular-charts/callbacks.md index 5c6504ee2..be8bd4e1f 100644 --- a/Flutter/circular-charts/callbacks.md +++ b/Flutter/circular-charts/callbacks.md @@ -411,7 +411,7 @@ the data points and legend. For further reference on this callback, Check the [` Used to create the renderer for custom series.This is applicable only when the custom series is defined in the sample and for built-in series types, it is not applicable. -Renderer created in this will hold the series state and this should be created for each series. [onCreateRenderer](https://pub.dev/documentation/syncfusion_flutter_charts/latest/charts/CircularSeries/onCreateRenderer.html) callback function should return the renderer class and should not return null. +Renderer created in this will hold the series state and this should be created for each series. [`onCreateRenderer`](https://pub.dev/documentation/syncfusion_flutter_charts/latest/charts/CircularSeries/onCreateRenderer.html) callback function should return the renderer class and should not return null. Series state will be created only once per series and will not be created again when we update the series. diff --git a/Flutter/funnel-chart/callbacks.md b/Flutter/funnel-chart/callbacks.md index 1123395ed..95067e13d 100644 --- a/Flutter/funnel-chart/callbacks.md +++ b/Flutter/funnel-chart/callbacks.md @@ -312,7 +312,7 @@ Triggers when long press on the series point. The [`onPointLongPress`](https://p Used to create the renderer for custom series. This is applicable only when the custom series is defined in the sample and for built-in series types, it is not applicable. -Renderer created in this will hold the series state and this should be created for each series. [onCreateRenderer](https://pub.dev/documentation/syncfusion_flutter_charts/latest/charts/FunnelSeries/onCreateRenderer.html) callback function should return the renderer class and should not return null. +Renderer created in this will hold the series state and this should be created for each series. [`onCreateRenderer`](https://pub.dev/documentation/syncfusion_flutter_charts/latest/charts/FunnelSeries/onCreateRenderer.html) callback function should return the renderer class and should not return null. Series state will be created only once per series and will not be created again when we update the series. diff --git a/Flutter/pyramid-chart/callbacks.md b/Flutter/pyramid-chart/callbacks.md index 12397cc99..9764706fc 100644 --- a/Flutter/pyramid-chart/callbacks.md +++ b/Flutter/pyramid-chart/callbacks.md @@ -315,7 +315,7 @@ Triggers when long press on the series point. The [`onPointLongPress`](https://p Used to create the renderer for custom series. This is applicable only when the custom series is defined in the sample and for built-in series types, it is not applicable. -Renderer created in this will hold the series state and this should be created for each series. [onCreateRenderer](https://pub.dev/documentation/syncfusion_flutter_charts/latest/charts/PyramidSeries/onCreateRenderer.html) callback function should return the renderer class and should not return null. +Renderer created in this will hold the series state and this should be created for each series. [`onCreateRenderer`](https://pub.dev/documentation/syncfusion_flutter_charts/latest/charts/PyramidSeries/onCreateRenderer.html) callback function should return the renderer class and should not return null. Series state will be created only once per series and will not be created again when we update the series.