Exemple #1
2
        protected void Page_Load(object sender, EventArgs e)
        {
            WebChartControl chart = new WebChartControl();
            chart.EnableViewState = false;
            ChartTitle title = new ChartTitle();
            title.Text = string.Format(Utilities.GetResourceString("Common", "ChartHeader"),
                                       "Jmeno", "Start 10.12.2010","Finish 17.12.2010");
            title.Font = new System.Drawing.Font("Tahoma", 10);
            chart.Titles.Add(title);
            chart.FillStyle.FillMode = FillMode.Solid;

            Dictionary<int, Series> series = new Dictionary<int, Series>();

            Series s0 = new Series("Recommended price", ViewType.StackedBar);
            s0.ValueScaleType = ScaleType.Numerical;
            s0.ArgumentScaleType = ScaleType.DateTime;
            series.Add(0, s0);

            SetGraphPoint(series[0], "rnd");

            Series s1 = new Series("Actual price", ViewType.Line);
            s1.ValueScaleType = ScaleType.Numerical;
            s1.ArgumentScaleType = ScaleType.DateTime;
            series.Add(1, s1);

            SetGraphPoint(series[1], "fib");

            //Series s2 = new Series("Predicted price", ViewType.Bubble);
            //s2.ValueScaleType = ScaleType.Numerical;
            //s2.ArgumentScaleType = ScaleType.DateTime;
            //series.Add(2, s2);

            //SetGraphPoint(series[2], "byte");

            foreach (KeyValuePair<int, Series> serie in series)
                chart.Series.Add(serie.Value);

            //chart.SeriesTemplate.ShowInLegend = false;
            chart.Legend.Direction = LegendDirection.LeftToRight;
            chart.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Center;
            chart.Legend.AlignmentVertical = LegendAlignmentVertical.Bottom;

            DevExpress.XtraCharts.XYDiagram xyDiagram = new XYDiagram();
            xyDiagram.AxisY.Title.Font = new System.Drawing.Font("Tahoma", 8);
            xyDiagram.AxisY.Title.Text = "CZK";
            xyDiagram.AxisY.Label.Staggered = false;
            xyDiagram.AxisY.Title.Visible = true;
            xyDiagram.AxisY.Range.SideMarginsEnabled = true;
            xyDiagram.AxisY.Interlaced = true;

            xyDiagram.AxisX.Title.Font = new System.Drawing.Font("Tahoma", 8);
            xyDiagram.AxisX.Label.Staggered = true;
            xyDiagram.AxisX.Range.SideMarginsEnabled = true;
            xyDiagram.AxisX.Tickmarks.MinorVisible = false;
            chart.Diagram = xyDiagram;
            chart.Width = 700;
            chart.Height = 500;
            //chart.DataBind();
            phMain.Controls.Add(chart);
        }
Exemple #2
1
        protected string SaveChartIntoFile(string productName, WebChartControl chart)
        {
            string filename = string.Format("{0}_{1}.jpg", Sess.LoggedUser.UserId, CleanForbiddenSymbols(productName));

            filename = Path.Combine(Server.MapPath(Config.UploadDirectory), filename);
            using (MemoryStream memoryImage = new MemoryStream())
            {
                ((IChartContainer)chart as IChartContainer).Chart.ExportToImage(memoryImage, ImageFormat.Jpeg);
                memoryImage.Seek(0, System.IO.SeekOrigin.Begin);
                FileStream fs = File.OpenWrite(filename);
                memoryImage.WriteTo(fs);
                fs.Close();
            }
            return(filename);
        }
        protected internal void drawChartPie1(WebChartControl viewer, String title)
        {
            PieChart c = new PieChart(900, 380);

            // Set the center of the pie at (300, 140) and the radius to 120 pixels
            c.setPieSize(450, 140, 160);

            c.set3D(20);

            c.addTitle(title);

            // Set label format to display sector label, value and percentage in two lines
            c.setLabelFormat("<*block,width=200*> {label}<*br*>{value|0} ({percent}%)");
            c.setLabelLayout(Chart.SideLayout);

            // Set label style to 10 pts Arial Bold Italic font. Set background color to the
            // same as the sector color, with reduced-glare glass effect and rounded corners.
            ChartDirector.TextBox t = c.setLabelStyle("Arial Bold Italic", 10);
            t.setBackground(Chart.SameAsMainColor, Chart.Transparent, Chart.glassEffect(
                Chart.ReducedGlare));
            t.setRoundedCorners();

            // Use side label layout method
            c.setLabelLayout(Chart.SideLayout);

            String[] labels = new String[viewer.Items.Length];
            double[] data = new double[viewer.Items.Length];
            // Set the pie data and the pie labels
            int i = 0;
            double sum =0;
            foreach (ChartDataLayer item in viewer.Items)
            {
                item.subDataSetSize(item.Count);
                item.subDataGetTable();
                data[i] = item.subDataAverage;
                sum+= item.subDataAverage;
                labels[i++] = item.Text;
            }

            c.setData(data, labels);

            c.addText(700, 320, "Σύνολο:" + sum, "Arial Bold Italic", 12);

            c.setTransparentColor(0xffffff);
            viewer.Image = c.makeWebImage(Chart.PNG);

            viewer.ImageMap = (c.getHTMLImageMap("#", "{label}", "title='{label}: {value|0}({percent}%)'")).Replace("href=\"#?", "href=\"#");
        }
Exemple #4
1
        protected void Page_Load(object sender, EventArgs e)
        {
            webChartControl = new WebChartControl {
                Width = 640, Height = 360
            };
            this.form1.Controls.Add(webChartControl);
            DataTable seriesData = GetData();

            webChartControl.DataSource = seriesData;
            webChartControl.SeriesTemplate.SeriesDataMember   = "Year";
            webChartControl.SeriesTemplate.ArgumentDataMember = "Region";
            webChartControl.SeriesTemplate.ValueDataMembers.AddRange(new string[] { "Sales" });
            webChartControl.DataBind();
            webChartControl.SeriesTemplate.View = new SideBySideBarSeriesView();
            webChartControl.BoundDataChanged   += WebChartControl_BoundDataChanged;
        }
Exemple #5
0
    protected void WebChartControl1_Init(object sender, EventArgs e)
    {
        WebChartControl chart = (WebChartControl)sender;
        GridViewDetailRowTemplateContainer container = chart.NamingContainer as GridViewDetailRowTemplateContainer;
        int    categoryId   = Convert.ToInt32(container.KeyValue);
        string categoryName = ASPxGridView1.GetRowValuesByKeyValue(categoryId, new string[] { "CategoryName" }).ToString();
        Series series       = new Series(categoryName, ViewType.Bar);

        series.ArgumentDataMember = "ProductName";
        series.ValueDataMembers.AddRange(new string[] { "UnitPrice" });
        chart.Series.Add(series);
        ((XYDiagram)chart.Diagram).AxisX.Label.Angle = 90;
        Session["CategoryID"] = categoryId;
        chart.DataSource      = detailDataSource.Select(DataSourceSelectArguments.Empty);
        chart.DataBind();
    }
Exemple #6
0
        public DxChart()
        {
            Guid newguid = Guid.NewGuid();

            guid                   = newguid.ToString();
            isdiag                 = false;
            isempty                = false;
            _chart                 = new WebChartControl();
            _xydiagram             = new XYDiagram();
            _chart.Diagram         = _xydiagram;
            _chart.EnableViewState = true;

            _xydiagram.AxisX.GridLines.Visible      = true;
            _xydiagram.AxisY.GridLines.Visible      = true;
            _xydiagram.AxisX.GridLines.MinorVisible = true;
            _xydiagram.AxisY.GridLines.MinorVisible = true;
        }
Exemple #7
0
        public static void InitPaletteComboBox(ASPxComboBox cbbPalette, string paletteDefault)
        {
            var arrPalette = new WebChartControl().GetPaletteNames();

            foreach (var pl in arrPalette)
            {
                cbbPalette.Items.Add(pl);
            }

            var selItem = cbbPalette.Items.FindByValue(paletteDefault);

            if (selItem == null)
            {
                selItem = cbbPalette.Items.FindByText(paletteDefault);
            }
            cbbPalette.SelectedItem = selItem;
        }
Exemple #8
0
        public static WebChartControl CreateChart(DataTable dt_descstats, string levels_x, string levels_legend, int width, int height)
        {
            WebChartControl WebChart = new WebChartControl();


            WebChart.DataSource       = dt_descstats;
            WebChart.SeriesDataMember = levels_legend;

            SideBySideBarSeriesView  view   = new SideBySideBarSeriesView();
            DataSourceBasedErrorBars errbar = new DataSourceBasedErrorBars("sd");

            errbar.Name = "SD";
            //errbar.NegativeErrorDataMember = "SDminus";
            //errbar.PositiveErrorDataMember = "SDplus";
            errbar.NegativeErrorDataMember = "Value_StdDev";
            errbar.PositiveErrorDataMember = "Value_StdDev";
            errbar.Direction           = ErrorBarDirection.Both;
            errbar.EndStyle            = ErrorBarEndStyle.Cap;
            errbar.Color               = Color.Black;
            errbar.LineStyle.Thickness = 1;

            view.Indicators.Add(errbar);

            //FixedValueErrorBars fixbar = new FixedValueErrorBars("fix");
            //fixbar.Name = "fix";
            //fixbar.NegativeError = 2;
            //fixbar.PositiveError = 10;
            //fixbar.Direction = ErrorBarDirection.Both;
            //fixbar.EndStyle = ErrorBarEndStyle.Cap;
            //fixbar.Color = Color.Red;
            //fixbar.LineStyle.Thickness = 3;

            //view.Indicators.Add(fixbar);

            WebChart.SeriesTemplate.ArgumentDataMember = levels_x;
            WebChart.SeriesTemplate.ValueDataMembers.AddRange(new string[] { "Value_Average" });
            WebChart.SeriesTemplate.View = view;

            WebChart.Width  = width;
            WebChart.Height = height;
            WebChart.DataBind();
            WebChart.EnableViewState = true;

            return(WebChart);
        }
Exemple #9
0
    /// <summary>
    /// 给Chart绑定数据
    /// </summary>
    /// <param name="dt"></param>
    /// <param name="chart"></param>
    private void BindChart(DataTable dt, WebChartControl chart)
    {
        chart.Series.Clear();

        Series s0 = new Series("暂停", ViewType.Bar);
        Series s1 = new Series("运行", ViewType.Bar);
        Series s2 = new Series("等待", ViewType.Bar);

        foreach (DataRow dr in dt.Rows)
        {
            s0.Points.Add(new SeriesPoint(dr["STEP_NAME"], dr["HOLD"]));
            s1.Points.Add(new SeriesPoint(dr["STEP_NAME"], dr["RUN"]));
            s2.Points.Add(new SeriesPoint(dr["STEP_NAME"], dr["WAIT"]));
        }
        chart.Series.Add(s0);
        chart.Series.Add(s1);
        chart.Series.Add(s2);
    }
Exemple #10
0
        public static void DrawChart(WebChartControl control, string seriesName, ViewType type, DataTable dt, string column1, string column2)
        {
            Series      series = new Series(seriesName, type);
            DataTable   table  = dt;
            SeriesPoint point  = null;

            for (int i = 0; i < table.Rows.Count; i++)
            {
                point = new SeriesPoint(table.Rows[i][column1].ToString(), new double[] { Convert.ToDouble(table.Rows[i][column2].ToString()) });
                series.Points.Add(point);
            }
            control.Series.Add(series);
            if (type == ViewType.Pie)
            {
                series.LegendPointOptions.PointView = PointView.ArgumentAndValues;
                series.LegendPointOptions.ValueNumericOptions.Format = NumericFormat.Percent;
            }
        }
Exemple #11
0
    protected void chart_Init(object sender, EventArgs e)
    {
        WebChartControl chart = (WebChartControl)sender;
        GridViewDetailRowTemplateContainer container = chart.NamingContainer as GridViewDetailRowTemplateContainer;

        String oid         = container.KeyValue.ToString();
        String serviceName = grid.GetRowValuesByKeyValue(oid, new String[] { "ServiceName" }).ToString();
        String methodName  = grid.GetRowValuesByKeyValue(oid, new String[] { "MethodName" }).ToString();

        // Specify data members to bind the chart's series template.
        chart.SeriesDataMember                  = "Type";
        chart.SeriesTemplate.Label.Visible      = false;
        chart.SeriesTemplate.ArgumentDataMember = "DateTime";
        chart.SeriesTemplate.ArgumentScaleType  = ScaleType.DateTime;
        chart.SeriesTemplate.ValueDataMembers.AddRange(new string[] { "Value" });

        XYDiagram diagram = chart.Diagram as XYDiagram;

        diagram.AxisX.DateTimeGridAlignment = DateTimeMeasurementUnit.Second;
        diagram.AxisX.DateTimeMeasureUnit   = DateTimeMeasurementUnit.Second;
        diagram.AxisX.GridSpacing           = 1;

        diagram.AxisX.DateTimeOptions.Format       = DateTimeFormat.Custom;
        diagram.AxisX.DateTimeOptions.FormatString = "HH:mm";

        //diagram.AxisX.


        // Specify the template's series view.
        chart.SeriesTemplate.View          = new SideBySideBarSeriesView();
        chart.SeriesTemplate.Label.Visible = true;

        // Specify the template's name prefix.
        chart.SeriesNameTemplate.BeginText = "";

        // Generate a data table and bind the chart to it.
        DataView dv = CreateChartData(serviceName, methodName).DefaultView;

        dv.Sort = "DateTime asc";

        chart.DataSource = dv;
        chart.DataBind();
    }
 /// <summary>
 /// 执行报表的数据加载
 /// </summary>
 /// <param name="chart"></param>
 public static void Execute(this WebChartControl chart,
                            Action <DXChartControlWrapper> populate, Action <Exception> exHandle = null)
 {
     try
     {
         chart.Series.Clear();
         chart.Titles.Clear();
         chart.EmptyChartText.Text = "(无可视数据)";
         populate(new DXChartControlWrapper(chart));
     }
     catch (Exception ex)
     {
         if (exHandle != null)
         {
             exHandle(ex);
         }
         chart.Visible = false;
     }
 }
