Ejemplo n.º 1
0
        private void DrawBars()
        {
            this.chartControl1.Series.Clear();
            foreach (string _yfield in AxisYFields)
            {
                Series _se = new DevExpress.XtraCharts.Series();
                _se.View = new DevExpress.XtraCharts.PieSeriesView();
                PieSeriesView _pv = _se.View as PieSeriesView;
                _pv.RuntimeExploding = true;


                PieSeriesLabel _ps = _se.Label as PieSeriesLabel;
                _ps.Position = PieSeriesLabelPosition.TwoColumns;

                PiePointOptions _piePointOptions = _se.PointOptions as PiePointOptions;
                _se.PointOptions.HiddenSerializableString = "to be serialized";
                _se.PointOptions.PointView = DevExpress.XtraCharts.PointView.ArgumentAndValues;
                _piePointOptions.PercentOptions.ValueAsPercent     = true;
                _piePointOptions.PercentOptions.PercentageAccuracy = dataPrecision + 2;
                _se.PointOptions.ValueNumericOptions.Format        = DevExpress.XtraCharts.NumericFormat.Percent;
                _se.PointOptions.ValueNumericOptions.Precision     = dataPrecision;
                _se.PointOptionsTypeName = "PiePointOptions";
                _se.ValueDataMembers.Clear();
                _se.DataSource         = chartData;
                _se.ArgumentDataMember = AxisXField;
                _se.ValueDataMembers.AddRange(new string[] { _yfield });
                _se.LegendText = AxisYTitle[_yfield];
                this.chartControl1.Series.Add(_se);
            }
            int _rowCount = chartData.Rows.Count;
        }
Ejemplo n.º 2
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;
         }
     }
 }
