protected override void BeginProcessing()
        {
            SeriesBase result = null;

            if (ParameterSetName == "New")
            {
                if (Random)
                {
                    if (RandomGenerator == null && Seed != -1)
                    {
                        RandomGenerator = new XoshiroRandom(Seed);
                    }

                    var m  = typeof(Series).GetMethod("CreateRandom");
                    var gm = m.MakeGenericMethod(DataType);
                    result = gm.Invoke(null, new object [] { Count, RandomGenerator }) as SeriesBase;
                }
                else
                {
                    result = new Series(DataType, Count, Value);
                }
            }
            else
            {
                result = new Series(Data);
            }

            WriteObject(result);
        }
Beispiel #2
0
        protected virtual void ExcuteGrouper()
        {
            if (_groupIndices != null)
            {
                return;
            }
            _indices = new Dictionary <object, IDataIndex>();
            var rowSize = _dataFrame.Index.Size;

            //TODO:未完成列轴
            if (_grouper.Axis == 0)
            {
                _keySeries = _dataFrame[_grouper.Key];
            }

            _groupIndices = new Dictionary <object, List <int> >();
            for (var i = 0; i < rowSize; i++)
            {
                var currentKey = _keySeries[i];
                if (_groupIndices.ContainsKey(currentKey))
                {
                    _groupIndices[currentKey].Add(i);
                }
                else
                {
                    var list = new List <int>
                    {
                        i
                    };
                    _groupIndices.Add(currentKey, list);
                }
            }
        }
Beispiel #3
0
        private void Form1_Load(object sender, EventArgs e)
        {
            pLinqServerModeSource.Source = SalesProductDataGenerator.GetData();

            #region #ControlRowSource
            // Assign a new instance of ControlRowSource to the chart's DataSource property.
            chartControl.DataSource = new ControlRowSource()
            {
                Control     = mainView,
                ControlRows = ControlRows.Selected
            };
            // Specify chart properties that configures series to display.
            chartControl.SeriesDataMember = "State";

            SeriesBase seriesTemplate = chartControl.SeriesTemplate;
            seriesTemplate.ArgumentDataMember = "Category";
            seriesTemplate.ValueDataMembers.AddRange("Revenue");
            // Configure additional chart properties.
            seriesTemplate.CrosshairLabelPattern  = "{S}: {V:C2}";
            seriesTemplate.SeriesPointsSorting    = SortingMode.Descending;
            seriesTemplate.SeriesPointsSortingKey = SeriesPointKey.Value_1;
            seriesTemplate.SummaryFunction        = "SUM([Revenue])";

            XYDiagram diagram = (XYDiagram)chartControl.Diagram;
            diagram.AxisY.Label.TextPattern = "{V:C0}";

            chartControl.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Right;
            chartControl.Legend.AlignmentVertical   = LegendAlignmentVertical.Top;
            #endregion #ControlRowSource
        }
Beispiel #4
0
 protected override void DrawPath(SeriesBase series, Brush brush, double strokeThickness)
 {
     if (series is LineSeries || series is HiLoSeries)
     {
         PartsCollection partsCollection = new PartsCollection();
         if (series is LineSeries)
         {
             LineSeries lineSeries = series as LineSeries;
             partsCollection = lineSeries.Parts;
         }
         else if (series is HiLoSeries)
         {
             HiLoSeries lineSeries = series as HiLoSeries;
             partsCollection = lineSeries.Parts;
         }
         if (RenderingMode == RenderingMode.Default)
         {
             for (int i = 0; i < partsCollection.Count; i++)
             {
                 UIElement element = partsCollection[i].CreatePart();
                 if (element != null)
                 {
                     PartsCanvas.Children.Add(element);
                 }
             }
         }
     }
 }
Beispiel #5
0
 /// <summary>Creates service definition that can be registered with a server</summary>
 /// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
 public static grpc::ServerServiceDefinition BindService(SeriesBase serviceImpl)
 {
     return(grpc::ServerServiceDefinition.CreateBuilder()
            .AddMethod(__Method_GetLastDownloaded, serviceImpl.GetLastDownloaded)
            .AddMethod(__Method_GetAll, serviceImpl.GetAll)
            .AddMethod(__Method_GetById, serviceImpl.GetById).Build());
 }