Exemple #13
0
        protected void SyncWebChart_Load(object sender, EventArgs e)
        {
            DataTable       dt           = new DataTable();
            WebChartControl chartControl = (WebChartControl)sender;

            DevExpress.Web.GridViewDataItemTemplateContainer gridc = (DevExpress.Web.GridViewDataItemTemplateContainer)chartControl.Parent;
            string deviceid = DataBinder.Eval(gridc.DataItem, "DeviceID").ToString();

            dt = VSWebBL.DashboardBL.LotusTravelerHealthBLL.Ins.GetKeyUserDevices(deviceid);
            chartControl.DataSource = dt;
            chartControl.Series["MinSinceSync"].DataSource         = dt;
            chartControl.Series["MinSinceSync"].ArgumentDataMember = dt.Columns["DeviceID"].ToString();
            chartControl.Series["MinSinceSync"].ValueDataMembers.AddRange(dt.Columns["LastSyncMin"].ToString());
            chartControl.Series["MinSinceSync"].Visible = true;
            XYDiagram seriesXY = (XYDiagram)chartControl.Diagram;

            seriesXY.AxisY.Range.MinValue = minmin;
            seriesXY.AxisY.Range.MaxValue = maxmin;
            chartControl.DataBind();
        }
    protected void ASPxCallbackPanel1_Callback(object source, CallbackEventArgsBase e)
    {
        WebChartControl wbc = new WebChartControl();

        wbc.Series.Add(new Series("Series", ViewType.Line));
        wbc.Series[0].ArgumentScaleType = ScaleType.DateTime;
        wbc.Series[0].ValueScaleType    = ScaleType.Numerical;

        Random r = new Random();

        for (int i = 0; i < 5; i++)
        {
            wbc.Series[0].Points.Add(new SeriesPoint(DateTime.Today.AddDays(i),
                                                     ((int)((r.NextDouble() * 100) * 10)) / 10.0));
        }

        wbc.Width = (source as ASPxCallbackPanel).Width;

        (source as ASPxCallbackPanel).Controls.Add(wbc);
    }
Exemple #15
0
        public static WebChartControl CreateHist(DataTable dt_hist, string histlevels, int width, int height)
        {
            WebChartControl WebChart = new WebChartControl();


            WebChart.DataSource       = dt_hist;
            WebChart.SeriesDataMember = "timept";

            SideBySideBarSeriesView view = new SideBySideBarSeriesView();

            WebChart.SeriesTemplate.ValueDataMembers.AddRange(new string[] { "Value_Average" });
            WebChart.SeriesTemplate.View = view;

            WebChart.Width  = width;
            WebChart.Height = height;
            WebChart.DataBind();
            WebChart.EnableViewState = true;

            return(WebChart);
        }
Exemple #16
0
        protected void DiskWebChart_Load(object sender, EventArgs e)
        {
            DataTable       dt           = new DataTable();
            WebChartControl chartControl = (WebChartControl)sender;

            DevExpress.Web.GridViewDataItemTemplateContainer gridc = (DevExpress.Web.GridViewDataItemTemplateContainer)chartControl.Parent;
            string srvname  = DataBinder.Eval(gridc.DataItem, "ServerName").ToString();
            string diskname = DataBinder.Eval(gridc.DataItem, "DiskName").ToString();

            dt = VSWebBL.DashboardBL.DiskHealthBLL.Ins.SetGraph(srvname, diskname);
            chartControl.DataSource                   = dt;
            chartControl.Series[0].DataSource         = dt;
            chartControl.Series[0].ArgumentDataMember = dt.Columns["DiskName"].ToString();
            chartControl.Series[0].ValueDataMembers.AddRange(dt.Columns["DiskUsed"].ToString());
            chartControl.Series[0].Visible            = true;
            chartControl.Series[1].DataSource         = dt;
            chartControl.Series[1].ArgumentDataMember = dt.Columns["DiskName"].ToString();
            chartControl.Series[1].ValueDataMembers.AddRange(dt.Columns["DiskFree"].ToString());
            chartControl.Series[1].Visible = true;
            chartControl.DataBind();
        }
Exemple #17
0
    Stream CreateChart(IEnumerable <Sales_by_Category> sales)
    {
        var cc = new WebChartControl();

        cc.Width             = Unit.Pixel(600);
        cc.Height            = Unit.Pixel(400);
        cc.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
        var series = new DevExpress.XtraCharts.Series("Products", DevExpress.XtraCharts.ViewType.Bar);

        series.DataSource         = sales;
        series.ArgumentDataMember = "ProductName";
        series.ValueScaleType     = DevExpress.XtraCharts.ScaleType.Numerical;
        series.ValueDataMembers.AddRange(new string[] { "ProductSales" });
        cc.Series.Add(series);
        Controls.Add(cc);
        cc.DataBind();
        MemoryStream stream = new MemoryStream();

        cc.ExportToImage(stream, System.Drawing.Imaging.ImageFormat.Png);
        stream.Position = 0;
        return(stream);
    }
Exemple #18
0
        protected void Page_Load(object sender, EventArgs e)
        {
            q = new SqlQuery();


            // Y Axis value

            // We watch Obrat
            if (ddlYValueType.SelectedValue.Equals("Obrat"))
            {
                //q.Start(QueryType.Select, SelectList.Expression, "");
            }

            // We watch Prodanych kusu
            if (ddlYValueType.SelectedValue.Equals("ProdanychKusu"))
            {
                //q.Start(QueryType.Select, SelectList.Count, "");
            }

            if (ddlYFilterType.SelectedIndex > 0)
            {
                //q.WhereEquals(ddlYFilterType.SelectedValue, lbYFilter);
            }

            //q.GroupBy(ddlYGroupBy.SelectedValue);
            //q.OrderByCount();


            // jak budeme resit kresleni po dnech???
            //foreach ()
            //{
            //}

            WebChartControl.ProcessImageRequest(this.Page);
            pnlGraph.Controls.Clear();
        }
Exemple #19
0
    protected void ProcessStats()
    {
        if (Session["proj_data"] != null)
        {
            int nrecs_proj_data = ((DataTable)Session["proj_data"]).Rows.Count;

            if (nrecs_proj_data > 0)
            {
                panelInfo.ClientVisible = true;

                //var chk = chkOptions.SelectedValues;
                var chk = "0";

                DataTable     dt        = (DataTable)Session["proj_data"];
                List <string> flds      = uwac.trk.dataops.GetListString(gridSelVars.GetSelectedFieldValues("fldname"));
                List <string> fldlabels = uwac.trk.dataops.GetListString(gridSelVars.GetSelectedFieldValues("fieldlabel"));

                string levels_row = cboLevelsRow.Value.ToString();
                string levels_col = cboLevelsCol.Value.ToString();

                panelDescStatsCharts.Controls.Clear();

                //Histograms
                if (chkOpt_hist.Checked)
                //if (chk.Contains("Hist"))
                {
                    Hist(dt, flds, fldlabels, "timept", levels_row);
                }

                //Desc Stats
                if (chkOpt_desc.Checked)
                {
                    //Use the Combobox to populate the pivotgrid Column

                    pivotDescStats.Fields["group"].Area = PivotArea.FilterArea;
                    pivotDescStats.Fields["txgrp"].Area = PivotArea.FilterArea;
                    pivotDescStats.Fields["sex"].Area   = PivotArea.FilterArea;

                    pivotDescStats.Fields[levels_row].Area = PivotArea.RowArea;
                    pivotDescStats.Fields[levels_col].Area = PivotArea.ColumnArea;


                    pivotDescStats.DataSource = (DataTable)Session["proj_data_stack"];
                    pivotDescStats.DataBind();


                    DevExpress.XtraPivotGrid.PivotSummaryDataSource pivot_ds = pivotDescStats.CreateSummaryDataSource();
                    DataTable dt_descstats = dxpivot.ConvertSummaryDataSourceToDataTable(pivot_ds);

                    //dt_descstats.Columns.Add("SDplus", typeof(double), "Value_Average + Value_StdDev");
                    //dt_descstats.Columns.Add("SDminus", typeof(double), "Value_Average - Value_StdDev");

                    //DataTable dt2 = dt_descstats.Copy();

                    List <DataTable> dts = utilStats.qryGroupBy(dt_descstats, "x", new List <string> {
                        "Variable"
                    });

                    double progressInPercent = 0;
                    int    numtbls           = dts.Count;
                    for (int i = 0; i < numtbls; i++)
                    //foreach (DataTable dt1 in dts)
                    {
                        DataTable dt1 = dts[i];
                        progressInPercent = Math.Round(((double)i / numtbls) * 100);

                        WebChartControl WebChart = dxpivot.CreateChart(dt1, cboLevelsRow.Value.ToString(), cboLevelsCol.Value.ToString());
                        WebChart.Titles.Add(new ChartTitle()
                        {
                            Text = dt1.TableName.ToString()
                        });
                        panelDescStatsCharts.Controls.Add(WebChart);
                    }
                }



                //Missing Data
                if (chkOpt_miss.Checked)
                {
                    pivotMissing.DataSource = (DataTable)Session["proj_data_stack"];
                    pivotMissing.DataBind();
                }

                //Data Table - stacked by var
                if (chkOpt_data_stackvar.Checked)
                {
                    gridDataStackvar.DataSource = (DataTable)Session["proj_data_stack"];
                    gridDataStackvar.DataBind();
                }

                if (chkOpt_data_long.Checked)
                {
                    gridDataLong.DataSource = (DataTable)Session["proj_data"];
                    gridDataLong.DataBind();
                }
            }

            panelResults.Visible = true;
            ShowHideResults();

            panelResults.JSProperties["cp_isFinished"] = true;
        }
    }