Ejemplo n.º 3
0
        private void InitPieChart(List <ProjectSummary> dataSource, string valueName, ChartControl pieChart)
        {
            // pie chart
            Series pieSeries = new Series();

            pieSeries.ValueScaleType = ScaleType.Numerical;
            pieSeries.LegendPointOptions.PointView = PointView.Argument;
            pieSeries.LegendPointOptions.ValueNumericOptions.Format = NumericFormat.Percent;
            PieSeriesView pieView = new PieSeriesView();

            pieView.ExplodedDistancePercentage = 10;
            SeriesTitle title = new SeriesTitle();

            title.Text = Properties.Resources.ResourceManager.GetString(valueName + "Rate");
            pieView.Titles.Add(title);
            pieView.RuntimeExploding = true;
            pieSeries.View           = pieView;

            foreach (var item in dataSource)
            {
                SeriesPoint seriesPoint = new SeriesPoint(item.Name, new object[] { ((object)(item.GetType().GetProperty(valueName).GetValue(item, null))) });
                pieSeries.Points.Add(seriesPoint);
            }
            pieChart.Series.Add(pieSeries);


            PieSeriesLabel pieSerieslable = pieSeries.Label as PieSeriesLabel;

            if (pieSerieslable != null)
            {
                pieSerieslable.PointOptions.PointView = PointView.ArgumentAndValues;
                pieSerieslable.Position      = PieSeriesLabelPosition.TwoColumns;
                pieSerieslable.TextAlignment = StringAlignment.Center;
            }
            PiePointOptions options = pieSeries.Label.PointOptions as PiePointOptions;

            if (options != null)
            {
                options.PercentOptions.PercentageAccuracy = 2;
                options.PercentOptions.ValueAsPercent     = true;
                options.ValueNumericOptions.Format        = NumericFormat.Percent;
            }
        }
        public void LoadGraph()
        {
            if (_report.State != Report.StateEnum.Executed)
            {
                return;
            }

            bool rotateGraph = false;
            bool rotateAxes  = ((_report.GraphOptions & OlapReport.GraphOptionsEnum.RotateAxes) > 0);

            int seriesPosCount = (rotateAxes ? _report.Cellset.Axis1PosCount: _report.Cellset.Axis0PosCount);
            int seriesMemCount = (rotateAxes ? _report.Cellset.Axis1TupleMemCount: _report.Cellset.Axis0TupleMemCount);
            int catPosCount    = (rotateAxes ? _report.Cellset.Axis0PosCount: _report.Cellset.Axis1PosCount);
            int catMemCount    = (rotateAxes ? _report.Cellset.Axis0TupleMemCount: _report.Cellset.Axis1TupleMemCount);

            if (seriesPosCount > 256)
            {
                seriesPosCount = 256;
            }

            if (catPosCount > 1024)
            {
                catPosCount = 1024;
            }

            bool showValues = (_report.GraphOptions & OlapReport.GraphOptionsEnum.ShowValues) > 0;
            bool showSeries = (_report.GraphOptions & OlapReport.GraphOptionsEnum.ShowSeries) > 0;
            bool showCats   = (_report.GraphOptions & OlapReport.GraphOptionsEnum.ShowCategories) > 0;
            bool setScaling = (_report.GraphOptions & OlapReport.GraphOptionsEnum.SetScaling) > 0;

            // create series
            for (int i = 0; i < seriesPosCount; i++)
            {
                string name = "";
                for (int j = 0; j < seriesMemCount; j++)
                {
                    name += (j == 0 ? "" : " | ") + (rotateAxes ? _report.Cellset.GetCellsetMember(1, j, i).Name : _report.Cellset.GetCellsetMember(0, j, i).Name);
                }

                Series series = new Series();
                series.Name = name;
                _chCtrl.Series.Add(series);

                // type
                if (_report.GraphType == OlapReport.GraphTypeEnum.Pie)
                {
                    // limit number of series
                    if (seriesPosCount > 6)
                    {
                        seriesPosCount = 6;
                    }

                    // disable scaling for pie
                    setScaling = false;

                    series.ChangeView(ViewType.Pie);

                    PiePointOptions ppo = (PiePointOptions)series.PointOptions;
                    PieSeriesView   psw = (PieSeriesView)series.View;
                    PieSeriesLabel  psl = (PieSeriesLabel)series.Label;

                    psl.Position        = PieSeriesLabelPosition.TwoColumns;
                    series.ShowInLegend = false;                   // cause it's shown in pie anyway
                    showValues          = true;
                    showCats            = true;

                    this.chkCat.Checked     = true;
                    this.chkCat.Disabled    = true;
                    this.chkValues.Checked  = true;
                    this.chkValues.Disabled = true;
                }
                else
                {
                    if (_report.GraphType == OlapReport.GraphTypeEnum.BarVertical)
                    {
                        series.ChangeView(ViewType.Bar);
                    }
                    else if (_report.GraphType == OlapReport.GraphTypeEnum.BarHorizontal)
                    {
                        series.ChangeView(ViewType.Bar);
                        rotateGraph = true;
                    }
                    else if (_report.GraphType == OlapReport.GraphTypeEnum.StackedBarVertical)
                    {
                        series.ChangeView(ViewType.StackedBar);
                    }
                    else if (_report.GraphType == OlapReport.GraphTypeEnum.StackedBarHorizontal)
                    {
                        series.ChangeView(ViewType.StackedBar);
                        rotateGraph = true;
                    }
                    else if (_report.GraphType == OlapReport.GraphTypeEnum.LineHorizontal)
                    {
                        series.ChangeView(ViewType.Line);
                    }

                    series.LegendText     = name;
                    series.ShowInLegend   = true;
                    series.ValueScaleType = ScaleType.Numerical;
                    series.Visible        = true;

                    // labels orientation
                    XYDiagram diag = (XYDiagram)_chCtrl.Diagram;
                    diag.Rotated = rotateGraph;
                    if (rotateGraph)
                    {
                        diag.AxisY.Label.Antialiasing = true;
                        diag.AxisY.Label.Angle        = 315;
                    }
                    else
                    {
                        diag.AxisX.Label.Antialiasing = true;
                        diag.AxisX.Label.Angle        = 315;
                    }

                    // if scaling
                    if (setScaling)
                    {
                        diag.AxisY.Visible = false;
                    }

//					if(setScaling)
//					{
//						// hide axis, cause it won't display real values
//						if(seriesPosCount<10)
//							diag.AxisY.Visible=false;
//						if(i<10)
//						{
//							SecondaryAxisY axisY=new SecondaryAxisY(name);
//
//							axisY.Alignment=AxisAlignment.Near;
//							axisY.Title.Text = name;
//							axisY.Title.Visible = true;
//							axisY.Title.Font=new Font(axisY.Title.Font.Name, 10);
//							axisY.Label.Antialiasing=true;
//							axisY.Label.Angle=315;
//
//							diag.SecondaryAxesY.Add(axisY);
//							((XYDiagramSeriesViewBase)series.View).AxisY = axisY;
//						}
//					}
                }


                // prepare scaling ranges
                double scalingMin = double.MaxValue;
                double scalingMax = double.MinValue;
                if (setScaling)
                {
                    for (int l = 0; l < catPosCount; l++)
                    {
                        string val  = (rotateAxes ? _report.Cellset.GetCell(l, i).Value : _report.Cellset.GetCell(i, l).Value);
                        double dVal = 0;
                        double.TryParse(val, System.Globalization.NumberStyles.Float, System.Globalization.NumberFormatInfo.InvariantInfo, out dVal);
                        if (dVal < scalingMin)
                        {
                            scalingMin = dVal;
                        }
                        if (dVal > scalingMax)
                        {
                            scalingMax = dVal;
                        }
                    }
                }
                scalingMin = scalingMin - (scalingMax - scalingMin) * 0.1;

                // set data
                for (int l = 0; l < catPosCount; l++)
                {
                    string argument = "";
                    for (int m = 0; m < catMemCount; m++)
                    {
                        argument += (m == 0 ? "" : " | ") + (rotateAxes ? _report.Cellset.GetCellsetMember(0, m, l).Name : _report.Cellset.GetCellsetMember(1, m, l).Name);
                    }

                    string val  = (rotateAxes ? _report.Cellset.GetCell(l, i).Value : _report.Cellset.GetCell(i, l).Value);
                    string fVal = (rotateAxes ? _report.Cellset.GetCell(l, i).FormattedValue : _report.Cellset.GetCell(i, l).FormattedValue);
                    double dVal = 0;
                    double.TryParse(val, System.Globalization.NumberStyles.Float, System.Globalization.NumberFormatInfo.InvariantInfo, out dVal);

                    if (setScaling)
                    {
                        dVal = (scalingMax - scalingMin == 0 ? 0 : (scalingMin + dVal) / (scalingMax - scalingMin));
                    }

                    // custom point label
                    string customLabel = string.Empty;
                    if (!showValues && !showSeries && !showCats)
                    {
                        series.Label.Visible = false;
                    }
                    else
                    {
                        customLabel  = (showSeries ? series.Name : string.Empty);
                        customLabel += (showCats ? (customLabel != string.Empty ? " | " : string.Empty) + argument : string.Empty);
                        customLabel += (showValues ? (customLabel != string.Empty ? ": " : string.Empty) + fVal : string.Empty);
                    }

                    CustomChartSeriesPoint sp = new CustomChartSeriesPoint(argument, dVal, customLabel);
                    series.Points.Add(sp);
                }
            }


            ChartTitle title = new ChartTitle();

            title.Alignment = StringAlignment.Center;
            title.Lines     = new string[] { _report.Name, _report.Description };
            _chCtrl.Titles.Add(title);

            if (_report.GraphTheme != null && _report.GraphTheme != "")
            {
                _chCtrl.AppearanceName = _report.GraphTheme;
            }
            _chCtrl.Width  = AdjustGraphSize(_report.GraphWidth);
            _chCtrl.Height = AdjustGraphSize(_report.GraphHeight);

            string imgNamePrefix = _report.GetType().Name + _report.ID.ToString();

            //delete older images of same report
            string[] filePaths = System.IO.Directory.GetFiles(FI.Common.AppConfig.TempDir, imgNamePrefix + "*.PNG");
            if (filePaths != null && filePaths.Length > 0)
            {
                for (int j = 0; j < filePaths.Length; j++)
                {
                    try
                    {
                        System.IO.File.Delete(filePaths[j]);
                    }
                    catch (Exception exc)
                    {
                        //do nothing
                        exc = null;
                    }
                }
            }


            //write to file and display, it will overwite itself if needed
            string imgName     = imgNamePrefix + "." + DateTime.Now.ToString("yyyyMMddHHssfff") + ".PNG";
            string imgVirtPath = Request.ApplicationPath + "/" + FI.Common.AppConfig.TempVirtualDir + "/" + imgName;
            string imgPhysPath = FI.Common.AppConfig.TempDir + @"\" + imgName;

            _chCtrl.ExportToImage(imgPhysPath, System.Drawing.Imaging.ImageFormat.Png);

            System.Web.UI.WebControls.Image img = new System.Web.UI.WebControls.Image();
            img.ImageUrl = imgVirtPath;
            this.cellGraph.Controls.Add(img);
        }
