Пример #1
0
        /// <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();
        }
Пример #2
0
        /// <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);
        }