Exemple #20
0
        void DrawChart(DataTable data, DateTime from, DateTime to, IntervalType interval, ValueRepresentation representation, bool ajax)
        {
            List<Interval> _intervals = new List<Interval>();

                if (interval == IntervalType.Day || interval == IntervalType.Week)
                {
                    // Day by day or week by week
                    for (int i = 0; i < (to.Subtract(from).TotalDays / (int)interval); i++)
                    {
                        _intervals.Add(new Interval(from.AddDays((i * (int)interval) + 1 - 1), from.AddDays((i * (int)interval) + (int)interval + 1 - 1)));

                    }
                }
                if (interval == IntervalType.Month)
                {
                    for (int i = 0; i < to.Month - from.Month + ((to.Year - from.Year) * 12) + 1; i++)
                    {
                        _intervals.Add(new Interval(new DateTime(from.Year, from.Month, 1).AddMonths(i), new DateTime(from.Year, from.Month, 1).AddMonths(i + 1).AddDays(-1)));
                    }
                }

                if (interval == IntervalType.Year)
                {
                    for (int i = 0; i < to.Year - from.Year + 1; i++)
                    {
                        _intervals.Add(new Interval(new DateTime(from.Year, from.Month, 1).AddYears(i), new DateTime(from.Year, from.Month, 1).AddYears(i + 1).AddDays(-1)));
                    }
                }
            //foreach (Interval ii in _intervals)
            //{
            //    Response.Write(ii.Start);
            //    Response.Write(" - ");
            //    Response.Write(ii.End);
            //    Response.Write("<br>");
            //}

            // Draw chart here item by item in _intervals

            WebChartControl chart = new WebChartControl();

            if (!ajax)
            {
                chart.EnableViewState = false;
                ChartTitle title = new ChartTitle();
                title.Text = "Graf dle " + ddlYGroupBy.SelectedItem.Text.ToLower() + ":";
                title.Font = new System.Drawing.Font("Tahoma", 10);
                chart.Titles.Add(title);
                chart.FillStyle.FillMode = FillMode.Solid;
            }
            Dictionary<int, Series> series = new Dictionary<int, Series>();

            List<bool> seriesVisibilities = new List<bool>();
            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["CanonConnectionStringMain"].ConnectionString))
            {
                conn.Open();

                List<string> seriesNames = new List<string>();
                List<string> seriesCriteria = new List<string>();

                int k = 0;
                Culture = "cs-CZ";
                // Create series
                using (SqlCommand cmd = new SqlCommand())
                {
                    cmd.Connection = conn;

                    StringBuilder text = new StringBuilder("");

            #warning extract to function
                    if (ddlYFilterType.SelectedIndex > 0)
                    {
                        if (_filerYValues.Count > 0)
                        {
                            text.Append(" AND (");
                            // Y Filter
                            int i = 0;
                            foreach (string s in _filerYValues)
                            {
                                text.Append(ddlYFilterType.SelectedValue);
                                text.Append(" = '");
                                text.Append(s);
                                text.Append("' ");
                                if (i < _filerYValues.Count - 1)
                                {
                                    text.Append("OR ");
                                }
                                i++;
                            }
                            text.Append(") ");
                        }
                    }
                    string top = "";
                    if (chbTop.Checked)
                    {
                        int tp = Convert.ToInt32(txtTop.Text);
                        if (!ajax)
                        {
                            tp += 1;
                        }
                        top = "TOP " + tp;
                    }

                    cmd.CommandText = string.Format("SELECT {2} {0}, {0} AS Value FROM PivotTable WHERE DateSale >= @Start AND DateSale < @End {1} GROUP BY {0} ORDER BY Sum(CAST(replace(TurnoverEUR, ',', '.') as Decimal)) DESC", ddlYGroupBy.SelectedValue, text, top);

                    cmd.Parameters.Add(new SqlParameter("@Start", SqlDbType.DateTime) { Value = _intervals[0].Start });
                    cmd.Parameters.Add(new SqlParameter("@End", SqlDbType.DateTime) { Value = _intervals[_intervals.Count - 1].End });

                    SqlDataReader reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        if (ddlYGroupBy.SelectedValue == "ReselerGroupJoined")
                        {
                            seriesNames.Add(reader[1].ToString().Trim() == "" ? "NO-NAME" : reader[1].ToString());
                        }
                        else
                        {
                            seriesNames.Add(reader[1].ToString().Trim() == "" ? "(neuvedeno)" : reader[1].ToString());
                        }

                        if (!ajax)
                        {
                            Series s;
                            if (rblValueDisplayMode.SelectedValue == "2" || ddlXValueType.SelectedValue == "Data")
                            {
                                s = new Series(reader[1].ToString(), ViewType.StackedBar);
                            }
                            else
                            {
                                s = new Series(reader[1].ToString(), ViewType.Line);
                            }
                            s.ValueScaleType = ScaleType.Numerical;
                            if (ddlXValueType.SelectedValue == "Time")
                            {
                                s.ArgumentScaleType = ScaleType.DateTime;
                            }
                            if (ddlXValueType.SelectedValue == "Data")
                            {
                                s.ArgumentScaleType = ScaleType.Qualitative;
                            }

                            if (ddlYValueType.SelectedValue == "4")
                            {
                                if (rblValueDisplayMode.SelectedValue != "2")
                                {
                                    s.PointOptions.ValueNumericOptions.Format = NumericFormat.Currency;
                                }
                                if (rblValueDisplayMode.SelectedValue == "2")
                                {
                                    s.PointOptions.ValueNumericOptions.Format = NumericFormat.Percent;
                                }
                            }
                            //s.PointOptions.ValueNumericOptions.Format = NumericFormat.Currency;
                            seriesCriteria.Add(reader[0].ToString());
                            seriesVisibilities.Add(false);
                            series.Add(k, s);
                            k++;
                        }
                    }
                    reader.Close();
                }

                // Draw series
                // By Time

                // Enumerate series here and send them via ajax
                if (ajax)
                {
                    lbYHaving.Items.Clear();
                    lbYHaving.Items.Add(allValues);
                    foreach (string s in seriesNames)
                    {
                        lbYHaving.Items.Add(s);
                    }
                    DataBind(lbYHaving);

                    return;
                }

                if (ddlXValueType.SelectedValue == "Time")
                {
                    foreach (Interval i in _intervals)
                    {
                        for (int j = 0; j < seriesNames.Count; j++)
                        {
                            using (SqlCommand command = GenerateReportCommand(i.Start, i.End, seriesCriteria[j]))
                            {
                                command.Connection = conn;
                                SqlDataReader dr = command.ExecuteReader();

                                while (dr.Read())
                                {
                                    // Here it comes
                                    if (dr[0] is DBNull)
                                    {
                                        series[j].Points.Add(new SeriesPoint(i.Start, new double[] { 0 }));
                                    }
                                    else
                                    {
                                        series[j].Points.Add(new SeriesPoint(i.Start, new double[] { Convert.ToDouble(dr[0]) }));
                                        seriesVisibilities[j] = true;
                                    }
                                }
                                dr.Close();
                            }
                        }
                    }
                }
                if (ddlXValueType.SelectedValue == "Data")
                {
                    using (SqlCommand command_data = new SqlCommand())
                    {
                        command_data.Connection = conn;
                        command_data.CommandText = "SELECT DISTINCT " + ddlXGroupByData.SelectedValue + " FROM PivotTable WHERE DateSale >= @Start AND DateSale < @End";
                        command_data.Parameters.Add(new SqlParameter("@Start", SqlDbType.DateTime) { Value = _intervals[0].Start });
                        command_data.Parameters.Add(new SqlParameter("@End", SqlDbType.DateTime) { Value = _intervals[_intervals.Count - 1].End });

                        SqlDataReader reader = command_data.ExecuteReader();
                        List<string> xData = new List<string>();

                        while (reader.Read())
                        {
                            xData.Add(reader[0].ToString());
                        }
                        reader.Close();

                        foreach(string xd in xData)
                        {
                            for (int j = 0; j < seriesNames.Count; j++)
                            {
                                using (SqlCommand command = GenerateReportCommandByData(xd, seriesCriteria[j]))
                                {
                                    command.Connection = conn;
                                    SqlDataReader dr = command.ExecuteReader();

                                    while (dr.Read())
                                    {
                                        // Here it comes
                                        if (dr[0] is DBNull)
                                        {
                                            series[j].Points.Add(new SeriesPoint(xd, new double[] { 0 }));
                                        }
                                        else
                                        {
                                            series[j].Points.Add(new SeriesPoint(xd, new double[] { Convert.ToDouble(dr[0]) }));
                                            seriesVisibilities[j] = true;
                                        }
                                    }
                                    dr.Close();
                                }
                            }
                        }
                    }
                }
            }

            int l = 0;
            object yHaving = Request[lbYHaving.ClientID.Replace('_', '$')];

            if (yHaving == null)
            {
                yHaving = allValues;
            }

            lbYHaving.Items.Clear();

            if (yHaving.ToString() != allValues)
            {
                {
                    for (int i = 0; i < series.Count; i++)
                    {
                        if (seriesVisibilities[i])
                        {
                            lbYHaving.Items.Add(series[i].Name);
                            foreach (string s in yHaving.ToString().Split(','))
                            {
                                if (s == series[i].Name)
                                {
                                    lbYHaving.Items[l].Selected = true;
                                    seriesVisibilities[i] = true;
                                    break;
                                }
                                else
                                {
                                    seriesVisibilities[i] = false;
                                }
                            }
                            l++;
                        }
                    }
                }
            }
            else
            {
                for (int i = 0; i < series.Count; i++)
                {
                    if (seriesVisibilities[i] && yHaving.ToString() != allValues)
                    {
                        lbYHaving.Items.Add(series[i].Name);
                    }
                }
            }

            lbYHaving.Items.Insert(0, allValues);
            if (yHaving.ToString() == allValues)
            {
                lbYHaving.Items[0].Selected = true;
            }

            // Other
            for (int i = 0; i < series.Count; i++)
            {
                if (seriesVisibilities[i])
                {

                    if (seriesVisibilities[i] && yHaving.ToString() == allValues)
                    {
                        lbYHaving.Items.Add(series[i].Name);
                    }
                    chart.Series.Add(series[i]);
                }
            }

            #region Compute sum

            Series suma = new Series("Suma", ViewType.Line);
            suma.ValueScaleType = ScaleType.Numerical;
            suma.ArgumentScaleType = ScaleType.DateTime;
            if (ddlYValueType.SelectedValue == "4")
            {
                if (rblValueDisplayMode.SelectedValue != "2")
                {
                    suma.PointOptions.ValueNumericOptions.Format = NumericFormat.Currency;
                }
                if (rblValueDisplayMode.SelectedValue == "2")
                {
                    suma.PointOptions.ValueNumericOptions.Format = NumericFormat.Percent;
                }
            }

            DataTable grid = new DataTable();
            string xArgumentName = ddlXValueType.SelectedItem.Text + " - dle ";

            if (ddlXValueType.SelectedValue == "Time")
            {
                xArgumentName += ddlXGroupByTime.SelectedItem.Text.ToLower();
            }
            else
            {
                xArgumentName += ddlXGroupByData.SelectedItem.Text.ToLower();
            }

            grid.Columns.Add(new DataColumn(xArgumentName));
            for (int i = 0; i < chart.Series.Count; i++)
            {
                grid.Columns.Add(new DataColumn(chart.Series[i].Name));
            }

            double sum;
            for (int j = 0; j < chart.Series[0].Points.Count; j++)
            {
                sum = 0;
                DataRow dr = grid.NewRow();
                if (ddlXValueType.SelectedValue == "Time")
                {
                    dr[0] = Convert.ToDateTime(chart.Series[0].Points[j].Argument).ToString("dd.MM.yyyy");
                }
                else
                {
                    dr[0] = chart.Series[0].Points[j].Argument;
                }
                for (int i = 0; i < chart.Series.Count; i++)
                {
                    dr[i+1] = chart.Series[i].Points[j].Values[0];
                    sum += chart.Series[i].Points[j].Values[0];
                }
                grid.Rows.Add(dr);
                suma.Points.Add(new SeriesPoint(chart.Series[0].Points[j].Argument, new double[] { sum }));

                // Percent
                if (rblValueDisplayMode.SelectedValue == "2")
                {
                    for (int i = 0; i < chart.Series.Count; i++)
                    {
                        if (sum == 0)
                        {
                            chart.Series[i].Points[j].Values[0] = 0;
                        }
                        else
                        {
                            chart.Series[i].Points[j].Values[0] = Math.Round(((chart.Series[i].Points[j].Values[0] / sum) * 1), 2);
                        }
                    }
                }

                if (rblValueDisplayMode.SelectedValue == "3")
                {
                    if (j > 0)
                    {
                        for (int i = 0; i < chart.Series.Count; i++)
                        {
                            chart.Series[i].Points[j].Values[0] = chart.Series[i].Points[j].Values[0] - chart.Series[i].Points[j - 1].Values[0];
                        }
                    }
                    else
                    {
                        for (int i = 0; i < chart.Series.Count; i++)
                        {
                            chart.Series[i].Points[j].Values[0] = 0;
                        }
                    }

                }
            }
            suma.View.Color = System.Drawing.Color.Black;
            series.Add(series.Count, suma);
            if (rblValueDisplayMode.SelectedValue == "1")
            {
                chart.Series.Add(series[series.Count - 1]);
            }

            if (chbShowSum.Checked && rblValueDisplayMode.SelectedValue == "1" && ddlXValueType.SelectedValue == "Time")
            {
                int toBeRemoved = chart.Series.Count - 1;
                for (int j = 0; j < toBeRemoved; j++)
                {
                    chart.Series.RemoveAt(0);
                }
            }

            // Show grid

            DataRow drSum = grid.NewRow();
            for(int i = 1; i < grid.Columns.Count; i++)
            {
                double dSum = 0;
                for (int j = 0; j < grid.Rows.Count; j++)
                {
                    dSum += Convert.ToDouble(grid.Rows[j][i]);
                }
                drSum[i] = dSum;
            }
            grid.Columns.Add(new DataColumn("Součet za svislou osu"));
            for (int i = 0; i < grid.Rows.Count; i++)
            {
                double dSum = 0;
                for (int j = 1; j < grid.Columns.Count - 1; j++)
                {
                    dSum += Convert.ToDouble(grid.Rows[i][j] == null ? "0" : grid.Rows[i][j]);
                }
                if (rblValueDisplayMode.SelectedValue == "2")
                {
                    for (int j = 1; j < grid.Columns.Count - 1; j++)
                    {
                        if (dSum == 0)
                        {
                            grid.Rows[i][j] = "0";
                        }
                        else
                        {
                            grid.Rows[i][j] = (Math.Round(Convert.ToDouble(grid.Rows[i][j] == null ? "0" : grid.Rows[i][j]) / dSum, 4) * 100).ToString() + " %";
                        }
                    }
                }
                grid.Rows[i][grid.Columns[grid.Columns.Count-1]] = dSum;
            }
            grid.Rows.Add(drSum);
            grid.Rows[grid.Rows.Count - 1][0] = "Součet za vodorovnou osu";
            gvGrid.DataSource = grid;
            gvGrid.DataBind();

            #endregion

            #region Customize chart

            DevExpress.XtraCharts.XYDiagram xyDiagram = new XYDiagram();

            if (ddlYValueType.SelectedIndex == 0)
            {
                xyDiagram.AxisY.Title.Text = "EUR";
            }
            if (ddlYValueType.SelectedIndex == 1)
            {
                xyDiagram.AxisY.Title.Text = "Kusů";
            }

            xyDiagram.AxisY.Title.Font = new System.Drawing.Font("Tahoma", 8);
            xyDiagram.AxisY.Label.Staggered = false;
            xyDiagram.AxisY.Title.Visible = true;
            xyDiagram.AxisY.Range.SideMarginsEnabled = true;
            xyDiagram.AxisY.Interlaced = true;

            xyDiagram.AxisX.Title.Font = new System.Drawing.Font("Tahoma", 8);
            xyDiagram.AxisX.Label.Staggered = true;
            xyDiagram.AxisX.Range.SideMarginsEnabled = true;
            xyDiagram.AxisX.Tickmarks.MinorVisible = false;

            xyDiagram.AxisX.Range.MinValue = from;
            xyDiagram.AxisX.Range.MaxValue = to;

            switch (interval)
            {
                case IntervalType.Day:
                    xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Day;
                    break;
                case IntervalType.Week:
                    xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Day;
                    xyDiagram.AxisX.GridSpacingAuto = false;
                    xyDiagram.AxisX.GridSpacing = 7;
                    break;
                case IntervalType.Month:
                    xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Month;
                    break;
                case IntervalType.Year:
                    xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Year;
                    break;
            }
            xyDiagram.EnableZooming = true;

            chart.Diagram = xyDiagram;
            chart.Width = Convert.ToInt32(txtScreenWidth.Text) - 50;
            chart.Height = 602;
            //chart.Height = Convert.ToInt32(txtScreenHeight.Text) - 230;

            #endregion

            chart.DataBind();
            pnlGraph.Controls.Add(chart);
        }
        protected void ASPxButton4_Click(object sender, EventArgs e)
        {
            WebChartControl WebChartControl1 = new WebChartControl();

            WebChartControl1.Series.Clear();

            WebChartControl1.DataSource = sqlDataSource;

            this.ASPxPopupControl1.Controls.Add(WebChartControl1);
            Series series1 = new Series("DESPESAS", ViewType.Bar);
            series1.ArgumentDataMember = SeriesName;
            series1.ValueDataMembers.AddRange(new string[] { SeriesData });

            WebChartControl1.Series.Add(series1);

            WebChartControl1.Legend.Visible = false;

            ((XYDiagram)WebChartControl1.Diagram).Rotated = false;
            WebChartControl1.Width = new Unit(Convert.ToInt32("750"));

            WebChartControl1.DataBind();
        }
 public static void SaveChart(WebChartControl chart, HttpSessionState session)
 {
     SaveChartLayout(chart.SaveToXml(), session);
 }
    protected void MakeDxChart()
    {
        SQL_utils sql = new SQL_utils("FinMart");

        string importDate = sql.StringScalar_from_SQLstring("select convert(varchar,min(imported_from_EDW),0)  from fin.tblEDWData ");

        lblImportDate.Text = String.Format("Imported on {0}", importDate);

        DataTable dt_bnums = sql.DataTable_from_SQLstring(

            "select 'a' orderer, budgetNumber,  " +
            "[name] budgetName from fin.tblEDWData " +
            "where bienniumYear >= 2013 and budgetNumber in " +
            "(095001, 095002, 099877, 653920, 655411) " +
            "group by budgetNumber,  [name] " +
            "union select 'b' orderer, budgetNumber,  " +
            "[name] budgetName from fin.tblEDWData " +
            "where bienniumYear >= 2013 and budgetNumber in " +
            "(640259, 653977, 656876, 658853, 680475, 680774, 681328)" +
            "group by budgetNumber,  [name] " +
            "union select 'c' orderer, 'Core Clinic' as budgetNumber,  " +
            "'Sum' as budgetName " +
            "union select 'd' orderer, 'Gifts' as budgetNumber,  " +
            "'Sum' as budgetName order by orderer");


        if (dt_bnums.Columns[0].ColumnName == "err")
        {
            DataRow row = dt_bnums.Rows[0];

            lblN.Text = row["err"].ToString();

            lblN.Text += sql.Errormsg;
        }

        else
        {
            List <DxChartOrder> orders = new List <DxChartOrder>();

            int counter = 0;

            foreach (DataRow row in dt_bnums.Rows)
            {
                counter++;
                string bname = row["budgetName"].ToString();
                string bnum  = row["budgetNumber"].ToString();

                string mo = DateTime.Now.Month.ToString();
                if (mo.Length < 2)
                {
                    mo = "0" + mo;
                }
                string yrmo_now = DateTime.Now.Year.ToString() + "_" + mo;

                string code = String.Format(
                    "select * from(select '1' id, budgetNumber, [name] budgetName, bienniumYear, " +
                    "yrmo, RevenueAmount, REV_Endowment, REV_Other, -ExpenseAmount as ExpenseAmount, " +
                    "-EXP_SALARY as EXP_SALARY, -EXP_Non_SALARY as EXP_Non_SALARY, balance from fin.tblEDWData " +
                    "where bienniumYear >= 2013 and budgetNumber in " +
                    "(095001, 095002, 099877, 653920, 655411, 640259, 653977, 656876, 658853, 680774, 681328, 680475) " +
                    "and yrmo <= (select substring(replace(CONVERT(VARCHAR, GETDATE(), 21), '-', '_'), 1, 7)) " +
                    "union select '1' id, 'Core Clinic' as budgetNumber, 'Sum' as budgetName, bienniumYear, " +
                    "yrmo, sum(RevenueAmount) as RevenueAmount, sum(REV_Endowment) as REV_Endowment, " +
                    "sum(REV_Other) as REV_Other, sum(-ExpenseAmount) as ExpenseAmount, sum(-EXP_SALARY) as EXP_SALARY, " +
                    "sum(-EXP_Non_SALARY) as EXP_Non_SALARY, sum(balance) from fin.tblEDWData where bienniumYear >= 2013 " +
                    "and budgetNumber in (095001, 095002, 099877, 653920, 655411) " +
                    "and yrmo <= (select substring(replace(CONVERT(VARCHAR, GETDATE(), 21), '-', '_'), 1, 7)) " +
                    "group by bienniumYear , yrmo " +
                    "union select '1' id ,'Gifts' as budgetNumber ,'Sum' as budgetName , bienniumYear , yrmo ," +
                    "sum(RevenueAmount) as RevenueAmount ,sum(REV_Endowment) as REV_Endowment ,sum(REV_Other) " +
                    "as REV_Other ,sum(-ExpenseAmount) as ExpenseAmount ,sum(-EXP_SALARY) as EXP_SALARY ," +
                    "sum(-EXP_Non_SALARY) as EXP_Non_SALARY ,sum(balance) as balance from fin.tblEDWData " +
                    "where bienniumYear >= 2013 and budgetNumber in (640259, 653977, 656876, 658853, 680774, 681328, 680475) " +
                    "and yrmo <= (select substring(replace(CONVERT(VARCHAR, GETDATE(), 21), '-', '_'), 1, 7)) " +
                    "group by bienniumYear , yrmo ) a where budgetNumber = '{0}'", bnum);

                DataTable dt = sql.DataTable_from_SQLstring(code);


                decimal maxbal = dt.AsEnumerable().Select(f => f.Field <decimal>("balance")).Max();


                List <Color> mycolors = new List <Color> {
                    Color.DarkBlue                         //balance
                    , Color.Red                            //exp non-sal
                    , Color.Red                            //exp sal
                    , Color.Red                            //exp tot
                    , Color.Green                          //rev endow
                    , Color.Green                          //rev other
                    , Color.Green                          //rev tot

                    #region old colors
                    // Color.Red //balance
                    //,Color.Orange //exp non-sal
                    //,Color.Yellow //exp sal
                    //,Color.Green //exp tot
                    //,Color.Blue //rev endow
                    //,Color.Purple //rev other
                    //,Color.Cyan //rev tot

                    //,Color.Pink
                    //,Color.Peru
                    //,Color.Wheat
                    //,Color.SkyBlue
                    //,Color.SpringGreen
                    //,Color.AliceBlue
                    //,Color.Orange
                    //,Color.DarkOrange
                    //,Color.Olive
                    #endregion
                };

                List <DashStyle> mydashstyles = new List <DashStyle> {
                    DashStyle.Solid
                    , DashStyle.Dash
                    , DashStyle.Dot
                    , DashStyle.Solid
                    , DashStyle.Dot
                    , DashStyle.Dash
                    , DashStyle.Solid
                };


                if (maxbal != 0)
                {
                    DxLineplotSettings settings = new DxLineplotSettings();

                    List <string> yvars = new List <string> {
                        "RevenueAmount"
                        , "REV_Endowment"
                        , "REV_Other"
                        , "ExpenseAmount"
                        , "EXP_SALARY"
                        , "EXP_Non_SALARY"
                        , "balance"
                    };



                    settings.maxCol = 2;
                    settings.W      = 1100;
                    settings.H      = 400;
                    settings.colors = mycolors;
                    settings.AddVarsFromList(yvars);
                    //settings.numvars = yvars;
                    settings.seriesby     = "id";
                    settings.xaxisvar     = "yrmo";
                    settings.colorvar     = "variable";
                    settings.title        = String.Format("{0} {1}", bnum, bname);
                    settings.legend_pos_h = "RightOutside";
                    settings.legend_pos_v = "Top";
                    //settings.ChartType = DxChartType.Lineplot;


                    DxChartOrder order = new DxChartOrder();
                    order.list_settings.Add(settings);
                    //orders.Add(order);

                    DxChartFactory factory = new DxChartFactory(dt, new List <DxChartOrder> {
                        order
                    });


                    foreach (DxChartOrder myorder in factory.orders)
                    {
                        foreach (DxChartBatch batch in myorder.batches)
                        {
                            WebChartControl c = batch.charts[0].chart;

                            c.Legend.MarkerMode = LegendMarkerMode.CheckBoxAndMarker;

                            DevExpress.XtraCharts.Series s0 = c.Series[0];
                            DevExpress.XtraCharts.Series s1 = c.Series[1];
                            DevExpress.XtraCharts.Series s2 = c.Series[2];
                            DevExpress.XtraCharts.Series s3 = c.Series[3];
                            DevExpress.XtraCharts.Series s4 = c.Series[4];
                            DevExpress.XtraCharts.Series s5 = c.Series[5];
                            DevExpress.XtraCharts.Series s6 = c.Series[6];

                            s0.View.Color = mycolors[0];
                            s1.View.Color = mycolors[1];
                            s2.View.Color = mycolors[2];
                            s3.View.Color = mycolors[3];
                            s4.View.Color = mycolors[4];
                            s5.View.Color = mycolors[5];
                            s6.View.Color = mycolors[6];

                            ((LineSeriesView)s0.View).LineStyle.DashStyle = mydashstyles[0];
                            ((LineSeriesView)s1.View).LineStyle.DashStyle = mydashstyles[1];
                            ((LineSeriesView)s2.View).LineStyle.DashStyle = mydashstyles[2];
                            ((LineSeriesView)s3.View).LineStyle.DashStyle = mydashstyles[3];
                            ((LineSeriesView)s4.View).LineStyle.DashStyle = mydashstyles[4];
                            ((LineSeriesView)s5.View).LineStyle.DashStyle = mydashstyles[5];
                            ((LineSeriesView)s6.View).LineStyle.DashStyle = mydashstyles[6];

                            System.Web.UI.WebControls.Table t = LayoutOutput.LayoutBatch(batch);
                            Literal lit = new Literal();
                            lit.Text = String.Format("<b>{2}.  {0} {1}</b>", bnum, bname, counter);
                            panel.Controls.Add(lit);
                            panel.Controls.Add(t);
                        }
                    }
                }
            }
        }
    }