Ejemplo n.º 5
0
        public void SetGraphForDiskSpace(string serverName, DashboardReports.DominoDiskAvgXtraRpt report, XRChart CurrentDiskSpaceChart, string serverType)
        {
            bool isSummary;

            //XRChart CurrentDiskSpaceChart = (XRChart)report.FindControl("CurrentDiskSpaceChart", true);
            CurrentDiskSpaceChart.Series.Clear();
            //DataTable dt = VSWebBL.ReportsBL.ReportsBL.Ins.DominoDiskSpaceBL(serverName);
            dt = (DataTable)report.DataSource;
            CurrentDiskSpaceChart.DataSource = dt;
            isSummary = (bool)report.Parameters["IsSummary"].Value;
            double[] double1  = new double[dt.Rows.Count];
            double[] double2  = new double[dt.Rows.Count];
            string   diskName = "";
            string   srvName  = "";

            Series series = null;

            if (!isSummary)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    diskName = dt.Rows[i]["DiskName"].ToString();
                    srvName  = dt.Rows[i]["ServerName"].ToString();
                    //if (diskName == xrTableCell1.Text && srvName == xrLabel18.Text)
                    if (diskName == ((XRTableCell)report.FindControl("xrTableCell1", true)).Text &&
                        srvName == ((XRLabel)report.FindControl("xrLabel18", true)).Text)
                    {
                        if (series != null)
                        {
                            CurrentDiskSpaceChart.Series.Add(series);
                        }


                        series = new Series(dt.Rows[i]["DiskName"].ToString(), ViewType.Pie);

                        string val1 = dt.Rows[i]["PercentFree"].ToString();
                        string val2 = dt.Rows[i]["PercentUsed"].ToString();

                        if (val1 != "" && val2 != "")
                        {
                            double1[i] = Convert.ToDouble(dt.Rows[i]["PercentFree"].ToString());
                            double2[i] = Convert.ToDouble(dt.Rows[i]["PercentUsed"].ToString());

                            series.Points.Add(new SeriesPoint("Percent Free", double1[i]));
                            series.Points.Add(new SeriesPoint("Percent Used", double2[i]));
                            series.ShowInLegend = true;

                            series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
                            PieSeriesLabel seriesLabel = (PieSeriesLabel)series.Label;
                            seriesLabel.Position  = PieSeriesLabelPosition.Radial;
                            seriesLabel.BackColor = System.Drawing.Color.Transparent;
                            seriesLabel.TextColor = System.Drawing.Color.Black;
                        }
                    }
                }
            }
            else
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    srvName = report.Parameters["ServerName"].Value.ToString();
                    if (series != null)
                    {
                        CurrentDiskSpaceChart.Series.Add(series);
                    }

                    series = new Series("All Disks", ViewType.Pie);

                    string val1 = dt.Rows[i]["PercentFree"].ToString();
                    string val2 = dt.Rows[i]["PercentUsed"].ToString();

                    if (val1 != "" && val2 != "")
                    {
                        double1[i] = Convert.ToDouble(dt.Rows[i]["PercentFree"].ToString());
                        double2[i] = Convert.ToDouble(dt.Rows[i]["PercentUsed"].ToString());

                        series.Points.Add(new SeriesPoint("Percent Free", double1[i]));
                        series.Points.Add(new SeriesPoint("Percent Used", double2[i]));
                        series.ShowInLegend = true;

                        series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
                        PieSeriesLabel seriesLabel = (PieSeriesLabel)series.Label;
                        seriesLabel.Position  = PieSeriesLabelPosition.Radial;
                        seriesLabel.BackColor = System.Drawing.Color.Transparent;
                        seriesLabel.TextColor = System.Drawing.Color.Black;
                    }
                }
            }
            if (series != null)
            {
                CurrentDiskSpaceChart.Series.Add(series);
            }
            for (int c = 0; c < CurrentDiskSpaceChart.Series.Count; c++)
            {
                if (c == 0)
                {
                    PiePointOptions seriesPointOptions = (PiePointOptions)series.LegendPointOptions;
                    series.LegendPointOptions.PointView = PointView.Argument;
                    CurrentDiskSpaceChart.Series[0].LegendPointOptions.PointView = PointView.Argument;
                    CurrentDiskSpaceChart.Series[0].ShowInLegend = true;
                    CurrentDiskSpaceChart.Legend.Visible         = true;
                }
                else
                {
                    CurrentDiskSpaceChart.Series[c].ShowInLegend = false;
                }
            }
        }
