1
1
<LineChart @ref =" lineChart" Width =" 500" Height =" 200" />
2
2
3
3
<div class =" mt-5" >
4
- <Button Type =" ButtonType.Button" Color =" ButtonColor.Primary" Size =" ButtonSize.Small" @onclick =" async () => await RandomizeAsync()" > Randomize </Button >
5
- <Button Type =" ButtonType.Button" Color =" ButtonColor.Primary" Size =" ButtonSize.Small" @onclick =" async () => await AddDatasetAsync()" > Add Dataset </Button >
6
- <Button Type =" ButtonType.Button" Color =" ButtonColor.Primary" Size =" ButtonSize.Small" @onclick =" async () => await AddDataAsync()" > Add Data </Button >
7
- <Button Type =" ButtonType.Button" Color =" ButtonColor.Primary" Size =" ButtonSize.Small" @onclick =" async () => await ShowHorizontalLineChartAsync()" > Horizontal Line Chart </Button >
8
- <Button Type =" ButtonType.Button" Color =" ButtonColor.Primary" Size =" ButtonSize.Small" @onclick =" async () => await ShowVerticalLineChartAsync()" > Vertical Line Chart </Button >
4
+ <Button Type =" ButtonType.Button" Color =" ButtonColor.Primary" Size =" ButtonSize.Small" @onclick =" async () => await RandomizeAsync()" > Randomize </Button >
5
+ <Button Type =" ButtonType.Button" Color =" ButtonColor.Primary" Size =" ButtonSize.Small" @onclick =" async () => await AddDatasetAsync()" > Add Dataset </Button >
6
+ <Button Type =" ButtonType.Button" Color =" ButtonColor.Primary" Size =" ButtonSize.Small" @onclick =" async () => await AddDataAsync()" > Add Data </Button >
7
+ <Button Type =" ButtonType.Button" Color =" ButtonColor.Primary" Size =" ButtonSize.Small" @onclick =" async () => await ShowHorizontalLineChartAsync()" > Horizontal Line Chart </Button >
8
+ <Button Type =" ButtonType.Button" Color =" ButtonColor.Primary" Size =" ButtonSize.Small" @onclick =" async () => await ShowVerticalLineChartAsync()" > Vertical Line Chart </Button >
9
9
</div >
10
10
11
11
@code {
12
- private LineChart lineChart = default ! ;
13
- private LineChartOptions lineChartOptions = default ! ;
14
- private ChartData chartData = default ! ;
12
+ private LineChart lineChart = default ! ;
13
+ private LineChartOptions lineChartOptions = default ! ;
14
+ private ChartData chartData = default ! ;
15
15
16
- private int datasetsCount ;
17
- private int labelsCount ;
16
+ private int datasetsCount ;
17
+ private int labelsCount ;
18
18
19
- private Random random = new ();
19
+ private Random random = new ();
20
20
21
- protected override void OnInitialized ()
22
- {
23
- chartData = new ChartData { Labels = GetDefaultDataLabels (6 ), Datasets = GetDefaultDataSets (3 ) };
24
- lineChartOptions = new () { Responsive = true , Interaction = new Interaction { Mode = InteractionMode .Index } };
25
- }
21
+ protected override void OnInitialized ()
22
+ {
23
+ chartData = new ChartData { Labels = GetDefaultDataLabels ( 6 ), Datasets = GetDefaultDataSets ( 3 ) };
24
+ lineChartOptions = new () { Responsive = true , Interaction = new Interaction { Mode = InteractionMode .Index } };
25
+ lineChartOptions .Scales .Y ! .Max = 200 ;
26
+ }
26
27
27
- protected override async Task OnAfterRenderAsync (bool firstRender )
28
+ protected override async Task OnAfterRenderAsync ( bool firstRender )
29
+ {
30
+ if ( firstRender )
28
31
{
29
- if (firstRender )
30
- {
31
- await lineChart .InitializeAsync (chartData , lineChartOptions );
32
- }
33
- await base .OnAfterRenderAsync (firstRender );
32
+ await lineChart .InitializeAsync ( chartData , lineChartOptions );
34
33
}
34
+ await base .OnAfterRenderAsync ( firstRender );
35
+ }
35
36
36
- private async Task RandomizeAsync ()
37
- {
38
- if ( chartData is null || chartData .Datasets is null || ! chartData .Datasets .Any ()) return ;
37
+ private async Task RandomizeAsync ()
38
+ {
39
+ if ( chartData is null || chartData .Datasets is null || ! chartData .Datasets .Any () ) return ;
39
40
40
- var newDatasets = new List <IChartDataset >();
41
+ var newDatasets = new List <IChartDataset >();
41
42
42
- foreach (var dataset in chartData .Datasets )
43
+ foreach ( var dataset in chartData .Datasets )
44
+ {
45
+ if ( dataset is LineChartDataset lineChartDataset
46
+ && lineChartDataset is not null
47
+ && lineChartDataset .Data is not null )
48
+ {
49
+ var count = lineChartDataset .Data .Count ;
50
+
51
+ var newData = new List <double ?>();
52
+ for ( var i = 0 ; i < count ; i ++ )
43
53
{
44
- if (dataset is LineChartDataset lineChartDataset
45
- && lineChartDataset is not null
46
- && lineChartDataset .Data is not null )
47
- {
48
- var count = lineChartDataset .Data .Count ;
49
-
50
- var newData = new List <double ?>();
51
- for (var i = 0 ; i < count ; i ++ )
52
- {
53
- newData .Add (random .Next (200 ));
54
- }
55
-
56
- lineChartDataset .Data = newData ;
57
- newDatasets .Add (lineChartDataset );
58
- }
54
+ newData .Add ( random .Next ( 200 ) );
59
55
}
60
56
61
- chartData . Datasets = newDatasets ;
62
-
63
- await lineChart . UpdateAsync ( chartData , lineChartOptions );
57
+ lineChartDataset . Data = newData ;
58
+ newDatasets . Add ( lineChartDataset );
59
+ }
64
60
}
65
61
66
- private async Task AddDatasetAsync ()
67
- {
68
- if (chartData is null || chartData .Datasets is null ) return ;
62
+ chartData .Datasets = newDatasets ;
69
63
70
- var chartDataset = GetRandomLineChartDataset ();
71
- chartData = await lineChart .AddDatasetAsync (chartData , chartDataset , lineChartOptions );
72
- }
64
+ await lineChart .UpdateValuesAsync ( chartData );
65
+ }
73
66
74
- private async Task AddDataAsync ()
75
- {
76
- if (chartData is null || chartData .Datasets is null )
77
- return ;
67
+ private async Task AddDatasetAsync ()
68
+ {
69
+ if ( chartData is null || chartData .Datasets is null ) return ;
78
70
79
- var data = new List <IChartDatasetData >();
80
- foreach (var dataset in chartData .Datasets )
81
- {
82
- if (dataset is LineChartDataset lineChartDataset )
83
- data .Add (new LineChartDatasetData (lineChartDataset .Label , random .Next (200 )));
84
- }
71
+ var chartDataset = GetRandomLineChartDataset ();
72
+ chartData = await lineChart .AddDatasetAsync ( chartData , chartDataset , lineChartOptions );
73
+ }
85
74
86
- chartData = await lineChart .AddDataAsync (chartData , GetNextDataLabel (), data );
87
- }
75
+ private async Task AddDataAsync ()
76
+ {
77
+ if ( chartData is null || chartData .Datasets is null )
78
+ return ;
88
79
89
- private async Task ShowHorizontalLineChartAsync ()
80
+ var data = new List <IChartDatasetData >();
81
+ foreach ( var dataset in chartData .Datasets )
90
82
{
91
- lineChartOptions . IndexAxis = " y " ;
92
- await lineChart . UpdateAsync ( chartData , lineChartOptions );
83
+ if ( dataset is LineChartDataset lineChartDataset )
84
+ data . Add ( new LineChartDatasetData ( lineChartDataset . Label , random . Next ( 200 ) ) );
93
85
}
94
86
95
- private async Task ShowVerticalLineChartAsync ()
96
- {
97
- lineChartOptions .IndexAxis = " x" ;
98
- await lineChart .UpdateAsync (chartData , lineChartOptions );
99
- }
87
+ chartData = await lineChart .AddDataAsync ( chartData , GetNextDataLabel (), data );
88
+ }
100
89
101
- #region Data Preparation
90
+ private async Task ShowHorizontalLineChartAsync ()
91
+ {
92
+ lineChartOptions .IndexAxis = " y" ;
93
+ await lineChart .UpdateAsync ( chartData , lineChartOptions );
94
+ }
102
95
103
- private List <IChartDataset > GetDefaultDataSets (int numberOfDatasets )
104
- {
105
- var datasets = new List <IChartDataset >();
96
+ private async Task ShowVerticalLineChartAsync ()
97
+ {
98
+ lineChartOptions .IndexAxis = " x" ;
99
+ await lineChart .UpdateAsync ( chartData , lineChartOptions );
100
+ }
106
101
107
- for (var index = 0 ; index < numberOfDatasets ; index ++ )
108
- {
109
- datasets .Add (GetRandomLineChartDataset ());
110
- }
102
+ #region Data Preparation
111
103
112
- return datasets ;
113
- }
104
+ private List <IChartDataset > GetDefaultDataSets ( int numberOfDatasets )
105
+ {
106
+ var datasets = new List <IChartDataset >();
114
107
115
- private LineChartDataset GetRandomLineChartDataset ( )
108
+ for ( var index = 0 ; index < numberOfDatasets ; index ++ )
116
109
{
117
- var c = ColorUtility .CategoricalTwelveColors [datasetsCount ].ToColor ();
118
-
119
- datasetsCount += 1 ;
120
-
121
- return new LineChartDataset
122
- {
123
- Label = $" Team {datasetsCount }" ,
124
- Data = GetRandomData (),
125
- BackgroundColor = c .ToRgbString (),
126
- BorderColor = c .ToRgbString (),
127
- BorderWidth = 2 ,
128
- HoverBorderWidth = 4 ,
129
- // PointBackgroundColor = c.ToRgbString(),
130
- // PointRadius = 0, // hide points
131
- // PointHoverRadius = 4,
132
- };
110
+ datasets .Add ( GetRandomLineChartDataset () );
133
111
}
134
112
135
- private List <double ? > GetRandomData ()
113
+ return datasets ;
114
+ }
115
+
116
+ private LineChartDataset GetRandomLineChartDataset ()
117
+ {
118
+ var c = ColorUtility .CategoricalTwelveColors [ datasetsCount ].ToColor ();
119
+
120
+ datasetsCount += 1 ;
121
+
122
+ return new LineChartDataset
123
+ {
124
+ Label = $" Team {datasetsCount }" ,
125
+ Data = GetRandomData (),
126
+ BackgroundColor = c .ToRgbString (),
127
+ BorderColor = c .ToRgbString (),
128
+ BorderWidth = 2 ,
129
+ HoverBorderWidth = 4 ,
130
+ // PointBackgroundColor = c.ToRgbString(),
131
+ // PointRadius = 0, // hide points
132
+ // PointHoverRadius = 4,
133
+ };
134
+ }
135
+
136
+ private List <double ? > GetRandomData ()
137
+ {
138
+ var data = new List <double ?>();
139
+ for ( var index = 0 ; index < labelsCount ; index ++ )
136
140
{
137
- var data = new List <double ?>();
138
- for (var index = 0 ; index < labelsCount ; index ++ )
139
- {
140
- data .Add (random .Next (200 ));
141
- }
142
-
143
- return data ;
141
+ data .Add ( random .Next ( 200 ) );
144
142
}
145
143
146
- private List <string > GetDefaultDataLabels (int numberOfLabels )
147
- {
148
- var labels = new List <string >();
149
- for (var index = 0 ; index < numberOfLabels ; index ++ )
150
- {
151
- labels .Add (GetNextDataLabel ());
152
- }
144
+ return data ;
145
+ }
153
146
154
- return labels ;
155
- }
156
-
157
- private string GetNextDataLabel ( )
147
+ private List < string > GetDefaultDataLabels ( int numberOfLabels )
148
+ {
149
+ var labels = new List < string >();
150
+ for ( var index = 0 ; index < numberOfLabels ; index ++ )
158
151
{
159
- labelsCount += 1 ;
160
- return $" Day {labelsCount }" ;
152
+ labels .Add ( GetNextDataLabel () );
161
153
}
162
154
163
- #endregion Data Preparation
155
+ return labels ;
156
+ }
157
+
158
+ private string GetNextDataLabel ()
159
+ {
160
+ labelsCount += 1 ;
161
+ return $" Day {labelsCount }" ;
162
+ }
163
+
164
+ #endregion Data Preparation
164
165
165
166
}
0 commit comments