Exemple #24
0
        public void Bind()
        {
            List <int>         channels = this.Channels;
            List <int>         products = this.Products;
            CanonDataContext   db       = Cdb.Instance;
            List <MainMonitor> list     = CanonMainMonitor.GetValuesForChart(deStartDate.Date,
                                                                             deFinishDate.Date, channels, products);

            foreach (int productId in products)
            {
                Product product = db.Products.Where(p => p.ProductId == productId).FirstOrDefault();
                if (product == null)
                {
                    continue;
                }
                WebChartControl chart = new WebChartControl();
                chart.EnableViewState = false;
                ChartTitle title = new ChartTitle();
                title.Text = string.Format(Utilities.GetResourceString("Common", "ChartHeader"),
                                           product.ProductName, deStartDate.Date.ToString("dd.MM.yyyy"),
                                           deFinishDate.Date.ToString("dd.MM.yyyy"));
                title.Font = new System.Drawing.Font("Tahoma", 10);
                chart.Titles.Add(title);
                chart.FillStyle.FillMode = FillMode.Solid;
                Dictionary <int, Series> series = new Dictionary <int, Series>();
                Series s0 = new Series("Recommended price", ViewType.Line);
                s0.ValueScaleType    = ScaleType.Numerical;
                s0.ArgumentScaleType = ScaleType.DateTime;
                series.Add(0, s0);
                foreach (int channelId in channels)
                {
                    Channel channel = db.Channels.Where(c => c.ChannelId == channelId).FirstOrDefault();
                    if (channel == null)
                    {
                        continue;
                    }
                    Series s = new Series(channel.ChannelName, ViewType.Line);
                    s.ValueScaleType    = ScaleType.Numerical;
                    s.ArgumentScaleType = ScaleType.DateTime;
                    series.Add(channelId, s);
                }
                foreach (MainMonitor mm in list)
                {
                    if (mm.ProductId != productId)
                    {
                        continue;
                    }
                    series[mm.ChannelId].Points.Add(new SeriesPoint(mm.CalcDate, new double[] { (double)mm.ChannelPrice }));
                    series[0].Points.Add(new SeriesPoint(mm.CalcDate, new double[] { (double)mm.RecommendedPrice }));
                }
                foreach (KeyValuePair <int, Series> serie in series)
                {
                    chart.Series.Add(serie.Value);
                }
                //diagram
                DevExpress.XtraCharts.XYDiagram xyDiagram = new XYDiagram();
                xyDiagram.AxisY.Title.Font               = new System.Drawing.Font("Tahoma", 8);
                xyDiagram.AxisY.Title.Text               = "CZK";
                xyDiagram.AxisY.Label.Staggered          = false;
                xyDiagram.AxisY.Title.Visible            = true;
                xyDiagram.AxisY.Range.SideMarginsEnabled = true;
                xyDiagram.AxisY.Interlaced               = true;

                xyDiagram.AxisX.Title.Font               = new System.Drawing.Font("Tahoma", 8);
                xyDiagram.AxisX.Label.Staggered          = true;
                xyDiagram.AxisX.Range.SideMarginsEnabled = true;
                xyDiagram.AxisX.Tickmarks.MinorVisible   = false;
                chart.Diagram = xyDiagram;
                chart.Width   = 700;
                chart.Height  = 500;
                chart.DataBind();
                panelPics.Controls.Add(chart);

                this.FilesToSave.Add(this.SaveChartIntoFile(product.ProductName, chart));
            }
        }
 public DXChartControlWrapper(WebChartControl c)
 {
     _Control = c;
 }