Ejemplo n.º 6
0
        public void SetGraphForDiskSpace(DashboardReports.DominoDiskAvgXtraRpt report, DataTable dt, bool isSummary,
                                         XRChart CurrentDiskSpaceChart)
        {
            //2/24/2014 NS added
            try
            {
                CurrentDiskSpaceChart.Series.Clear();
                CurrentDiskSpaceChart.DataSource = dt;
                double[] double1  = new double[dt.Rows.Count];
                double[] double2  = new double[dt.Rows.Count];
                string   diskName = "";
                string   srvName  = "";

                Series series = null;
                if (!isSummary)
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        diskName = dt.Rows[i]["DiskName"].ToString();
                        srvName  = dt.Rows[i]["ServerName"].ToString();
                        //if (diskName == report.FindControl("xrTableCell1", true).Text && srvName == report.FindControl("xrLabel18", true).Text)
                        //{
                        if (series != null)
                        {
                            CurrentDiskSpaceChart.Series.Add(series);
                        }
                        series = new Series(dt.Rows[i]["DiskName"].ToString(), ViewType.Pie);

                        string val1 = dt.Rows[i]["PercentFree"].ToString();
                        string val2 = dt.Rows[i]["PercentUsed"].ToString();
                        if (val1 != "" && val2 != "")
                        {
                            double1[i] = Convert.ToDouble(dt.Rows[i]["PercentFree"].ToString());
                            double2[i] = Convert.ToDouble(dt.Rows[i]["PercentUsed"].ToString());
                            series.Points.Add(new SeriesPoint("Percent Free", double1[i]));
                            series.Points.Add(new SeriesPoint("Percent Used", double2[i]));
                            series.ShowInLegend     = true;
                            series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
                            PieSeriesLabel seriesLabel = (PieSeriesLabel)series.Label;
                            seriesLabel.Position  = PieSeriesLabelPosition.Radial;
                            seriesLabel.BackColor = System.Drawing.Color.Transparent;
                            seriesLabel.TextColor = System.Drawing.Color.Black;
                            //PieSeriesView seriesView = (PieSeriesView)series.View;
                            //seriesView.Titles.Add(new SeriesTitle());
                            //seriesView.Titles[0].Dock = ChartTitleDockStyle.Bottom;
                            //seriesView.Titles[0].Text = series.Name.ToString();
                            //seriesView.Titles[0].Visible = true;
                            //seriesView.Titles[0].WordWrap = true;
                        }
                        //}
                    }
                }
                else
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        srvName = report.Parameters["ServerName"].Value.ToString();
                        if (series != null)
                        {
                            CurrentDiskSpaceChart.Series.Add(series);
                        }

                        series = new Series("All Disks", ViewType.Pie);

                        string val1 = dt.Rows[i]["PercentFree"].ToString();
                        string val2 = dt.Rows[i]["PercentUsed"].ToString();

                        if (val1 != "" && val2 != "")
                        {
                            double1[i] = Convert.ToDouble(dt.Rows[i]["PercentFree"].ToString());
                            double2[i] = Convert.ToDouble(dt.Rows[i]["PercentUsed"].ToString());

                            series.Points.Add(new SeriesPoint("Percent Free", double1[i]));
                            series.Points.Add(new SeriesPoint("Percent Used", double2[i]));
                            series.ShowInLegend = true;

                            series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
                            PieSeriesLabel seriesLabel = (PieSeriesLabel)series.Label;
                            seriesLabel.Position  = PieSeriesLabelPosition.Radial;
                            seriesLabel.BackColor = System.Drawing.Color.Transparent;
                            seriesLabel.TextColor = System.Drawing.Color.Black;
                        }
                    }
                }
                if (series != null)
                {
                    CurrentDiskSpaceChart.Series.Add(series);
                }
                for (int c = 0; c < CurrentDiskSpaceChart.Series.Count; c++)
                {
                    if (c == 0)
                    {
                        PiePointOptions seriesPointOptions = (PiePointOptions)series.LegendPointOptions;
                        series.LegendPointOptions.PointView = PointView.Argument;
                        CurrentDiskSpaceChart.Series[0].LegendPointOptions.PointView = PointView.Argument;
                        CurrentDiskSpaceChart.Series[0].ShowInLegend = true;
                        CurrentDiskSpaceChart.Legend.Visible         = true;
                    }
                    else
                    {
                        CurrentDiskSpaceChart.Series[c].ShowInLegend = false;
                    }
                }
            }
            catch (Exception ex)
            {
                WriteServiceHistoryEntry(DateTime.Now.ToString() + " The following error has occurred in SetGraph: " + ex.Message);
            }
        }