Beispiel #6
0
        private static string GetEpisodeXml(SeriesBase series, Episode episode, IEnumerable <string> bannerImages)
        {
            var metadata = new EpisodeMetadata();

            var m = new Movie
            {
                Title       = episode.EpisodeName,
                Season      = episode.SeasonNumber.Value,
                Episode     = episode.EpisodeNumber.Value,
                Year        = episode.FirstAired.Year,
                Rating      = episode.Rating,
                Plot        = series.Overview,
                EpisodePlot = episode.Overview,
                MPAA        = series.ContentRating,
                Runtime     = series.Runtime.Value,
                genres      = SeriesIOHelper.ToArray(series.Genre),
                Director    = episode.Director,
                Credits     = episode.Writer
            };
            var cast = series.Actors.Length > 0
                ? series.Actors
                : episode.GuestStars;

            m.cast  = SeriesIOHelper.ToArray(cast);
            m.image = bannerImages.ToArray();

            metadata.Movie = m;
            return(metadata.AsXml());
        }
Beispiel #7
0
 /// <summary>
 /// Lable格式化设置
 /// <para>【{A} Use it to display a series point arguments 】</para>
 /// <para>【{V} Use it to display a series point values】</para>
 /// <para>【{S} Use it to display the name of the series】</para>
 /// </summary>
 /// <param name="series">SeriesBase</param>
 /// <param name="formatString">Lable格式化设置;【{A}{V}{S}】</param>
 public static void CustomLable(this SeriesBase series, string formatString)
 {
     if (series.LabelsVisibility != DefaultBoolean.True)
     {
         series.LabelsVisibility = DefaultBoolean.True;
     }
     series.Label.PointOptions.Pattern = formatString;
 }
 /// <summary>
 /// 十字标线的Lable格式化设置
 /// 【{A} Use it to display a series point arguments 】
 /// 【{V} Use it to display a series point values】
 /// 【{S} Use it to display the name of the series】
 /// </summary>
 /// <param name="series">SeriesBase</param>
 /// <param name="formatString">CrosshairLabel格式化设置;【{A}{V}{S}】</param>
 public static void CustomCrosshairLabel(this SeriesBase series, string formatString)
 {
     if (series.CrosshairEnabled != DefaultBoolean.True)
     {
         series.CrosshairEnabled = DefaultBoolean.True;
     }
     series.CrosshairLabelPattern = formatString;
 }
Beispiel #9
0
        private void Form1_Load(object sender, EventArgs e)
        {
            this.gSPTableAdapter.Fill(this.gspDataSet.GSP);

            SeriesBase seriesTemplate = chart.SeriesTemplate;

            seriesTemplate.SeriesPointsSorting    = SortingMode.Ascending;
            seriesTemplate.SeriesPointsSortingKey = SeriesPointKey.Value_1;
        }
Beispiel #10
0
 private void ConfigureSeries(SeriesBase series)
 {
     series.ArgumentDataMember = "Year";
     series.ValueDataMembers.AddRange(new string[] { "Sales" });
     series.ArgumentScaleType = ScaleType.Qualitative;
     series.ValueScaleType    = ScaleType.Numerical;
     series.LabelsVisibility  = DefaultBoolean.True;
     series.Label.TextPattern = "{A}: {V:F2}";
 }
Beispiel #11
0
        /// <summary>
        /// 设置ColorEach
        /// </summary>
        /// <param name="series">SeriesBase</param>
        /// <param name="colorEach">是否设置成ColorEach</param>
        public static void SetColorEach(this SeriesBase series, bool colorEach)
        {
            SeriesViewColorEachSupportBase colorEachView = (SeriesViewColorEachSupportBase)series.View;

            if (colorEachView != null)
            {
                colorEachView.ColorEach = colorEach;
            }
        }
 private void InitChartSeries(SeriesBase chartSeries)
 {
     if (chartSeries == null)
     {
         return;
     }
     ChartSeries.LegendTextPattern  = "{A}";
     ChartSeries.ArgumentDataMember = "CategoryName";
     ChartSeries.ValueDataMembers.AddRange("Quantity");
 }
Beispiel #13
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="series">Base series</param>
 public SeriesGraph(SeriesBase series)
 {
     this.series = series;
     points.Clear();
     for (int i = 0; i < series.Count; i++)
     {
         IPoint p = new PointBase(series[i, 0], series[i, 1]);
         points.Add(p);
     }
 }