Exemple #26
0
        public static void FormatCommon_ChartControl(WebChartControl webChart, int styleID)
        {
            XYDiagram diagram = null;

            try
            {
                switch (styleID)
                {
                case 0:
                    webChart.Padding.All                       = 0;
                    webChart.BorderOptions.Visible             = false;
                    webChart.SeriesDataMember                  = "Series";
                    webChart.SeriesTemplate.ArgumentDataMember = "Arguments";
                    webChart.SeriesTemplate.ValueDataMembers.AddRange(new string[] { "Values" });
                    webChart.SeriesTemplate.Label.Visible = false;    // new
                    webChart.SeriesTemplate.PointOptions.ValueNumericOptions.Format    = NumericFormat.Number;
                    webChart.SeriesTemplate.PointOptions.ValueNumericOptions.Precision = 2;
                    // Format for WebChart Series Axis
                    if (webChart.Series != null)
                    {
                        foreach (SeriesBase series in webChart.Series)
                        {
                            series.Visible = false;
                        }
                    }
                    diagram = (XYDiagram)webChart.Diagram;
                    diagram.AxisX.DateTimeMeasureUnit          = DateTimeMeasurementUnit.Year;
                    diagram.AxisX.DateTimeGridAlignment        = DateTimeMeasurementUnit.Year;
                    diagram.AxisX.DateTimeOptions.Format       = DateTimeFormat.Custom;
                    diagram.AxisX.DateTimeOptions.FormatString = "yyyy";
                    diagram.AxisY.NumericOptions.Format        = NumericFormat.Number;
                    diagram.AxisY.NumericOptions.Precision     = 0;
                    break;

                case 1:
                    webChart.Padding.All = 0;
                    diagram = (XYDiagram)webChart.Diagram;
                    diagram.AxisX.DateTimeMeasureUnit          = DateTimeMeasurementUnit.Year;
                    diagram.AxisX.DateTimeGridAlignment        = DateTimeMeasurementUnit.Year;
                    diagram.AxisX.DateTimeOptions.Format       = DateTimeFormat.Custom;
                    diagram.AxisX.DateTimeOptions.FormatString = "yyyy";
                    diagram.AxisY.NumericOptions.Format        = NumericFormat.Number;
                    diagram.AxisY.NumericOptions.Precision     = 0;
                    diagram.DefaultPane.BorderVisible          = false;
                    break;

                case 2:
                    webChart.Padding.All                  = 0;
                    webChart.BorderOptions.Visible        = false;
                    webChart.SeriesTemplate.Label.Visible = false;
                    webChart.SeriesTemplate.PointOptions.ValueNumericOptions.Format    = NumericFormat.Number;
                    webChart.SeriesTemplate.PointOptions.ValueNumericOptions.Precision = 2;

                    diagram = (XYDiagram)webChart.Diagram;
                    diagram.AxisX.DateTimeMeasureUnit          = DateTimeMeasurementUnit.Year;
                    diagram.AxisX.DateTimeGridAlignment        = DateTimeMeasurementUnit.Year;
                    diagram.AxisX.DateTimeOptions.Format       = DateTimeFormat.Custom;
                    diagram.AxisX.DateTimeOptions.FormatString = "yyyy";
                    diagram.AxisY.NumericOptions.Format        = NumericFormat.Number;
                    diagram.AxisY.NumericOptions.Precision     = 0;
                    break;
                }
            }
            catch { }
        }
Exemple #27
0
        void DrawChart(DataTable data, DateTime from, DateTime to, IntervalType interval, ValueRepresentation representation)
        {
            List <Interval> _intervals = new List <Interval>();

            if (interval == IntervalType.Day || interval == IntervalType.Week)
            {
                // Day by day or week by week
                for (int i = 0; i < (to.Subtract(from).TotalDays / (int)interval); i++)
                {
                    //Response.Write(i + 1);
                    //Response.Write(":   ");
                    //Response.Write((i * (int)interval) + 1);
                    //Response.Write(" - ");
                    //Response.Write((i * (int)interval) + 1 + 7);
                    //Response.Write("   |   ");
                    //Response.Write(from.AddDays((i * (int)interval) + 1 - 1));
                    //Response.Write(" - ");
                    //Response.Write(from.AddDays((i * (int)interval) + 1 - 1));
                    //Response.Write("<br>");

                    _intervals.Add(new Interval(from.AddDays((i * (int)interval) + 1 - 1), from.AddDays((i * (int)interval) + (int)interval + 1 - 1)));
                }
            }
            if (interval == IntervalType.Month)
            {
                for (int i = 0; i < to.Month - from.Month + ((to.Year - from.Year) * 12) + 1; i++)
                {
                    //Response.Write(i + 1);
                    //Response.Write(":   ");
                    //Response.Write(new DateTime(from.Year, from.Month, 1).AddMonths(i));
                    //Response.Write(" - ");
                    //Response.Write(new DateTime(from.Year, from.Month, 1).AddMonths(i+1).AddDays(-1));
                    //Response.Write("<br>");

                    _intervals.Add(new Interval(new DateTime(from.Year, from.Month, 1).AddMonths(i), new DateTime(from.Year, from.Month, 1).AddMonths(i + 1).AddDays(-1)));
                }
            }
            //List<>

            // Draw chart here item by item in _intervals

            WebChartControl chart = new WebChartControl();

            chart.EnableViewState = false;
            ChartTitle title = new ChartTitle();

            title.Text = "pokus";
            title.Font = new System.Drawing.Font("Tahoma", 10);
            chart.Titles.Add(title);
            chart.FillStyle.FillMode = FillMode.Solid;
            Dictionary <int, Series> series = new Dictionary <int, Series>();

            //foreach (int channelId in channels)
            //{
            //    Channel channel = db.Channels.Where(c => c.ChannelId == channelId).FirstOrDefault();
            //    if (channel == null) continue;
            //    Series s = new Series(channel.ChannelName, ViewType.Line);
            //    s.ValueScaleType = ScaleType.Numerical;
            //    s.ArgumentScaleType = ScaleType.DateTime;
            //    series.Add(channelId, s);
            //}



            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["CanonConnectionStringMain"].ConnectionString))
            {
                conn.Open();

                List <string> seriesNames = new List <string>();

                int k = 0;
                // Create series
                using (SqlCommand cmd = new SqlCommand())
                {
                    cmd.Connection  = conn;
                    cmd.CommandText = string.Format("SELECT DISTINCT {0} FROM PivotTable WHERE DateSale >= @Start AND DateSale < @End", ddlYGroupBy.SelectedValue);
                    cmd.Parameters.Add(new SqlParameter("@Start", SqlDbType.DateTime)
                    {
                        Value = _intervals[0].Start
                    });
                    cmd.Parameters.Add(new SqlParameter("@End", SqlDbType.DateTime)
                    {
                        Value = _intervals[_intervals.Count - 1].End
                    });

                    SqlDataReader reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        Series s = new Series(reader[0].ToString(), ViewType.Line);
                        s.ValueScaleType    = ScaleType.Numerical;
                        s.ArgumentScaleType = ScaleType.DateTime;
                        seriesNames.Add(reader[0].ToString());
                        series.Add(k, s);
                        k++;
                    }
                    reader.Close();
                }

                // Draw series
                foreach (Interval i in _intervals)
                {
                    for (int j = 0; j < seriesNames.Count; j++)
                    {
                        using (SqlCommand command = GenerateReportCommand(i.Start, i.End, seriesNames[j]))
                        {
                            command.Connection = conn;
                            SqlDataReader dr = command.ExecuteReader();

                            while (dr.Read())
                            {
                                // Here it comes
                                //Response.Write(dr[0]);
                                //Response.Write(" - ");
                                //Response.Write(dr[1]);
                                //Response.Write("<br>");
                                if (dr[0] is DBNull)
                                {
                                    series[j].Points.Add(new SeriesPoint(i.Start, new double[] { 0 }));
                                }
                                else
                                {
                                    series[j].Points.Add(new SeriesPoint(i.Start, new double[] { Convert.ToDouble(dr[0]) }));
                                }
                            }
                            dr.Close();
                        }
                    }
                }
            }

            foreach (KeyValuePair <int, Series> serie in series)
            {
                chart.Series.Add(serie.Value);
            }
            //diagram
            DevExpress.XtraCharts.XYDiagram xyDiagram = new XYDiagram();
            xyDiagram.AxisY.Title.Font               = new System.Drawing.Font("Tahoma", 8);
            xyDiagram.AxisY.Title.Text               = "CZK";
            xyDiagram.AxisY.Label.Staggered          = false;
            xyDiagram.AxisY.Title.Visible            = true;
            xyDiagram.AxisY.Range.SideMarginsEnabled = true;
            xyDiagram.AxisY.Interlaced               = true;

            xyDiagram.AxisX.Title.Font               = new System.Drawing.Font("Tahoma", 8);
            xyDiagram.AxisX.Label.Staggered          = true;
            xyDiagram.AxisX.Range.SideMarginsEnabled = true;
            xyDiagram.AxisX.Tickmarks.MinorVisible   = false;



            xyDiagram.AxisX.Range.MinValue = from;
            xyDiagram.AxisX.Range.MaxValue = to;

            switch (interval)
            {
            case IntervalType.Day:
                xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Day;
                break;

            case IntervalType.Week:
                xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Day;
                xyDiagram.AxisX.GridSpacingAuto     = false;
                xyDiagram.AxisX.GridSpacing         = 7;
                break;

            case IntervalType.Month:
                xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Month;
                break;
            }



            //xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Month;
            xyDiagram.EnableZooming = true;

            chart.Diagram = xyDiagram;
            chart.Width   = 800;
            chart.Height  = 500;
            chart.DataBind();
            pnlGraph.Controls.Add(chart);
        }