Ejemplo n.º 7
0
        private void BindChart()
        {
            string dimensionName = string.Empty;

            if (dimsionValue > 0)
            {
                dimensionName = ((Dimension)dimsionValue).ToString();
            }
            xrChart1.Series.Clear();
            if (dimsionValue <= 0 && chartType == 0)
            {
                Series pieSeries = new Series();
                pieSeries.ValueScaleType = ScaleType.Numerical;
                pieSeries.LegendPointOptions.PointView = PointView.Argument;
                pieSeries.LegendPointOptions.ValueNumericOptions.Format = NumericFormat.Percent;
                PieSeriesView pieView = new PieSeriesView();
                pieView.ExplodedDistancePercentage = 10;
                SeriesTitle title = new SeriesTitle();
                title.Text = GetLocalizedCaption(targetName) + "-" + GetLocalizedCaption("Rate");
                pieView.Titles.Add(title);
                pieView.RuntimeExploding = true;
                pieSeries.View           = pieView;

                List <SaleOverview> dataList = (List <SaleOverview>) this.DataSource;
                var resultData = dataList.AsQueryable().GroupBy("UnitName", "it")
                                 .Select("new (Key as UnitName,Sum(" + targetName + ") as " + targetName + ")", null);

                foreach (var item in resultData)
                {
                    Type        itemType    = item.GetType();
                    SeriesPoint seriesPoint = new SeriesPoint(itemType.GetProperty("UnitName").GetValue(item, null)
                                                              , new object[] { ((object)itemType.GetProperty(targetName).GetValue(item, null)) });
                    pieSeries.Points.Add(seriesPoint);
                }
                xrChart1.Series.Add(pieSeries);

                PieSeriesLabel pieSerieslable = pieSeries.Label as PieSeriesLabel;
                if (pieSerieslable != null)
                {
                    pieSerieslable.PointOptions.PointView = PointView.ArgumentAndValues;
                    pieSerieslable.Position      = PieSeriesLabelPosition.TwoColumns;
                    pieSerieslable.TextAlignment = StringAlignment.Center;
                }
                PiePointOptions options = pieSeries.Label.PointOptions as PiePointOptions;
                if (options != null)
                {
                    options.PercentOptions.PercentageAccuracy = 2;
                    options.PercentOptions.ValueAsPercent     = true;
                    options.ValueNumericOptions.Format        = NumericFormat.Percent;
                }
            }
            else
            {
                List <SaleOverview> dataList     = (List <SaleOverview>) this.DataSource;
                List <string>       demisionList = new List <string>();

                if (!string.IsNullOrEmpty(dimensionName))
                {
                    foreach (var item in dataList)
                    {
                        Type   itemType     = item.GetType();
                        string demisionName = itemType.GetProperty(dimensionName).GetValue(item, null).ToString();
                        if (!demisionList.Contains(demisionName))
                        {
                            demisionList.Add(demisionName);
                        }
                    }
                }
                else
                {
                    demisionList.Add(string.Empty);
                }

                for (int d = 0; d < demisionList.Count; d++)
                {
                    IQueryable resultData = null;
                    if (!string.IsNullOrEmpty(dimensionName))
                    {
                        resultData = dataList.AsQueryable().Where(dimensionName + "=@0", demisionList[d]).GroupBy("UnitName", "it")
                                     .Select("new (Key as UnitName,Sum(" + targetName + ") as " + targetName + ")", null);
                    }
                    else
                    {
                        resultData = dataList.AsQueryable().GroupBy("UnitName", "it")
                                     .Select("new (Key as UnitName,Sum(" + targetName + ") as " + targetName + ")", null);
                    }

                    Series lineSeries = new Series();
                    lineSeries.Name         = demisionList[d];
                    lineSeries.ShowInLegend = true;
                    if (chartType == 1)
                    {
                        LineSeriesView lineView = new LineSeriesView();
                        lineSeries.View = lineView;
                    }
                    else if (chartType == 2)
                    {
                        BarSeriesView barView = new SideBySideBarSeriesView();
                        lineSeries.View = barView;
                    }

                    foreach (var item in resultData)
                    {
                        Type itemType = item.GetType();

                        SeriesPoint effortSeriesPoint = new SeriesPoint(itemType.GetProperty("UnitName").GetValue(item, null)
                                                                        , new object[] { ((object)(itemType.GetProperty(targetName).GetValue(item, null))) });
                        lineSeries.Points.Add(effortSeriesPoint);
                    }
                    xrChart1.Series.Add(lineSeries);
                }
                XYDiagram diagram = xrChart1.Diagram as XYDiagram;
                if (diagram == null)
                {
                    return;
                }
                diagram.AxisY.Title.Visible = true;
                if (!string.IsNullOrEmpty(dimensionName))
                {
                    diagram.AxisY.Title.Text = GetLocalizedCaption(dimensionName) + "-" + GetLocalizedCaption(targetName);
                }
                else
                {
                    diagram.AxisY.Title.Text = string.Empty;
                }
            }
        }
