/// <summary> /// For the specified dataset, build stats /// </summary> /// <param name="datasetId"></param> private void BuildDataSetStats(int datasetId) { BOL.Dataset biz = new Caisis.BOL.Dataset(); biz.Get(datasetId); string datsetsName = biz[BOL.Dataset.DatasetName].ToString(); string datasetSql = CacheManager.GetDatasetSQL(datasetId); DataSetDa da = new DataSetDa(); DataTable stats = da.GetDataSetStatsPastYear(datasetSql); // create friendly label DataColumn displayColumn = new DataColumn("Label", typeof(string)); DataColumn displayColumnTooltip = new DataColumn("LabelTooltip", typeof(string)); stats.Columns.Add(displayColumn); stats.Columns.Add(displayColumnTooltip); var series = DataSetChart.Series[0]; series.Name = string.Format("{0}", datsetsName); // get max and min values var values = from r in stats.AsEnumerable() select(int) r["TotalCount"]; if (values.Count() > 0) { double max = values.Max(); double min = values.Min(); if (max > 10) { int max10 = SmoothInterval(max, 10); int min10 = SmoothInterval(min, 10); int maxValue = max10 > max ? max10 : max10 + 10; int minValue = min10 < min ? min10 : min10 - 10; DataSetChart.ChartAreas["MainArea"].AxisY.Maximum = maxValue; DataSetChart.ChartAreas["MainArea"].AxisY.Minimum = minValue; } } // build chart foreach (DataRow row in stats.Rows) { int count = (int)row["Count"]; int month = (int)row["Month"]; int displayYear = (int)row["Year"]; string displayMonth = new DateTime(displayYear, month, 1).ToString("MMM"); //System.Globalization.DateTimeFormatInfo.CurrentInfo.GetMonthName(month); row[displayColumn] = string.Format("{0} {1}", displayMonth, displayYear); row[displayColumnTooltip] = string.Format("{0} {1} : {2} Patient(s) Added", displayMonth, displayYear, count); } series.Points.DataBind(stats.DefaultView, "Label", "TotalCount", "Tooltip=LabelTooltip, Label=TotalCount"); DataSetChart.DataBind(); }
/// <summary> /// Validate chart write access /// </summary> /// <param name="writer"></param> protected override void Render(HtmlTextWriter writer) { bool chartWriteOK = false; // test chart output, else write error message try { StringWriter tmpSW = new StringWriter(); HtmlTextWriter tmpTW = new HtmlTextWriter(tmpSW); DataSetChart.RenderControl(tmpTW); chartWriteOK = true; } catch (Exception ex) { } if (!chartWriteOK) { ChartErrorMessage.Visible = true; DataSetChart.Visible = false; } base.Render(writer); }