Exemple #28
0
        public ActionResult ExportChart(long IdModuloActual)
        {
            switch (IdModuloActual)
            {
            case 13010300:
                ChartControlSettings settings = ChartHelpers.GetChartSettings();
                using (MemoryStream stream = new MemoryStream())
                {
                    settings.SaveToStream(stream);
                    stream.Seek(0, SeekOrigin.Begin);
                    WebChartControl chartControl = new WebChartControl();
                    chartControl.LoadFromStream(stream);
                    chartControl.Width      = Convert.ToInt16(settings.Width.Value);
                    chartControl.Height     = Convert.ToInt16(settings.Height.Value);
                    chartControl.DataSource = new DataView(ChartHelpers.GenerateDataIO(Metodos.GetDataGraficoImpactoOperacional()));
                    var pcl = new PrintableComponentLink(new PrintingSystem());
                    pcl.Component = ((IChartContainer)chartControl).Chart;
                    pcl.Landscape = true;
                    pcl.CreateDocument();

                    using (var exstream = new MemoryStream())
                    {
                        pcl.PrintingSystem.ExportToPdf(exstream);
                        byte[] buf = new byte[(int)exstream.Length];
                        exstream.Seek(0, SeekOrigin.Begin);
                        exstream.Read(buf, 0, buf.Length);

                        return(File(buf, "application/pdf", "chart" + Guid.NewGuid().ToString() + ".pdf"));
                    }
                }

            case 13010600:
                //< div id = "multichart" >

                //     < div class="MTD">
                //        <div class="Titulo">
                //            @Html.Raw(Resources.ReporteResource.captionMDTHeader)
                //        </div>
                //        @Html.Partial("GraficoMTDPartialView", Model.DataMTD)
                //    </div>
                //    <div class="RPO">
                //        <div class="Titulo">
                //            @Html.Raw(Resources.ReporteResource.captionRPOHeader)
                //        </div>
                //        @Html.Partial("GraficoRPOPartialView", Model.DataRPO)
                //    </div>
                //    <div class="RTO">
                //        <div class="Titulo">
                //            @Html.Raw(Resources.ReporteResource.captionRTOHeader)
                //        </div>
                //        @Html.Partial("GraficoRTOPartialView", Model.DataRTO)
                //    </div>
                //    <div class="WRT">
                //        <div class="Titulo">
                //            @Html.Raw(Resources.ReporteResource.captionWRTHeader)
                //        </div>
                //        @Html.Partial("GraficoWRTPartialView", Model.DataWRT)
                //    </div>
                //</div>
                break;

            case 13010900:
                //chartControl.DataSource = new DataView(ChartHelpers.GenerateDataIO(Metodos.GetNroProcesosByImpactoOperacional()));
                break;
            }
            return(null);
        }
Exemple #29
0
 /// <summary>
 /// Saves chart into image file.
 /// </summary>
 /// <param name="productName"></param>
 /// <param name="chart"></param>
 /// <returns></returns>
 protected string SaveChartIntoFile(string productName, WebChartControl chart)
 {
     string filename = string.Format("{0}_{1}.jpg", Sess.LoggedUser.UserId, (productName));
     filename = Path.Combine(Server.MapPath(Config.UploadDirectory), filename);
     using (MemoryStream memoryImage = new MemoryStream())
     {
         ((IChartContainer)chart as IChartContainer).Chart.ExportToImage(memoryImage, ImageFormat.Jpeg);
         memoryImage.Seek(0, System.IO.SeekOrigin.Begin);
         FileStream fs = File.OpenWrite(filename);
         memoryImage.WriteTo(fs);
         fs.Close();
     }
     return filename;
 }
Exemple #30
0
 public static void SetChartType(WebChartControl webChart, string chartTypeName)
 {
     webChart.SeriesTemplate.ChangeView((ViewType)Enum.Parse(typeof(ViewType), chartTypeName));
 }
Exemple #31
0
        void DrawChart(DataTable data, DateTime from, DateTime to, IntervalType interval, ValueRepresentation representation, bool ajax)
        {
            List <Interval> _intervals = new List <Interval>();

            if (interval == IntervalType.Day || interval == IntervalType.Week)
            {
                // Day by day or week by week
                for (int i = 0; i < (to.Subtract(from).TotalDays / (int)interval); i++)
                {
                    _intervals.Add(new Interval(from.AddDays((i * (int)interval) + 1 - 1), from.AddDays((i * (int)interval) + (int)interval + 1 - 1)));
                }
            }
            if (interval == IntervalType.Month)
            {
                for (int i = 0; i < to.Month - from.Month + ((to.Year - from.Year) * 12) + 1; i++)
                {
                    _intervals.Add(new Interval(new DateTime(from.Year, from.Month, 1).AddMonths(i), new DateTime(from.Year, from.Month, 1).AddMonths(i + 1).AddDays(-1)));
                }
            }

            if (interval == IntervalType.Year)
            {
                for (int i = 0; i < to.Year - from.Year + 1; i++)
                {
                    _intervals.Add(new Interval(new DateTime(from.Year, from.Month, 1).AddYears(i), new DateTime(from.Year, from.Month, 1).AddYears(i + 1).AddDays(-1)));
                }
            }
            //foreach (Interval ii in _intervals)
            //{
            //    Response.Write(ii.Start);
            //    Response.Write(" - ");
            //    Response.Write(ii.End);
            //    Response.Write("<br>");
            //}

            // Draw chart here item by item in _intervals

            WebChartControl chart = new WebChartControl();

            if (!ajax)
            {
                chart.EnableViewState = false;
                ChartTitle title = new ChartTitle();
                title.Text = "Graf dle " + ddlYGroupBy.SelectedItem.Text.ToLower() + ":";
                title.Font = new System.Drawing.Font("Tahoma", 10);
                chart.Titles.Add(title);
                chart.FillStyle.FillMode = FillMode.Solid;
            }
            Dictionary <int, Series> series = new Dictionary <int, Series>();

            List <bool> seriesVisibilities = new List <bool>();

            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["CanonConnectionStringMain"].ConnectionString))
            {
                conn.Open();

                List <string> seriesNames    = new List <string>();
                List <string> seriesCriteria = new List <string>();

                int k = 0;
                Culture = "cs-CZ";
                // Create series
                using (SqlCommand cmd = new SqlCommand())
                {
                    cmd.Connection = conn;

                    StringBuilder text = new StringBuilder("");

#warning extract to function
                    if (ddlYFilterType.SelectedIndex > 0)
                    {
                        if (_filerYValues.Count > 0)
                        {
                            text.Append(" AND (");
                            // Y Filter
                            int i = 0;
                            foreach (string s in _filerYValues)
                            {
                                text.Append(ddlYFilterType.SelectedValue);
                                text.Append(" = '");
                                text.Append(s);
                                text.Append("' ");
                                if (i < _filerYValues.Count - 1)
                                {
                                    text.Append("OR ");
                                }
                                i++;
                            }
                            text.Append(") ");
                        }
                    }
                    string top = "";
                    if (chbTop.Checked)
                    {
                        int tp = Convert.ToInt32(txtTop.Text);
                        if (!ajax)
                        {
                            tp += 1;
                        }
                        top = "TOP " + tp;
                    }

                    cmd.CommandText = string.Format("SELECT {2} {0}, {0} AS Value FROM PivotTable WHERE DateSale >= @Start AND DateSale < @End {1} GROUP BY {0} ORDER BY Sum(CAST(replace(TurnoverEUR, ',', '.') as Decimal)) DESC", ddlYGroupBy.SelectedValue, text, top);

                    cmd.Parameters.Add(new SqlParameter("@Start", SqlDbType.DateTime)
                    {
                        Value = _intervals[0].Start
                    });
                    cmd.Parameters.Add(new SqlParameter("@End", SqlDbType.DateTime)
                    {
                        Value = _intervals[_intervals.Count - 1].End
                    });

                    SqlDataReader reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        if (ddlYGroupBy.SelectedValue == "ReselerGroupJoined")
                        {
                            seriesNames.Add(reader[1].ToString().Trim() == "" ? "NO-NAME" : reader[1].ToString());
                        }
                        else
                        {
                            seriesNames.Add(reader[1].ToString().Trim() == "" ? "(neuvedeno)" : reader[1].ToString());
                        }

                        if (!ajax)
                        {
                            Series s;
                            if (rblValueDisplayMode.SelectedValue == "2" || ddlXValueType.SelectedValue == "Data")
                            {
                                s = new Series(reader[1].ToString(), ViewType.StackedBar);
                            }
                            else
                            {
                                s = new Series(reader[1].ToString(), ViewType.Line);
                            }
                            s.ValueScaleType = ScaleType.Numerical;
                            if (ddlXValueType.SelectedValue == "Time")
                            {
                                s.ArgumentScaleType = ScaleType.DateTime;
                            }
                            if (ddlXValueType.SelectedValue == "Data")
                            {
                                s.ArgumentScaleType = ScaleType.Qualitative;
                            }

                            if (ddlYValueType.SelectedValue == "4")
                            {
                                if (rblValueDisplayMode.SelectedValue != "2")
                                {
                                    s.PointOptions.ValueNumericOptions.Format = NumericFormat.Currency;
                                }
                                if (rblValueDisplayMode.SelectedValue == "2")
                                {
                                    s.PointOptions.ValueNumericOptions.Format = NumericFormat.Percent;
                                }
                            }
                            //s.PointOptions.ValueNumericOptions.Format = NumericFormat.Currency;
                            seriesCriteria.Add(reader[0].ToString());
                            seriesVisibilities.Add(false);
                            series.Add(k, s);
                            k++;
                        }
                    }
                    reader.Close();
                }

                // Draw series
                // By Time

                // Enumerate series here and send them via ajax
                if (ajax)
                {
                    lbYHaving.Items.Clear();
                    lbYHaving.Items.Add(allValues);
                    foreach (string s in seriesNames)
                    {
                        lbYHaving.Items.Add(s);
                    }
                    DataBind(lbYHaving);

                    return;
                }

                if (ddlXValueType.SelectedValue == "Time")
                {
                    foreach (Interval i in _intervals)
                    {
                        for (int j = 0; j < seriesNames.Count; j++)
                        {
                            using (SqlCommand command = GenerateReportCommand(i.Start, i.End, seriesCriteria[j]))
                            {
                                command.Connection = conn;
                                SqlDataReader dr = command.ExecuteReader();

                                while (dr.Read())
                                {
                                    // Here it comes
                                    if (dr[0] is DBNull)
                                    {
                                        series[j].Points.Add(new SeriesPoint(i.Start, new double[] { 0 }));
                                    }
                                    else
                                    {
                                        series[j].Points.Add(new SeriesPoint(i.Start, new double[] { Convert.ToDouble(dr[0]) }));
                                        seriesVisibilities[j] = true;
                                    }
                                }
                                dr.Close();
                            }
                        }
                    }
                }
                if (ddlXValueType.SelectedValue == "Data")
                {
                    using (SqlCommand command_data = new SqlCommand())
                    {
                        command_data.Connection  = conn;
                        command_data.CommandText = "SELECT DISTINCT " + ddlXGroupByData.SelectedValue + " FROM PivotTable WHERE DateSale >= @Start AND DateSale < @End";
                        command_data.Parameters.Add(new SqlParameter("@Start", SqlDbType.DateTime)
                        {
                            Value = _intervals[0].Start
                        });
                        command_data.Parameters.Add(new SqlParameter("@End", SqlDbType.DateTime)
                        {
                            Value = _intervals[_intervals.Count - 1].End
                        });

                        SqlDataReader reader = command_data.ExecuteReader();
                        List <string> xData  = new List <string>();

                        while (reader.Read())
                        {
                            xData.Add(reader[0].ToString());
                        }
                        reader.Close();

                        foreach (string xd in xData)
                        {
                            for (int j = 0; j < seriesNames.Count; j++)
                            {
                                using (SqlCommand command = GenerateReportCommandByData(xd, seriesCriteria[j]))
                                {
                                    command.Connection = conn;
                                    SqlDataReader dr = command.ExecuteReader();

                                    while (dr.Read())
                                    {
                                        // Here it comes
                                        if (dr[0] is DBNull)
                                        {
                                            series[j].Points.Add(new SeriesPoint(xd, new double[] { 0 }));
                                        }
                                        else
                                        {
                                            series[j].Points.Add(new SeriesPoint(xd, new double[] { Convert.ToDouble(dr[0]) }));
                                            seriesVisibilities[j] = true;
                                        }
                                    }
                                    dr.Close();
                                }
                            }
                        }
                    }
                }
            }

            int    l       = 0;
            object yHaving = Request[lbYHaving.ClientID.Replace('_', '$')];


            if (yHaving == null)
            {
                yHaving = allValues;
            }

            lbYHaving.Items.Clear();

            if (yHaving.ToString() != allValues)
            {
                {
                    for (int i = 0; i < series.Count; i++)
                    {
                        if (seriesVisibilities[i])
                        {
                            lbYHaving.Items.Add(series[i].Name);
                            foreach (string s in yHaving.ToString().Split(','))
                            {
                                if (s == series[i].Name)
                                {
                                    lbYHaving.Items[l].Selected = true;
                                    seriesVisibilities[i]       = true;
                                    break;
                                }
                                else
                                {
                                    seriesVisibilities[i] = false;
                                }
                            }
                            l++;
                        }
                    }
                }
            }
            else
            {
                for (int i = 0; i < series.Count; i++)
                {
                    if (seriesVisibilities[i] && yHaving.ToString() != allValues)
                    {
                        lbYHaving.Items.Add(series[i].Name);
                    }
                }
            }

            lbYHaving.Items.Insert(0, allValues);
            if (yHaving.ToString() == allValues)
            {
                lbYHaving.Items[0].Selected = true;
            }

            // Other
            for (int i = 0; i < series.Count; i++)
            {
                if (seriesVisibilities[i])
                {
                    if (seriesVisibilities[i] && yHaving.ToString() == allValues)
                    {
                        lbYHaving.Items.Add(series[i].Name);
                    }
                    chart.Series.Add(series[i]);
                }
            }

            #region Compute sum

            Series suma = new Series("Suma", ViewType.Line);
            suma.ValueScaleType    = ScaleType.Numerical;
            suma.ArgumentScaleType = ScaleType.DateTime;
            if (ddlYValueType.SelectedValue == "4")
            {
                if (rblValueDisplayMode.SelectedValue != "2")
                {
                    suma.PointOptions.ValueNumericOptions.Format = NumericFormat.Currency;
                }
                if (rblValueDisplayMode.SelectedValue == "2")
                {
                    suma.PointOptions.ValueNumericOptions.Format = NumericFormat.Percent;
                }
            }


            DataTable grid          = new DataTable();
            string    xArgumentName = ddlXValueType.SelectedItem.Text + " - dle ";

            if (ddlXValueType.SelectedValue == "Time")
            {
                xArgumentName += ddlXGroupByTime.SelectedItem.Text.ToLower();
            }
            else
            {
                xArgumentName += ddlXGroupByData.SelectedItem.Text.ToLower();
            }

            grid.Columns.Add(new DataColumn(xArgumentName));
            for (int i = 0; i < chart.Series.Count; i++)
            {
                grid.Columns.Add(new DataColumn(chart.Series[i].Name));
            }

            double sum;
            for (int j = 0; j < chart.Series[0].Points.Count; j++)
            {
                sum = 0;
                DataRow dr = grid.NewRow();
                if (ddlXValueType.SelectedValue == "Time")
                {
                    dr[0] = Convert.ToDateTime(chart.Series[0].Points[j].Argument).ToString("dd.MM.yyyy");
                }
                else
                {
                    dr[0] = chart.Series[0].Points[j].Argument;
                }
                for (int i = 0; i < chart.Series.Count; i++)
                {
                    dr[i + 1] = chart.Series[i].Points[j].Values[0];
                    sum      += chart.Series[i].Points[j].Values[0];
                }
                grid.Rows.Add(dr);
                suma.Points.Add(new SeriesPoint(chart.Series[0].Points[j].Argument, new double[] { sum }));

                // Percent
                if (rblValueDisplayMode.SelectedValue == "2")
                {
                    for (int i = 0; i < chart.Series.Count; i++)
                    {
                        if (sum == 0)
                        {
                            chart.Series[i].Points[j].Values[0] = 0;
                        }
                        else
                        {
                            chart.Series[i].Points[j].Values[0] = Math.Round(((chart.Series[i].Points[j].Values[0] / sum) * 1), 2);
                        }
                    }
                }

                if (rblValueDisplayMode.SelectedValue == "3")
                {
                    if (j > 0)
                    {
                        for (int i = 0; i < chart.Series.Count; i++)
                        {
                            chart.Series[i].Points[j].Values[0] = chart.Series[i].Points[j].Values[0] - chart.Series[i].Points[j - 1].Values[0];
                        }
                    }
                    else
                    {
                        for (int i = 0; i < chart.Series.Count; i++)
                        {
                            chart.Series[i].Points[j].Values[0] = 0;
                        }
                    }
                }
            }
            suma.View.Color = System.Drawing.Color.Black;
            series.Add(series.Count, suma);
            if (rblValueDisplayMode.SelectedValue == "1")
            {
                chart.Series.Add(series[series.Count - 1]);
            }

            if (chbShowSum.Checked && rblValueDisplayMode.SelectedValue == "1" && ddlXValueType.SelectedValue == "Time")
            {
                int toBeRemoved = chart.Series.Count - 1;
                for (int j = 0; j < toBeRemoved; j++)
                {
                    chart.Series.RemoveAt(0);
                }
            }

            // Show grid

            DataRow drSum = grid.NewRow();
            for (int i = 1; i < grid.Columns.Count; i++)
            {
                double dSum = 0;
                for (int j = 0; j < grid.Rows.Count; j++)
                {
                    dSum += Convert.ToDouble(grid.Rows[j][i]);
                }
                drSum[i] = dSum;
            }
            grid.Columns.Add(new DataColumn("Součet za svislou osu"));
            for (int i = 0; i < grid.Rows.Count; i++)
            {
                double dSum = 0;
                for (int j = 1; j < grid.Columns.Count - 1; j++)
                {
                    dSum += Convert.ToDouble(grid.Rows[i][j] == null ? "0" : grid.Rows[i][j]);
                }
                if (rblValueDisplayMode.SelectedValue == "2")
                {
                    for (int j = 1; j < grid.Columns.Count - 1; j++)
                    {
                        if (dSum == 0)
                        {
                            grid.Rows[i][j] = "0";
                        }
                        else
                        {
                            grid.Rows[i][j] = (Math.Round(Convert.ToDouble(grid.Rows[i][j] == null ? "0" : grid.Rows[i][j]) / dSum, 4) * 100).ToString() + " %";
                        }
                    }
                }
                grid.Rows[i][grid.Columns[grid.Columns.Count - 1]] = dSum;
            }
            grid.Rows.Add(drSum);
            grid.Rows[grid.Rows.Count - 1][0] = "Součet za vodorovnou osu";
            gvGrid.DataSource = grid;
            gvGrid.DataBind();

            #endregion

            #region Customize chart

            DevExpress.XtraCharts.XYDiagram xyDiagram = new XYDiagram();

            if (ddlYValueType.SelectedIndex == 0)
            {
                xyDiagram.AxisY.Title.Text = "EUR";
            }
            if (ddlYValueType.SelectedIndex == 1)
            {
                xyDiagram.AxisY.Title.Text = "Kusů";
            }

            xyDiagram.AxisY.Title.Font               = new System.Drawing.Font("Tahoma", 8);
            xyDiagram.AxisY.Label.Staggered          = false;
            xyDiagram.AxisY.Title.Visible            = true;
            xyDiagram.AxisY.Range.SideMarginsEnabled = true;
            xyDiagram.AxisY.Interlaced               = true;

            xyDiagram.AxisX.Title.Font               = new System.Drawing.Font("Tahoma", 8);
            xyDiagram.AxisX.Label.Staggered          = true;
            xyDiagram.AxisX.Range.SideMarginsEnabled = true;
            xyDiagram.AxisX.Tickmarks.MinorVisible   = false;

            xyDiagram.AxisX.Range.MinValue = from;
            xyDiagram.AxisX.Range.MaxValue = to;

            switch (interval)
            {
            case IntervalType.Day:
                xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Day;
                break;

            case IntervalType.Week:
                xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Day;
                xyDiagram.AxisX.GridSpacingAuto     = false;
                xyDiagram.AxisX.GridSpacing         = 7;
                break;

            case IntervalType.Month:
                xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Month;
                break;

            case IntervalType.Year:
                xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Year;
                break;
            }
            xyDiagram.EnableZooming = true;

            chart.Diagram = xyDiagram;
            chart.Width   = Convert.ToInt32(txtScreenWidth.Text) - 50;
            chart.Height  = 602;
            //chart.Height = Convert.ToInt32(txtScreenHeight.Text) - 230;

            #endregion

            chart.DataBind();
            pnlGraph.Controls.Add(chart);
        }