Ejemplo n.º 8
0
        public void SetGraphForDiskSpace(string serverName)
        {
            DataTable dt = VSWebBL.ConfiguratorBL.DominoServerDetails_BL.Ins.SetGraphForDiskSpace(serverName);

            DiskSpaceWebChartControl.DataSource = dt;

            double[] double1 = new double[dt.Rows.Count];
            double[] double2 = new double[dt.Rows.Count];

            Series series = null;

            if (dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    if (series != null)
                    {
                        DiskSpaceWebChartControl.Series.Add(series);
                        DiskSpaceWebChartControl.DataBind();
                    }
                    series = new Series(dt.Rows[i]["DiskName"].ToString(), ViewType.Pie);
                    if (dt.Rows[i]["DiskFree"] != "" && dt.Rows[i]["DiskFree"] != null)
                    {
                        double1[i] = Convert.ToDouble(dt.Rows[i]["DiskFree"].ToString());
                    }
                    if (dt.Rows[i]["DiskUsed"] != "" && dt.Rows[i]["DiskUsed"] != null)
                    {
                        double2[i] = Convert.ToDouble(dt.Rows[i]["DiskUsed"].ToString());
                    }
                    series.Points.Add(new SeriesPoint("DiskFree", double1[i]));
                    series.Points.Add(new SeriesPoint("DiskUsed", double2[i]));

                    //series.Label.Visible = true;
                    series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
                    PieSeriesLabel seriesLabel = (PieSeriesLabel)series.Label;
                    seriesLabel.Position  = PieSeriesLabelPosition.Radial;
                    seriesLabel.BackColor = System.Drawing.Color.Transparent;
                    seriesLabel.TextColor = System.Drawing.Color.Black;

                    PieSeriesView seriesView = (PieSeriesView)series.View;
                    seriesView.Titles.Add(new SeriesTitle());
                    seriesView.Titles[0].Dock = ChartTitleDockStyle.Bottom;

                    if (i == 0)
                    {
                        PiePointOptions seriesPointOptions = (PiePointOptions)series.LegendPointOptions;
                        series.LegendPointOptions.PointView             = PointView.Argument;
                        DiskSpaceWebChartControl.Series[i].ShowInLegend = true;
                        DiskSpaceWebChartControl.Series[i].LegendPointOptions.PointView = PointView.Argument;
                        DiskSpaceWebChartControl.Series[i].ShowInLegend = true;
                        DiskSpaceWebChartControl.Legend.Visible         = true;
                    }
                    else
                    {
                        DiskSpaceWebChartControl.Series[i].LegendPointOptions.PointView = PointView.Argument;
                        DiskSpaceWebChartControl.Series[i].ShowInLegend = false;
                    }

                    seriesView.Titles[0].Text     = series.Name;
                    seriesView.Titles[0].Visible  = true;
                    seriesView.Titles[0].WordWrap = true;
                }
            }
            if (series != null)
            {
                DiskSpaceWebChartControl.Series.Add(series);
                series.LegendPointOptions.PointView = PointView.Argument;
                DiskSpaceWebChartControl.DataBind();
                //DiskSpaceWebChartControl.Series[i].LegendPointOptions.PointView = PointView.Argument;
                //DiskSpaceWebChartControl.Series[i].ShowInLegend = false;
            }
        }
