TeeChart NET for Blazor Legend checkboxs not working
Posted: Wed Aug 14, 2024 3:19 pm
Hi,
I am trying to add checkboxes to my chart legend using Legend.ActiveStyle = LegendActiveStyles.CheckBox and Legend.CheckBoxes = true. Neither seem to be working.
Here is the sample code I am using:
public Task<string> GetJSChart(int chartType, int width, int height)
{
Steema.TeeChart.TChart mChart = new TChart();
bool animate = false;
switch (chartType) {
case 0: Line line = new Line(mChart.Chart);
animate=true;
break;
case 1:
Points points = new Points(mChart.Chart);
Points facilities = new Points(mChart.Chart);
animate=true;
break;
case 2: Area area1 = new Area(mChart.Chart);
Area area2 = new Area(mChart.Chart);
animate = true;
break;
case 3: break;
case 5: Bubble bubble = new Bubble(mChart.Chart); animate = true; break;
case 6: Candle candle = new Candle(mChart.Chart); break;
case 7: Gantt gantt = new Gantt(mChart.Chart);
break;
case 31: Pie pie = new Pie(mChart.Chart); break;
case 32: Donut donut = new Donut(mChart.Chart); break;
case 33:
case 34: CircularGauge cGauge = new CircularGauge(mChart.Chart); break;
}
var series = mChart.Series[0];
var seriesFacility = mChart.Series[1];
mChart.Header.Text = "ILI Chart";
mChart.Axes.Left.Title.Text = "Clock";
mChart.Axes.Left.Inverted = true;
mChart.Axes.Bottom.Title.Text = "Odometer";
mChart.Legend.ActiveStyle = LegendActiveStyles.CheckBox;
mChart.Legend.CheckBoxes = true;
mChart.Legend.LegendStyle = LegendStyles.Series;
int counter = 0;
foreach (Series s in mChart.Series)
{
if (series.GetType() == typeof(Bubble))
{
((Bubble)(s)).Pointer.Gradient.Visible = true;
((Bubble)(s)).Pointer.Pen.Visible = false;
s.FillSampleValues(50);
}
else if ((series.GetType() == typeof(Gantt)))
s.FillSampleValues(9);
else
{
// scatter series
if(counter == 0)
{
s.FillSampleValues();
for (int i = 0; i < 101; i++)
{
Random rnd = new Random();
s.XValues.Value = rnd.NextDouble() * 1000;
s.YValues.Value = rnd.NextDouble() * 12;
}
}
// Facilities
if (counter == 1)
{
s.FillSampleValues(15);
for (int i = 0; i <= 14; i++)
{
Random rnd = new Random();
s.XValues.Value = rnd.NextDouble() * 1000;
s.YValues.Value = 0;
}
((Points)(s)).Pointer.Style = PointerStyles.DownTriangle;
((Points)(s)).Pointer.VertSize = 12;
((Points)(s)).Pointer.HorizSize = 12;
}
counter++;
}
}
// ToDo
ChartAggregate aggregate = ChartAggregate.Average;
//mChart.Chart.Series.Aggregate
if ((series.GetType() != typeof(Gantt)))
mChart.Axes.Left.SetMinMax(0, 12);
chartName = "dynoTeeChart";
mChart.Export.Image.JScript.ChartName = chartName;
MemoryStream ms = new MemoryStream();
mChart.Export.Image.JScript.Width = width;
mChart.Export.Image.JScript.Height = height;
mChart.Export.Image.JScript.DoFullPage = false; //inline, no page <html> header tags
if ((series.GetType() == typeof(Pie)) ||
(series.GetType() == typeof(Donut)))
{
series.Marks.Visible = true;
series.Marks.Arrow.Visible = false;
series.Marks.Arrow.Color = Color.White;
series.Marks.Transparent = true;
series.Marks.Pen.Transparency = 100;
series.Marks.Pen.Color = Color.White;
series.Marks.Font.Color = Color.White;
mChart.Export.Image.JScript.CustomCode = getCustomCodeOp2(mChart);
}
else
mChart.Export.Image.JScript.CustomCode = getCustomCode1(animate, mChart, series);
if ((series.GetType() == typeof(Gantt)))
{
((Gantt)series).Brush.Gradient.Visible = false;
((Gantt)series).NextTasks[0] = 6;
mChart.Axes.Left.Title.Text = "task";
}
if ((series.GetType() == typeof(CircularGauge)))
{
mChart.Axes.Left.Title.Text = "µHz";
var customCode = new List<string>();
if (chartType == 34)
{
customCode.Add("modGauge(" + chartName + ", " + chartName + ".series.items[0]" + ");");
customCode.Add("setTimeout(modVal, 500);");
}
else
{
((CircularGauge)(mChart[0])).Value = 0;
customCode.Add(chartName + ".series.items[0]" + ".format.shadow.visible=false;");
customCode.Add(chartName + ".series.items[0]" + ".back.visible=false;");
customCode.Add("growVal(" + chartName + ");");
customCode.Add("setTimeout(growVal, 500);");
}
mChart.Export.Image.JScript.CustomCode = customCode.ToArray();
}
title = mChart.Series[0].Description;
mChart.Export.Image.JScript.Save(ms);
ms.Position = 0;
StreamReader reader = new StreamReader(ms);
//setup our chart name, here 'dynoChartName'.
string result = "<script> var " + chartName + "; " + reader.ReadToEnd() + "</script>";
return Task.FromResult(result);
}
Thanks
I am trying to add checkboxes to my chart legend using Legend.ActiveStyle = LegendActiveStyles.CheckBox and Legend.CheckBoxes = true. Neither seem to be working.
Here is the sample code I am using:
public Task<string> GetJSChart(int chartType, int width, int height)
{
Steema.TeeChart.TChart mChart = new TChart();
bool animate = false;
switch (chartType) {
case 0: Line line = new Line(mChart.Chart);
animate=true;
break;
case 1:
Points points = new Points(mChart.Chart);
Points facilities = new Points(mChart.Chart);
animate=true;
break;
case 2: Area area1 = new Area(mChart.Chart);
Area area2 = new Area(mChart.Chart);
animate = true;
break;
case 3: break;
case 5: Bubble bubble = new Bubble(mChart.Chart); animate = true; break;
case 6: Candle candle = new Candle(mChart.Chart); break;
case 7: Gantt gantt = new Gantt(mChart.Chart);
break;
case 31: Pie pie = new Pie(mChart.Chart); break;
case 32: Donut donut = new Donut(mChart.Chart); break;
case 33:
case 34: CircularGauge cGauge = new CircularGauge(mChart.Chart); break;
}
var series = mChart.Series[0];
var seriesFacility = mChart.Series[1];
mChart.Header.Text = "ILI Chart";
mChart.Axes.Left.Title.Text = "Clock";
mChart.Axes.Left.Inverted = true;
mChart.Axes.Bottom.Title.Text = "Odometer";
mChart.Legend.ActiveStyle = LegendActiveStyles.CheckBox;
mChart.Legend.CheckBoxes = true;
mChart.Legend.LegendStyle = LegendStyles.Series;
int counter = 0;
foreach (Series s in mChart.Series)
{
if (series.GetType() == typeof(Bubble))
{
((Bubble)(s)).Pointer.Gradient.Visible = true;
((Bubble)(s)).Pointer.Pen.Visible = false;
s.FillSampleValues(50);
}
else if ((series.GetType() == typeof(Gantt)))
s.FillSampleValues(9);
else
{
// scatter series
if(counter == 0)
{
s.FillSampleValues();
for (int i = 0; i < 101; i++)
{
Random rnd = new Random();
s.XValues.Value = rnd.NextDouble() * 1000;
s.YValues.Value = rnd.NextDouble() * 12;
}
}
// Facilities
if (counter == 1)
{
s.FillSampleValues(15);
for (int i = 0; i <= 14; i++)
{
Random rnd = new Random();
s.XValues.Value = rnd.NextDouble() * 1000;
s.YValues.Value = 0;
}
((Points)(s)).Pointer.Style = PointerStyles.DownTriangle;
((Points)(s)).Pointer.VertSize = 12;
((Points)(s)).Pointer.HorizSize = 12;
}
counter++;
}
}
// ToDo
ChartAggregate aggregate = ChartAggregate.Average;
//mChart.Chart.Series.Aggregate
if ((series.GetType() != typeof(Gantt)))
mChart.Axes.Left.SetMinMax(0, 12);
chartName = "dynoTeeChart";
mChart.Export.Image.JScript.ChartName = chartName;
MemoryStream ms = new MemoryStream();
mChart.Export.Image.JScript.Width = width;
mChart.Export.Image.JScript.Height = height;
mChart.Export.Image.JScript.DoFullPage = false; //inline, no page <html> header tags
if ((series.GetType() == typeof(Pie)) ||
(series.GetType() == typeof(Donut)))
{
series.Marks.Visible = true;
series.Marks.Arrow.Visible = false;
series.Marks.Arrow.Color = Color.White;
series.Marks.Transparent = true;
series.Marks.Pen.Transparency = 100;
series.Marks.Pen.Color = Color.White;
series.Marks.Font.Color = Color.White;
mChart.Export.Image.JScript.CustomCode = getCustomCodeOp2(mChart);
}
else
mChart.Export.Image.JScript.CustomCode = getCustomCode1(animate, mChart, series);
if ((series.GetType() == typeof(Gantt)))
{
((Gantt)series).Brush.Gradient.Visible = false;
((Gantt)series).NextTasks[0] = 6;
mChart.Axes.Left.Title.Text = "task";
}
if ((series.GetType() == typeof(CircularGauge)))
{
mChart.Axes.Left.Title.Text = "µHz";
var customCode = new List<string>();
if (chartType == 34)
{
customCode.Add("modGauge(" + chartName + ", " + chartName + ".series.items[0]" + ");");
customCode.Add("setTimeout(modVal, 500);");
}
else
{
((CircularGauge)(mChart[0])).Value = 0;
customCode.Add(chartName + ".series.items[0]" + ".format.shadow.visible=false;");
customCode.Add(chartName + ".series.items[0]" + ".back.visible=false;");
customCode.Add("growVal(" + chartName + ");");
customCode.Add("setTimeout(growVal, 500);");
}
mChart.Export.Image.JScript.CustomCode = customCode.ToArray();
}
title = mChart.Series[0].Description;
mChart.Export.Image.JScript.Save(ms);
ms.Position = 0;
StreamReader reader = new StreamReader(ms);
//setup our chart name, here 'dynoChartName'.
string result = "<script> var " + chartName + "; " + reader.ReadToEnd() + "</script>";
return Task.FromResult(result);
}
Thanks