Beispiel #14
0
        override protected void DrawPath(SeriesBase series, System.Drawing.Pen pen)
        {
            if (series is ColumnSeries)
            {
                var          points       = new PointCollection();
                var          pointCount   = 0;
                var          rects        = new List <Rect>();
                ColumnSeries columnSeries = series as ColumnSeries;
                points     = columnSeries.ColumnPoints;
                pointCount = columnSeries.ColumnPoints.Count;
                rects      = columnSeries.Rects;
                System.Drawing.Brush fill    = columnSeries.Fill.AsDrawingBrush();
                System.Drawing.Pen   fillPen = new System.Drawing.Pen(fill);
                if (RenderingMode == RenderingMode.Default)
                {
                    for (int i = 0; i < columnSeries.Parts.Count; i++)
                    {
                        System.Windows.Shapes.Rectangle element = (columnSeries.Parts[i] as ColumnPart).CreatePart() as System.Windows.Shapes.Rectangle;
                        if (element != null && !PartsCanvas.Children.Contains(element))
                        {
                            PartsCanvas.Children.Add(element);
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < rects.Count; i++)
                    {
                        Rect rect = rects[i];
                        switch (RenderingMode)
                        {
                        case RenderingMode.GDIRendering:
                            GDIGraphics.DrawRectangle(pen, (float)rect.X, (float)rect.Y, (float)rect.Width, (float)rect.Height);
                            GDIGraphics.FillRectangle(fill, (float)rect.X, (float)rect.Y, (float)rect.Width, (float)rect.Height);
                            break;

                        case RenderingMode.Default:
                            break;

                        case RenderingMode.WritableBitmap:
                            this.WritableBitmap.Lock();
                            WritableBitmapGraphics.DrawRectangle(pen, (float)rect.X, (float)rect.Y, (float)rect.Width, (float)rect.Height);
                            WritableBitmapGraphics.FillRectangle(fill, (float)rect.X, (float)rect.Y, (float)rect.Width, (float)rect.Height);
                            this.WritableBitmap.Unlock();
                            break;

                        default:
                            break;
                        }
                    }
                    this.Collection.InvalidateBitmap();
                }
            }
        }
Beispiel #15
0
 protected override void DrawPath(SeriesBase series, Brush brush, double strokeThickness)
 {
     if (series is SplineSeries)
     {
         SplineSeries splineSeries = series as SplineSeries;
         PartsCanvas.Children.Clear();
         for (int i = 0; i < splineSeries.Parts.Count; i++)
         {
             PartsCanvas.Children.Add(splineSeries.Parts[i].CreatePart());
         }
     }
 }
Beispiel #16
0
 protected override void DrawPath(SeriesBase series, Brush brush, double strokeThickness)
 {
     if (series is StepLineSeries)
     {
         StepLineSeries stepLineSeries = series as StepLineSeries;
         PartsCanvas.Children.Clear();
         foreach (SeriesPartBase t in stepLineSeries.Parts)
         {
             PartsCanvas.Children.Add(t.CreatePart());
         }
     }
 }
Beispiel #17
0
 /// <summary>
 /// Draws the path.
 /// </summary>
 /// <param name="series">The series.</param>
 /// <param name="brush">The brush.</param>
 /// <param name="strokeThickness">The stroke thickness.</param>
 protected override void DrawPath(SeriesBase series, Brush brush, double strokeThickness)
 {
     if (series is AreaSeries)
     {
         AreaSeries areaSeries = series as AreaSeries;
         PartsCanvas.Children.Clear();
         foreach (SeriesPartBase part in areaSeries.Parts)
         {
             PartsCanvas.Children.Add(part.CreatePart());
         }
     }
 }
Beispiel #18
0
 /// <summary>
 /// 设置饼状图的Lable位置
 /// </summary>
 /// <param name="series">SeriesBase</param>
 /// <param name="lablePosition">PieSeriesLabelPosition枚举</param>
 public static void SetLablePosition(this SeriesBase series, PieSeriesLabelPosition lablePosition)
 {
     if (series.Label is PieSeriesLabel)
     {
         PieSeriesLabel _label = series.Label as PieSeriesLabel;
         _label.Position = lablePosition;
     }
     //if (series.Label is Pie3DSeriesLabel)
     //{
     //    Pie3DSeriesLabel _label = series.Label as Pie3DSeriesLabel;
     //    _label.Position = lablePosition;
     //}
 }
Beispiel #19
0
        public void TestSerialization()
        {
            var s = new Series(new float[] { 1, 2, 3 });

            using (var stream = new MemoryStream())
            {
                s.Save(stream);
                stream.Position = 0;

                var s2 = SeriesBase.Load(stream);

                Assert.Equal(new float[] { 1, 2, 3 }, s2.ToArray <float>());
            }
        }
Beispiel #20
0
        protected override void DrawPath(SeriesBase series, System.Drawing.Pen pen)
        {
            if (series is AreaSeries)
            {
                AreaSeries areaSeries = series as AreaSeries;
                var        brush      = (this.Series as AreaSeries).Fill.AsDrawingBrush();
                var        points     = areaSeries.AreaPoints;
                var        pointCount = areaSeries.AreaPoints.Count;
                if (RenderingMode == EcoProIT.Chart.Utility.RenderingMode.Default)
                {
                    PartsCanvas.Children.Clear();
                    for (int i = 0; i < areaSeries.Parts.Count; i++)
                    {
                        var element = areaSeries.Parts[i].CreatePart();
                        if (element != null && !PartsCanvas.Children.Contains(element))
                        {
                            PartsCanvas.Children.Add(element);
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < pointCount - 1; i++)
                    {
                        switch (RenderingMode)
                        {
                        case Utility.RenderingMode.GDIRendering:
                            GDIGraphics.DrawLine(pen, points[i].AsDrawingPointF(), points[i + 1].AsDrawingPointF());
                            break;

                        case Utility.RenderingMode.Default:
                            break;

                        case Utility.RenderingMode.WritableBitmap:
                            this.WritableBitmap.Lock();
                            WritableBitmapGraphics.DrawLine(pen, points[i].AsDrawingPointF(), points[i + 1].AsDrawingPointF());
                            this.WritableBitmap.AddDirtyRect(new Int32Rect(0, 0, WritableBitmap.PixelWidth, WritableBitmap.PixelHeight));
                            this.WritableBitmap.Unlock();
                            break;

                        default:
                            break;
                        }
                    }
                    DrawFilledPath(areaSeries, pen, brush);
                }
                this.Collection.InvalidateBitmap();
            }
        }
Beispiel #21
0
 /// <summary>
 /// 饼状Series设置成百分比显示
 /// </summary>
 /// <param name="series">SeriesBase</param>
 /// <param name="valueLegendType">Series对应Lengend显示类型</param>
 /// <param name="lengendPointView">Series对应Lengend PointView类型</param>
 public static void SetPiePercentage(this SeriesBase series, NumericFormat valueLegendType, PointView lengendPointView)
 {
     if (series.View is PieSeriesView || series.View is Pie3DSeriesView)
     {
         PiePointOptions _piePointOptions = (PiePointOptions)series.Label.PointOptions;
         if (_piePointOptions != null)
         {
             _piePointOptions.PercentOptions.ValueAsPercent       = true;
             _piePointOptions.ValueNumericOptions.Format          = NumericFormat.Percent;
             _piePointOptions.ValueNumericOptions.Precision       = 0;
             series.LegendPointOptions.ValueNumericOptions.Format = valueLegendType;
             series.LegendPointOptions.PointView = lengendPointView;
         }
     }
 }
 /// <summary>
 /// Draws the path.
 /// </summary>
 /// <param name="series">The series.</param>
 /// <param name="brush">The brush.</param>
 /// <param name="strokeThickness">The stroke thickness.</param>
 protected override void DrawPath(SeriesBase series, Brush brush, double strokeThickness)
 {
     if (series is HiLoOpenCloseSeries)
     {
         PartsCollection partsCollection = new PartsCollection();
         partsCollection = (series as HiLoOpenCloseSeries).Parts;
         if (RenderingMode == RenderingMode.Default)
         {
             for (int i = 0; i < partsCollection.Count; i++)
             {
                 PartsCanvas.Children.Add(partsCollection[i].CreatePart());
             }
         }
     }
 }
Beispiel #23
0
        /// <summary>
        /// 饼状图突出设置
        /// </summary>
        /// <param name="chart">ChartControl</param>
        /// <param name="pieSeries">Series【仅仅适用于PieSeriesView】</param>
        /// <param name="explodeMode">突出模式【枚举】</param>
        /// <param name="explodedValue">突出间距</param>
        /// <param name="dragPie">是否可以拖动突出饼状</param>
        public static void SetPieExplode(this ChartControl chart, SeriesBase pieSeries, PieExplodeMode explodeMode, int explodedValue, bool dragPie)
        {
            if (pieSeries.View is PieSeriesView)
            {
                if (!chart.RuntimeHitTesting)
                {
                    chart.RuntimeHitTesting = true;
                }

                PieSeriesView _pieView = pieSeries.View as PieSeriesView;
                _pieView.ExplodeMode = explodeMode;
                _pieView.ExplodedDistancePercentage = explodedValue;
                _pieView.RuntimeExploding           = dragPie;
            }
        }
Beispiel #24
0
        protected override void DrawPath(SeriesBase series, System.Drawing.Pen pen)
        {
            if (series is SplineSeries)
            {
                SplineSeries splineSeries = series as SplineSeries;
                var          points       = splineSeries.SplinePoints;
                var          pointCount   = splineSeries.SplinePoints.Count;
                if (RenderingMode == Utility.RenderingMode.Default)
                {
                    PartsCanvas.Children.Clear();
                    for (int i = 0; i < splineSeries.Parts.Count; i++)
                    {
                        var element = splineSeries.Parts[i].CreatePart();
                        if (element != null && !PartsCanvas.Children.Contains(element))
                        {
                            PartsCanvas.Children.Add(element);
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < pointCount - 1; i++)
                    {
                        switch (RenderingMode)
                        {
                        case Utility.RenderingMode.GDIRendering:
                            GDIGraphics.DrawBezier(pen, points[i].AsDrawingPointF(), splineSeries.FirstControlPoints[i].AsDrawingPointF(), splineSeries.SecondControlPoints[i].AsDrawingPointF(), points[i + 1].AsDrawingPointF());
                            break;

                        case Utility.RenderingMode.Default:
                            break;

                        case Utility.RenderingMode.WritableBitmap:
                            this.WritableBitmap.Lock();
                            WritableBitmapGraphics.DrawBezier(pen, points[i].AsDrawingPointF(), splineSeries.FirstControlPoints[i].AsDrawingPointF(), splineSeries.SecondControlPoints[i].AsDrawingPointF(), points[i + 1].AsDrawingPointF());
                            this.WritableBitmap.AddDirtyRect(new Int32Rect(0, 0, WritableBitmap.PixelWidth, WritableBitmap.PixelHeight));
                            this.WritableBitmap.Unlock();
                            break;

                        default:
                            break;
                        }
                    }
                    this.Collection.InvalidateBitmap();
                }
            }
        }
Beispiel #25
0
        public override void Fit(SeriesBase data)
        {
            _encoding   = new Dictionary <object, T>();
            _categories = new List <object>();

            var count = 0;

            foreach (var value in data.UnderlyingList)
            {
                if (!_encoding.ContainsKey(value))
                {
                    _encoding.Add(value, SmartConverter.ConvertTo <T>(count));
                    _categories.Add(value);
                    ++count;
                }
            }
        }
Beispiel #26
0
        override protected void DrawPath(SeriesBase series, System.Drawing.Pen pen)
        {
            if (series is StepLineSeries)
            {
                StepLineSeries stepLineSeries = series as StepLineSeries;
                var            points         = stepLineSeries.LinePoints;
                var            pointCount     = stepLineSeries.LinePoints.Count;
                if (RenderingMode == Utility.RenderingMode.Default)
                {
                    PartsCanvas.Children.Clear();
                    for (int i = 0; i < stepLineSeries.Parts.Count; i++)
                    {
                        var element = stepLineSeries.Parts[i].CreatePart();
                        if (element != null && !PartsCanvas.Children.Contains(element))
                        {
                            PartsCanvas.Children.Add(element);
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < pointCount - 1; i++)
                    {
                        switch (RenderingMode)
                        {
                        case Utility.RenderingMode.GDIRendering:
                            GDIGraphics.DrawLine(pen, points[i].AsDrawingPointF(), points[i + 1].AsDrawingPointF());
                            break;

                        case Utility.RenderingMode.Default:
                            break;

                        case Utility.RenderingMode.WritableBitmap:
                            WritableBitmapGraphics.DrawLine(pen, points[i].AsDrawingPointF(), points[i + 1].AsDrawingPointF());
                            break;

                        default:
                            break;
                        }
                    }
                    this.Collection.InvalidateBitmap();
                }
            }
        }
Beispiel #27
0
        public SeriesMetadata(SeriesBase series)
        {
            var s = new Series
            {
                Title     = series.SeriesName,
                genres    = SeriesIOHelper.ToArray(series.Genre),
                Premiered = series.FirstAired?.ToString(Constants.DATE_FMT),
                Year      = series.FirstAired.HasValue ? series.FirstAired.Value.Year : DateTime.Today.Year,
                Rating    = double.Parse(series.RatingString ?? "0") * 10,
                Status    = series.Status,
                MPAA      = series.MPAA,
                TvdbId    = series.Id.ToString(),
                Runtime   = series.Runtime.Value,
                Plot      = series.Overview,
                cast      = SeriesIOHelper.ToArray(series.Actors)
            };

            Series = s;
        }
Beispiel #28
0
 /// <summary>
 /// Draws the path.
 /// </summary>
 /// <param name="series">The series.</param>
 /// <param name="brush">The brush.</param>
 /// <param name="strokeThickness">The stroke thickness.</param>
 protected override void DrawPath(SeriesBase series, Brush brush, double strokeThickness)
 {
     if (series is ColumnSeries)
     {
         ColumnSeries columnSeries = series as ColumnSeries;
         if (RenderingMode == RenderingMode.Default)
         {
             for (int i = 0; i < columnSeries.Parts.Count; i++)
             {
                 var columnPart = columnSeries.Parts[i] as ColumnPart;
                 if (columnPart != null)
                 {
                     Rectangle element = columnPart.CreatePart() as Rectangle;
                     PartsCanvas.Children.Add(element);
                 }
             }
         }
     }
 }
Beispiel #29
0
        public override SeriesBase Transform(SeriesBase data)
        {
            var result = new Series(typeof(T), data.Count, _fallbackValue);

            for (var i = 0; i < result.Count; ++i)
            {
                if (_encoding.TryGetValue(data[i], out var value))
                {
                    result[i] = value;
                }
                else
                {
                    if (!_useFallback)
                    {
                        throw new ArgumentException($"Unknown value: {data[i]}");
                    }
                }
            }

            return(result);
        }
Beispiel #30
0
        private void DrawFilledPath(SeriesBase series, System.Drawing.Pen pen, System.Drawing.Brush brush)
        {
            var path = new System.Drawing.Drawing2D.GraphicsPath();

            if (series is AreaSeries)
            {
                path.StartFigure();
                AreaSeries areaSeries = series as AreaSeries;
                var        points     = areaSeries.AreaPoints;
                var        pointCount = areaSeries.AreaPoints.Count;
                for (int i = 0; i < pointCount - 1; i++)
                {
                    System.Drawing.PointF startPoint = points[i].AsDrawingPointF();
                    System.Drawing.PointF endPoint   = points[i + 1].AsDrawingPointF();
                    path.AddLine(startPoint, endPoint);
                }

                path.CloseAllFigures();

                switch (RenderingMode)
                {
                case EcoProIT.Chart.Utility.RenderingMode.GDIRendering:
                    GDIGraphics.FillPath(brush, path);
                    break;

                case Utility.RenderingMode.Default:
                    break;

                case Utility.RenderingMode.WritableBitmap:
                    WritableBitmapGraphics.FillPath(brush, path);
                    break;

                default:
                    break;
                }
            }
        }
    private void buildSeries(object CurrentValue)
    {
        DataTable dtSeriesList = CurrentValue as DataTable;
        SeriesBase[] seri = new SeriesBase[dtSeriesList.Rows.Count];
        for (int i = 0; i < dtSeriesList.Rows.Count; i++)
            {
                string propName = dtSeriesList.Rows[i]["name"].ToString();
                string propType = dtSeriesList.Rows[i]["type"].ToString();
                string propValue = dtSeriesList.Rows[i]["val"].ToString();

                seri[i] = createSerie(propType);

                if (seri[i] != null)
                {
                    seri[i].DataFieldY = propValue;
                    //seri[i].TooltipsAppearance.DataFormatString = propName;
                    if (seri[i].Type == Telerik.Web.UI.HtmlChart.SeriesType.Pie)
                    {
                        (seri[i] as PieSeries).NameField = propName;
                    }
                    else
                    {
                        seri[i].Name = propName;
                        seri[i].TooltipsAppearance.ClientTemplate = propName;
                    }
                }
                //chart.PlotArea.Series.Add(seri[i]);
            }
            chart.PlotArea.Series.AddRange(seri);
            this.Controls.Add(chart);
           // }
            //xu ly add series vao chart
           // SeriesBase seri = new LineSeries();
           // SeriesBase seri1 = new PieSeries();
           //SeriesBase seri2 = new ColumnSeries();
           // if (seri1 != null)
           // {

           //     seri.DataFieldY = "DoanhThu";
           //     seri1.DataFieldY = "value";
           //     seri1.Name="name";
           //     seri2.DataFieldY = "ThuKH";
           //     chart.PlotArea.Series.Add(seri);
           //     chart.PlotArea.Series.Add(seri1);
           //    chart.PlotArea.Series.Add(seri2);
           //     this.Controls.Add(chart);
           // }
    }