Ejemplo n.º 9
0
        public void LoadGraph()
        {
            int t1 = System.Environment.TickCount;

            if (_report.State != Report.StateEnum.Executed)
            {
                return;
            }

            _chCtrl.BeginInit();

            bool rotateGraph = false;
            bool pivotAxes   = ((_report.GraphOptions & OlapReport.GraphOptionsEnum.Pivot) > 0);

            int seriesPosCount = (pivotAxes ? _report.Cellset.Axis1PosCount : _report.Cellset.Axis0PosCount);
            int seriesMemCount = (pivotAxes ? _report.Cellset.Axis1TupleMemCount : _report.Cellset.Axis0TupleMemCount);
            int catPosCount    = (pivotAxes ? _report.Cellset.Axis0PosCount : _report.Cellset.Axis1PosCount);
            int catMemCount    = (pivotAxes ? _report.Cellset.Axis0TupleMemCount : _report.Cellset.Axis1TupleMemCount);

            if (seriesPosCount == 0 || catPosCount == 0)
            {
                return;
            }

            Size size = new Size(_report.GraphWidth, _report.GraphHeight);

            size = this.AdjustGraphWidth(size, _report.GraphType);

            // limit number of series
            if (seriesPosCount > __MaxSeriesCount)
            {
                seriesPosCount = __MaxSeriesCount;
            }
            if (_report.GraphType == OlapReport.GraphTypeEnum.Pie || _report.GraphType == OlapReport.GraphTypeEnum.PieBrokenApart)
            {
                if (seriesPosCount > __MaxPieCount)
                {
                    seriesPosCount = __MaxPieCount;
                }
            }

            // limit number of categories
            if (catPosCount > __MaxCategoriesCount)
            {
                catPosCount = __MaxCategoriesCount;
            }

            bool showValues      = (_report.GraphOptions & OlapReport.GraphOptionsEnum.ShowValues) > 0;
            bool showSeries      = (_report.GraphOptions & OlapReport.GraphOptionsEnum.ShowSeries) > 0;
            bool showCats        = (_report.GraphOptions & OlapReport.GraphOptionsEnum.ShowCategories) > 0;
            bool setScaling      = _report.GraphType != OlapReport.GraphTypeEnum.Pie && ((_report.GraphOptions & OlapReport.GraphOptionsEnum.ScalingBySeries) > 0);
            bool setPerc         = !setScaling && ((_report.GraphOptions & OlapReport.GraphOptionsEnum.PercentByCategories) > 0);
            byte graphPieColumns = (_report.GraphPieColumns == 0 ?
                                    Convert.ToByte(Math.Sqrt(seriesPosCount)) : _report.GraphPieColumns);
            byte graphMixedLinePos = _report.GraphMixedLinePosition;

            graphMixedLinePos = (graphMixedLinePos <= 0 || graphMixedLinePos > seriesPosCount ? (byte)1 : graphMixedLinePos);

            // theme
            if (_report.GraphTheme != null && _report.GraphTheme != "")
            {
                _chCtrl.AppearanceName = _report.GraphTheme;
            }

            // create series
            for (int i = 0; i < seriesPosCount; i++)
            {
                string name = "";
                for (int j = 0; j < seriesMemCount; j++)
                {
                    name += (j == 0 ? "" : " | ") + (pivotAxes ? _report.Cellset.GetCellsetMember(1, j, i).Name : _report.Cellset.GetCellsetMember(0, j, i).Name);
                }

                Series series = new Series();
                series.Name = name;


                // type
                if (_report.GraphType == OlapReport.GraphTypeEnum.Pie || _report.GraphType == OlapReport.GraphTypeEnum.PieBrokenApart)
                {
                    // if pie, each of series is displayed as individual graph
                    if (_report.GraphType == OlapReport.GraphTypeEnum.PieBrokenApart)
                    {
                        _chCtrl.Series.Clear();
                    }
                    _chCtrl.Series.Add(series);

                    series.ChangeView(ViewType.Pie);

                    PiePointOptions ppo = (PiePointOptions)series.PointOptions;
                    PieSeriesView   psw = (PieSeriesView)series.View;
                    PieSeriesLabel  psl = (PieSeriesLabel)series.Label;

                    psl.Position = PieSeriesLabelPosition.TwoColumns;
                    series.PointOptions.PointView = PointView.Undefined;

                    if (_report.GraphType == OlapReport.GraphTypeEnum.Pie)
                    {
                        SimpleDiagram sd = new SimpleDiagram();
                        sd.LayoutDirection = LayoutDirection.Horizontal;
                        sd.Dimension       = graphPieColumns;
                        _chCtrl.Diagram    = sd;
                    }

                    // legend
                    if (showCats)
                    {
                        _chCtrl.Legend.Visible = false;
                    }

                    series.Label.OverlappingOptions.ResolveOverlapping = true;
                    series.LegendPointOptions.PointView = PointView.Argument;

                    _chCtrl.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Center;
                    _chCtrl.Legend.AlignmentVertical   = LegendAlignmentVertical.BottomOutside;
                    _chCtrl.Legend.Direction           = LegendDirection.LeftToRight;


                    // series title
                    SeriesTitle sTitle = new SeriesTitle();
                    sTitle.Text      = name;
                    sTitle.Alignment = StringAlignment.Center;
                    sTitle.Dock      = ChartTitleDockStyle.Bottom;
                    psw.Titles.Add(sTitle);
                }
                else
                {
                    // diagram
                    if (_chCtrl.Diagram == null)
                    {
                        _chCtrl.Diagram = new XYDiagram();
                    }
                    XYDiagram diag = (XYDiagram)_chCtrl.Diagram;


                    //// panes
                    //if (_report.GraphType == OlapReport.GraphTypeEnum.LineWithBars && graphMixedLinePos <= seriesPosCount && diag.Panes.Count == 0)
                    //{
                    //    // add new pane
                    //    XYDiagramPane pane = new XYDiagramPane();
                    //    pane.Visible = true;
                    //    pane.SizeMode = PaneSizeMode.UseWeight;
                    //    pane.Weight = 0.66;
                    //    diag.PaneLayoutDirection = PaneLayoutDirection.Vertical;
                    //    diag.Panes.Add(pane);

                    //    // set default pane weight
                    //    diag.DefaultPane.SizeMode = PaneSizeMode.UseWeight;
                    //    diag.DefaultPane.Weight = 0.33;
                    //}

                    // add series
                    _chCtrl.Series.Add(series);

                    // add series to secondary pane if needed (in case of LineWithBars)
                    if (diag.Panes.Count > 0 && i != graphMixedLinePos - 1)
                    {
                        ((XYDiagramSeriesViewBase)series.View).Pane = diag.Panes[0];
                    }

                    if (_report.GraphType == OlapReport.GraphTypeEnum.BarVertical)
                    {
                        series.ChangeView(ViewType.Bar);
                    }
                    else if (_report.GraphType == OlapReport.GraphTypeEnum.BarHorizontal)
                    {
                        series.ChangeView(ViewType.Bar);
                        rotateGraph = true;
                    }
                    else if (_report.GraphType == OlapReport.GraphTypeEnum.StackedBarVertical)
                    {
                        series.ChangeView(ViewType.StackedBar);
                    }
                    else if (_report.GraphType == OlapReport.GraphTypeEnum.StackedBarHorizontal)
                    {
                        series.ChangeView(ViewType.StackedBar);
                        rotateGraph = true;
                    }
                    else if (_report.GraphType == OlapReport.GraphTypeEnum.LineHorizontal)
                    {
                        series.ChangeView(ViewType.Line);
                    }
                    else if (_report.GraphType == OlapReport.GraphTypeEnum.LineWithBars)
                    {
                        if (i == graphMixedLinePos - 1)
                        {
                            //if (!setScaling)
                            //{
                            //    // create secondary axis
                            //    SecondaryAxisY axisY = new SecondaryAxisY(series.Name);
                            //    axisY.Visible = true;
                            //    axisY.Title.Text = series.Name;
                            //    axisY.Title.Visible = true;
                            //    axisY.Alignment = AxisAlignment.Near;
                            //    ((XYDiagram)_chCtrl.Diagram).SecondaryAxesY.Add(axisY);
                            //    ((XYDiagramSeriesViewBase)series.View).AxisY = axisY;

                            //    // set default axis title
                            //    ((XYDiagram)_chCtrl.Diagram).AxisY.Title.Text = "Bar axis";
                            //    ((XYDiagram)_chCtrl.Diagram).AxisY.Title.Visible = true;
                            //}

                            // change view
                            series.ChangeView(ViewType.Line);
                        }
                        else
                        {
                            series.ChangeView(ViewType.Bar);
                        }
                    }

                    // 20 pixels per label (250 pixels for legend), othervise overlapping resolution will never finish
                    if ((size.Width - 250) / catPosCount > 20)
                    {
                        series.Label.OverlappingOptions.ResolveOverlapping = true;
                        PointOverlappingOptions poo = series.Label.OverlappingOptions as PointOverlappingOptions;
                        if (poo != null)
                        {
                            poo.AttractToMarker = true;
                        }
                    }

                    series.LegendText                   = name;
                    series.ShowInLegend                 = true;
                    series.ValueScaleType               = ScaleType.Numerical;
                    series.PointOptions.PointView       = PointView.Undefined;
                    series.LegendPointOptions.PointView = PointView.SeriesName;
                    series.Visible = true;

                    // labels orientation
                    diag.Rotated = rotateGraph;
                    if (rotateGraph)
                    {
                        diag.AxisY.Label.Antialiasing = true;
                        diag.AxisY.Label.Angle        = 315;
                    }
                    else
                    {
                        diag.AxisX.Label.Antialiasing = true;
                        diag.AxisX.Label.Angle        = 315;
                    }

                    // if scaling
                    if (setScaling)
                    {
                        diag.AxisY.Visible = false;
                    }
                }


                // prepare scaling ranges
                double scalingMin = double.MaxValue;
                double scalingMax = double.MinValue;
                if (setScaling)
                {
                    for (int l = 0; l < catPosCount; l++)
                    {
                        string val  = (pivotAxes ? _report.Cellset.GetCell(l, i).Value : _report.Cellset.GetCell(i, l).Value);
                        double dVal = 0;
                        double.TryParse(val, System.Globalization.NumberStyles.Float, System.Globalization.NumberFormatInfo.InvariantInfo, out dVal);
                        if (dVal < scalingMin)
                        {
                            scalingMin = dVal;
                        }
                        if (dVal > scalingMax)
                        {
                            scalingMax = dVal;
                        }
                    }
                }
                scalingMin = scalingMin - (scalingMax - scalingMin) * 0.1;

                // set data
                double percSum = 0;
                for (int l = 0; l < catPosCount; l++)
                {
                    string argument = "";
                    for (int m = 0; m < catMemCount; m++)
                    {
                        argument += (m == 0 ? "" : " | ") + (pivotAxes ? _report.Cellset.GetCellsetMember(0, m, l).Name : _report.Cellset.GetCellsetMember(1, m, l).Name);
                    }

                    string val = (pivotAxes ? _report.Cellset.GetCell(l, i).Value : _report.Cellset.GetCell(i, l).Value);

                    double dVal = 0;
                    double.TryParse(val, System.Globalization.NumberStyles.Float, System.Globalization.NumberFormatInfo.InvariantInfo, out dVal);
                    if (setPerc)
                    {
                        percSum += dVal;
                    }
                    else if (setScaling)
                    {
                        dVal = (scalingMax - scalingMin == 0 ? 0 : (dVal - scalingMin) / (scalingMax - scalingMin));
                    }

                    string fVal = (pivotAxes ? _report.Cellset.GetCell(l, i).FormattedValue : _report.Cellset.GetCell(i, l).FormattedValue);

                    SeriesPoint sp = new SeriesPoint(argument, new double[] { dVal });
                    sp.Tag = fVal;
                    series.Points.Add(sp);
                }

                // set custom labels and value as percentage
                for (int l = 0; l < catPosCount; l++)
                {
                    SeriesPoint sp = series.Points[l];
                    if (setPerc)
                    {
                        sp.Values[0] = sp.Values[0] / percSum;
                        sp.Tag       = sp.Values[0].ToString("P");
                    }

                    // custom point label
                    string customLabel = string.Empty;
                    if (!showValues && !showSeries && !showCats)
                    {
                        series.Label.Visible = false;
                    }
                    else
                    {
                        string fVal = (string)sp.Tag;
                        if (fVal == null || fVal == "")
                        {
                            fVal = "0";
                        }
                        customLabel  = (showSeries ? series.Name : string.Empty);
                        customLabel += (showCats ? (customLabel != string.Empty ? " | " : string.Empty) + sp.Argument : string.Empty);
                        customLabel += (showValues ? (customLabel != string.Empty ? ": " : string.Empty) + fVal : string.Empty);
                    }

                    series.Points[l].Tag = customLabel;
                }

                // for pie, layout each of series individually
                if (_report.GraphType == OlapReport.GraphTypeEnum.PieBrokenApart)
                {
                    _chCtrl.Titles.Clear();
                    _chCtrl.EndInit();
                    LayoutGraph(_report.ID.ToString() + "." + i.ToString(), size, graphPieColumns);

                    // init next chart
                    if (i < seriesPosCount - 1)
                    {
                        _chCtrl = new DevExpress.XtraCharts.Web.WebChartControl();
                        _chCtrl.BeginInit();
                    }
                }
            }


            int t2 = System.Environment.TickCount;

            if (_report.GraphType != OlapReport.GraphTypeEnum.PieBrokenApart)
            {
                ChartTitle title = new ChartTitle();
                title.Alignment = StringAlignment.Center;
                title.Lines     = new string[] { _report.Name, _report.Description };
                _chCtrl.Titles.Add(title);

                LayoutGraph(_report.ID.ToString(), size, 0);
            }

            // if LineWithBars
            if (_report.GraphType == OlapReport.GraphTypeEnum.LineWithBars)
            {
                // fill combo
                for (int i = 0; i < _chCtrl.Series.Count; i++)
                {
                    this.selMixedLinePos.Items.Add(new ListItem(_chCtrl.Series[i].Name, (i + 1).ToString()));
                }
                this.selMixedLinePos.SelectedIndex = graphMixedLinePos - 1;

                // set line as last
                if (!(_chCtrl.Series[_chCtrl.Series.Count - 1].View is LineSeriesView))
                {
                    // roll down through series
                    for (int i = graphMixedLinePos - 1; i < _chCtrl.Series.Count - 1; i++)
                    {
                        _chCtrl.Series.Swap(i, i + 1);
                    }
                }
            }

            int    t3    = System.Environment.TickCount;
            double time1 = (t3 - t2) / 1000.0;
            double time2 = (t2 - t1) / 1000.0;

            t1 = 0;
        }