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); }
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=\"#"); }
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; }
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(); }
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; }
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; }
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); }
/// <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); }
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; } }
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; } }
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); }
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); }
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(); }
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); }
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(); }
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; } }
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); } } } } } }
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; }
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 { } }
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); }
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); }
/// <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; }
public static void SetChartType(WebChartControl webChart, string chartTypeName) { webChart.SeriesTemplate.ChangeView((ViewType)Enum.Parse(typeof(ViewType), chartTypeName)); }
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); }
/// <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); }
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 static void LoadCommonPalette(WebChartControl control) { control.PaletteWrappers.Add(new PaletteWrapper(CommonPallete)); control.PaletteName = CommonPallete.Name; }
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); }
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; }