Exemple #32
0
        /// <summary>
        /// Load
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected override void Page_Load(object sender, EventArgs e)
        {
            //AjaxContentID = reportForm.ID;
            if (!string.IsNullOrEmpty(Request["ajax"]))
            {
                if (Request["ajax"].Equals("yes"))
                {
                    IsAjax = true;
                }
            }

            // AJAX - please extract this
            #region Dynamic form fields & JS settings

            if (!IsAjax)
            {
                lbFormAction.Attributes.Add("onclick", string.Format("return SendForm('{0}', 'ValidateFormAndSend', this);", reportForm.ClientID));
                lbFormAction.Attributes.Add("style", "display: none!important;");
                ddlYFilterType.Attributes.Add("onchange", "document.getElementById('" + lbFormAction.ClientID + "').click();");
                ddlXValueType.Attributes.Add("onchange", "document.getElementById('" + lbFormAction.ClientID + "').click();");
                ddlYGroupBy.Attributes.Add("onchange", "Lines(0, '" + lbYHaving.ClientID + "');document.getElementById('" + lbFormAction.ClientID + "').click();");
                //ddlYGroupBy.Attributes.Add("onchange", string.Format("document.getElementById('{0}').style.visibility='hidden';", lbYHaving.ClientID));

                StringBuilder js = new StringBuilder();
                js.AppendLine("<script language=\"javascript\">");
                js.AppendLine(string.Format("ajax_url = '{0}';", Request.Url));
                js.AppendLine("XBrowserAddHandler(window, 'load', function() {");
                js.AppendLine(string.Format("ddlLines='{2}'; InitGraphSize('{0}', '{1}');", txtScreenWidth.ClientID, txtScreenHeight.ClientID, lbYHaving.ClientID));
                js.AppendLine(" });");
                js.AppendLine("XBrowserAddHandler(window, 'resize', function() {");
                js.AppendLine(string.Format("InitGraphSize('{0}', '{1}');", txtScreenWidth.ClientID, txtScreenHeight.ClientID));
                js.AppendLine(" });");
                js.AppendLine("</script>");

                ((Literal)Master.FindControl("ltrJS")).Text = js.ToString();
            }

            #endregion

            if (!IsPostBack)
            {
                //ccDateFrom.Date = DateTime.Now.AddMonths(-1);
                //ccDateTo.Date = DateTime.Now;
                //ccDateFrom.Date = new DateTime(2010, 1, 1);
                //ccDateTo.Date = new DateTime(2010, 1, 1).AddYears(1).AddDays(-1);

                ccDateFrom.Date = new DateTime(2011, 1, 1);
                ccDateTo.Date   = new DateTime(2011, 1, 1).AddYears(1).AddDays(-1);

                Panel();
                DrawChart(null, ccDateFrom.Date, ccDateTo.Date, (IntervalType)Convert.ToInt32(ddlXGroupByTime.SelectedValue), ValueRepresentation.AbsoluteValues, true);
            }
            else
            {
                if (!string.IsNullOrEmpty(Request["ctl00$Content$ccDateFrom$deMainDate$I"]))
                {
                    ccDateFrom.Date = Convert.ToDateTime(Request["ctl00$Content$ccDateFrom$deMainDate$I"]);
                    ccDateTo.Date   = Convert.ToDateTime(Request["ctl00$Content$ccDateTo$deMainDate$I"]);
                }
            }

            List <SearchBox> sbs = new List <SearchBox>();

            #region Y Filter

            if (Session["Controls"] == null)
            {
                // Omezeni na distributora
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["CanonConnectionStringMain"].ConnectionString))
                {
                    conn.Open();

                    List <string> seriesNames = new List <string>();

                    int k = 0;
                    // Create series
                    using (SqlCommand cmd = new SqlCommand())
                    {
                        cmd.Connection = conn;

                        foreach (ListItem li in ddlYFilterType.Items)
                        {
                            if (k > 0 && li.Enabled)
                            {
                                SearchBox sb = (SearchBox)LoadControl("Controls/SearchBox.ascx");

                                sb.ID      = "lb" + li.Value;
                                sb.Display = false;
                                sb.Class   = "filter";
                                pnlYFilter.Controls.Add(sb);

                                // DataBind
                                if (!IsPostBack)
                                {
                                    if (ddlYGroupBy.SelectedValue == "ReselerGroupJoined")
                                    {
                                        cmd.CommandText = string.Format("SELECT DISTINCT IsNull(" + li.Value + ", 'NO-NAME') AS Text, " + li.Value + " AS Value FROM PivotTable ORDER BY " + li.Value, ddlYGroupBy.SelectedValue);
                                    }
                                    else
                                    {
                                        cmd.CommandText = string.Format("SELECT DISTINCT IsNull(" + li.Value + ", '(neuvedeno)') AS Text, " + li.Value + " AS Value FROM PivotTable ORDER BY " + li.Value, ddlYGroupBy.SelectedValue);
                                    }


                                    SqlDataAdapter sda = new SqlDataAdapter();
                                    sda.SelectCommand = cmd;
                                    DataTable dt = new DataTable();
                                    sda.Fill(dt);
                                    sb.AddResults(dt);
                                }

                                sbs.Add(sb);
                            }
                            k++;
                        }
                    }
                    conn.Close();
                    Session["Controls"] = sbs;
                }
            }

            else
            {
                List <SearchBox> sbs_session = (List <SearchBox>)Session["Controls"];
                foreach (SearchBox sb in sbs_session)
                {
                    pnlYFilter.Controls.Add(sb);
                }
            }

            #endregion


            if (!IsPostBack)
            {
                WebChartControl.ProcessImageRequest(this.Page);
                pnlGraph.Controls.Clear();
            }


            // Y
            foreach (Control c in pnlYFilter.Controls)
            {
                if (c is SearchBox)
                {
                    ((SearchBox)c).Display = false;
                }
            }
            if (ddlYFilterType.SelectedValue != "-")
            {
                Control c = pnlYFilter.FindControl("lb" + ddlYFilterType.SelectedValue);
                ((SearchBox)c).Display = true;
            }

            if (ddlXValueType.SelectedValue == "Time")
            {
                ddlXGroupByTime.Style.Add("display", "block");
                ddlXGroupByData.Style.Add("display", "none");
            }
            else
            {
                ddlXGroupByTime.Style.Add("display", "none");
                ddlXGroupByData.Style.Add("display", "block");
            }

            base.Page_Load(sender, e);
        }
Exemple #33
0
        public void Bind()
        {
            List<int> channels = this.Channels;
            List<int> products = this.Products;
            CanonDataContext db = Cdb.Instance;
            List<MainMonitor> list = CanonMainMonitor.GetValuesForChart(deStartDate.Date,
                                               deFinishDate.Date, channels, products);
            foreach (int productId in products)
            {
                Product product = db.Products.Where(p => p.ProductId == productId).FirstOrDefault();
                if (product == null) continue;
                WebChartControl chart = new WebChartControl();
                chart.EnableViewState = false;
                ChartTitle title = new ChartTitle();
                title.Text = string.Format(Utilities.GetResourceString("Common", "ChartHeader"),
                                           product.ProductName, deStartDate.Date.ToString("dd.MM.yyyy"),
                                           deFinishDate.Date.ToString("dd.MM.yyyy"));
                title.Font = new System.Drawing.Font("Tahoma", 10);
                chart.Titles.Add(title);
                chart.FillStyle.FillMode = FillMode.Solid;
                Dictionary<int, Series> series = new Dictionary<int, Series>();
                Series s0 = new Series("Recommended price", ViewType.Line);
                s0.ValueScaleType = ScaleType.Numerical;
                s0.ArgumentScaleType = ScaleType.DateTime;
                series.Add(0, s0);
                foreach (int channelId in channels)
                {
                    Channel channel = db.Channels.Where(c=> c.ChannelId==channelId).FirstOrDefault();
                    if (channel == null) continue;
                    Series s = new Series(channel.ChannelName, ViewType.Line);
                    s.ValueScaleType = ScaleType.Numerical;
                    s.ArgumentScaleType = ScaleType.DateTime;
                    series.Add(channelId, s);
                }
                foreach (MainMonitor mm in list)
                {
                    if (mm.ProductId != productId) continue;
                    series[mm.ChannelId].Points.Add(new SeriesPoint(mm.CalcDate, new double[] { (double)mm.ChannelPrice }));
                    series[0].Points.Add(new SeriesPoint(mm.CalcDate, new double[] { (double)mm.RecommendedPrice }));
                }
                foreach (KeyValuePair<int, Series> serie in series)
                    chart.Series.Add(serie.Value);
                //diagram
                DevExpress.XtraCharts.XYDiagram xyDiagram = new XYDiagram();
                xyDiagram.AxisY.Title.Font = new System.Drawing.Font("Tahoma", 8);
                xyDiagram.AxisY.Title.Text = "CZK";
                xyDiagram.AxisY.Label.Staggered = false;
                xyDiagram.AxisY.Title.Visible = true;
                xyDiagram.AxisY.Range.SideMarginsEnabled = true;
                xyDiagram.AxisY.Interlaced = true;

                xyDiagram.AxisX.Title.Font = new System.Drawing.Font("Tahoma", 8);
                xyDiagram.AxisX.Label.Staggered = true;
                xyDiagram.AxisX.Range.SideMarginsEnabled = true;
                xyDiagram.AxisX.Tickmarks.MinorVisible = false;
                chart.Diagram = xyDiagram;
                chart.Width = 700;
                chart.Height = 500;
                chart.DataBind();
                panelPics.Controls.Add(chart);

                this.FilesToSave.Add(this.SaveChartIntoFile(product.ProductName, chart));
            }
        }
Exemple #34
0
 public static void LoadCommonPalette(WebChartControl control)
 {
     control.PaletteWrappers.Add(new PaletteWrapper(CommonPallete));
     control.PaletteName = CommonPallete.Name;
 }
Exemple #35
0
        void DrawChart(DataTable data, DateTime from, DateTime to, IntervalType interval, ValueRepresentation representation)
        {
            List<Interval> _intervals = new List<Interval>();

            if (interval == IntervalType.Day || interval == IntervalType.Week)
            {
                // Day by day or week by week
                for (int i = 0; i < (to.Subtract(from).TotalDays / (int)interval); i++)
                {
                    //Response.Write(i + 1);
                    //Response.Write(":   ");
                    //Response.Write((i * (int)interval) + 1);
                    //Response.Write(" - ");
                    //Response.Write((i * (int)interval) + 1 + 7);
                    //Response.Write("   |   ");
                    //Response.Write(from.AddDays((i * (int)interval) + 1 - 1));
                    //Response.Write(" - ");
                    //Response.Write(from.AddDays((i * (int)interval) + 1 - 1));
                    //Response.Write("<br>");

                    _intervals.Add(new Interval(from.AddDays((i * (int)interval) + 1 - 1), from.AddDays((i * (int)interval) + (int)interval + 1 - 1)));

                }
            }
            if (interval == IntervalType.Month)
            {
                for (int i = 0; i < to.Month - from.Month + ((to.Year - from.Year) * 12) + 1; i++)
                {
                    //Response.Write(i + 1);
                    //Response.Write(":   ");
                    //Response.Write(new DateTime(from.Year, from.Month, 1).AddMonths(i));
                    //Response.Write(" - ");
                    //Response.Write(new DateTime(from.Year, from.Month, 1).AddMonths(i+1).AddDays(-1));
                    //Response.Write("<br>");

                    _intervals.Add(new Interval(new DateTime(from.Year, from.Month, 1).AddMonths(i), new DateTime(from.Year, from.Month, 1).AddMonths(i + 1).AddDays(-1)));
                }
            }
            //List<>

            // Draw chart here item by item in _intervals

            WebChartControl chart = new WebChartControl();
            chart.EnableViewState = false;
            ChartTitle title = new ChartTitle();
            title.Text = "pokus";
            title.Font = new System.Drawing.Font("Tahoma", 10);
            chart.Titles.Add(title);
            chart.FillStyle.FillMode = FillMode.Solid;
            Dictionary<int, Series> series = new Dictionary<int, Series>();

            //foreach (int channelId in channels)
            //{
            //    Channel channel = db.Channels.Where(c => c.ChannelId == channelId).FirstOrDefault();
            //    if (channel == null) continue;
            //    Series s = new Series(channel.ChannelName, ViewType.Line);
            //    s.ValueScaleType = ScaleType.Numerical;
            //    s.ArgumentScaleType = ScaleType.DateTime;
            //    series.Add(channelId, s);
            //}

            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["CanonConnectionStringMain"].ConnectionString))
            {
                conn.Open();

                List<string> seriesNames = new List<string>();

                int k = 0;
                // Create series
                using (SqlCommand cmd = new SqlCommand())
                {
                    cmd.Connection = conn;
                    cmd.CommandText = string.Format("SELECT DISTINCT {0} FROM PivotTable WHERE DateSale >= @Start AND DateSale < @End", ddlYGroupBy.SelectedValue);
                    cmd.Parameters.Add(new SqlParameter("@Start", SqlDbType.DateTime) { Value = _intervals[0].Start });
                    cmd.Parameters.Add(new SqlParameter("@End", SqlDbType.DateTime) { Value = _intervals[_intervals.Count - 1].End });

                    SqlDataReader reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        Series s = new Series(reader[0].ToString(), ViewType.Line);
                        s.ValueScaleType = ScaleType.Numerical;
                        s.ArgumentScaleType = ScaleType.DateTime;
                        seriesNames.Add(reader[0].ToString());
                        series.Add(k, s);
                        k++;
                    }
                    reader.Close();
                }

                // Draw series
                foreach (Interval i in _intervals)
                {
                    for (int j = 0; j < seriesNames.Count; j++ )
                    {
                        using (SqlCommand command = GenerateReportCommand(i.Start, i.End, seriesNames[j]))
                        {
                            command.Connection = conn;
                            SqlDataReader dr = command.ExecuteReader();

                            while (dr.Read())
                            {
                                // Here it comes
                                //Response.Write(dr[0]);
                                //Response.Write(" - ");
                                //Response.Write(dr[1]);
                                //Response.Write("<br>");
                                if (dr[0] is DBNull)
                                {
                                    series[j].Points.Add(new SeriesPoint(i.Start, new double[] { 0 }));
                                }
                                else
                                {
                                    series[j].Points.Add(new SeriesPoint(i.Start, new double[] { Convert.ToDouble(dr[0]) }));
                                }
                            }
                            dr.Close();
                        }
                    }
                }
            }

            foreach (KeyValuePair<int, Series> serie in series)
                chart.Series.Add(serie.Value);
            //diagram
            DevExpress.XtraCharts.XYDiagram xyDiagram = new XYDiagram();
            xyDiagram.AxisY.Title.Font = new System.Drawing.Font("Tahoma", 8);
            xyDiagram.AxisY.Title.Text = "CZK";
            xyDiagram.AxisY.Label.Staggered = false;
            xyDiagram.AxisY.Title.Visible = true;
            xyDiagram.AxisY.Range.SideMarginsEnabled = true;
            xyDiagram.AxisY.Interlaced = true;

            xyDiagram.AxisX.Title.Font = new System.Drawing.Font("Tahoma", 8);
            xyDiagram.AxisX.Label.Staggered = true;
            xyDiagram.AxisX.Range.SideMarginsEnabled = true;
            xyDiagram.AxisX.Tickmarks.MinorVisible = false;

            xyDiagram.AxisX.Range.MinValue = from;
            xyDiagram.AxisX.Range.MaxValue = to;

            switch (interval)
            {
                case IntervalType.Day:
                    xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Day;
                    break;
                case IntervalType.Week:
                    xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Day;
                    xyDiagram.AxisX.GridSpacingAuto = false;
                    xyDiagram.AxisX.GridSpacing = 7;
                    break;
                case IntervalType.Month:
                    xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Month;
                    break;
            }

            //xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Month;
            xyDiagram.EnableZooming = true;

            chart.Diagram = xyDiagram;
            chart.Width = 800;
            chart.Height = 500;
            chart.DataBind();
            pnlGraph.Controls.Add(chart);
        }
Exemple #36
0
        protected void Page_Load(object sender, EventArgs e)
        {
            WebChartControl chart = new WebChartControl();

            chart.EnableViewState = false;
            ChartTitle title = new ChartTitle();

            title.Text = string.Format(Utilities.GetResourceString("Common", "ChartHeader"),
                                       "Jmeno", "Start 10.12.2010", "Finish 17.12.2010");
            title.Font = new System.Drawing.Font("Tahoma", 10);
            chart.Titles.Add(title);
            chart.FillStyle.FillMode = FillMode.Solid;

            Dictionary <int, Series> series = new Dictionary <int, Series>();

            Series s0 = new Series("Recommended price", ViewType.StackedBar);

            s0.ValueScaleType    = ScaleType.Numerical;
            s0.ArgumentScaleType = ScaleType.DateTime;
            series.Add(0, s0);

            SetGraphPoint(series[0], "rnd");

            Series s1 = new Series("Actual price", ViewType.Line);

            s1.ValueScaleType    = ScaleType.Numerical;
            s1.ArgumentScaleType = ScaleType.DateTime;
            series.Add(1, s1);

            SetGraphPoint(series[1], "fib");

            //Series s2 = new Series("Predicted price", ViewType.Bubble);
            //s2.ValueScaleType = ScaleType.Numerical;
            //s2.ArgumentScaleType = ScaleType.DateTime;
            //series.Add(2, s2);

            //SetGraphPoint(series[2], "byte");

            foreach (KeyValuePair <int, Series> serie in series)
            {
                chart.Series.Add(serie.Value);
            }

            //chart.SeriesTemplate.ShowInLegend = false;
            chart.Legend.Direction           = LegendDirection.LeftToRight;
            chart.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Center;
            chart.Legend.AlignmentVertical   = LegendAlignmentVertical.Bottom;

            DevExpress.XtraCharts.XYDiagram xyDiagram = new XYDiagram();
            xyDiagram.AxisY.Title.Font               = new System.Drawing.Font("Tahoma", 8);
            xyDiagram.AxisY.Title.Text               = "CZK";
            xyDiagram.AxisY.Label.Staggered          = false;
            xyDiagram.AxisY.Title.Visible            = true;
            xyDiagram.AxisY.Range.SideMarginsEnabled = true;
            xyDiagram.AxisY.Interlaced               = true;

            xyDiagram.AxisX.Title.Font               = new System.Drawing.Font("Tahoma", 8);
            xyDiagram.AxisX.Label.Staggered          = true;
            xyDiagram.AxisX.Range.SideMarginsEnabled = true;
            xyDiagram.AxisX.Tickmarks.MinorVisible   = false;
            chart.Diagram = xyDiagram;
            chart.Width   = 700;
            chart.Height  = 500;
            //chart.DataBind();
            phMain.Controls.Add(chart);
        }
 public DXSeriesCreator(Series s, WebChartControl c)
 {
     _Series = s; _Control = c;
 }