Ejemplo n.º 1
0
        /// <summary>
        /// Re-orders the pieces into Y|N|NA|A|U order.
        /// Also adjusts percentages to equal 100.
        /// </summary>
        /// <param name="r"></param>
        void SortIntoAnswerOrder(StandardSummaryOverallMultiResult r)
        {
            var shortName = r.Result1.Select(x => x.Short_Name).Distinct();

            var orderedList = new List <DataRowsPie>();

            foreach (var s in shortName)
            {
                var tempOList = new List <DataRowsPie>
                {
                    r.Result1.Where(p => p.Answer_Text == "Y" && p.Short_Name == s).FirstOrDefault(),
                    r.Result1.Where(p => p.Answer_Text == "N" && p.Short_Name == s).FirstOrDefault(),
                    r.Result1.Where(p => p.Answer_Text == "NA" && p.Short_Name == s).FirstOrDefault(),
                    r.Result1.Where(p => p.Answer_Text == "A" && p.Short_Name == s).FirstOrDefault(),
                    r.Result1.Where(p => p.Answer_Text == "U" && p.Short_Name == s).FirstOrDefault()
                };

                // adjust the percentages to equal 100% after rounding
                var cAdjusted = new BusinessLogic.Common.PercentageFixer(tempOList[0].Percent,
                                                                         tempOList[1].Percent, tempOList[2].Percent, tempOList[3].Percent, tempOList[4].Percent);

                tempOList[0].Percent = cAdjusted.Y;
                tempOList[1].Percent = cAdjusted.N;
                tempOList[2].Percent = cAdjusted.NA;
                tempOList[3].Percent = cAdjusted.A;
                tempOList[4].Percent = cAdjusted.U;

                orderedList = orderedList.Union(tempOList).ToList();
            }


            r.Result1 = orderedList;
        }
Ejemplo n.º 2
0
        private ChartData GetStandardsSummaryMultiple(CSET_Context context, int assessmentId)
        {
            ChartData myChartData = new ChartData();

            myChartData.DataRowsPie = new List <DataRowsPie>();
            myChartData.Colors      = new List <string>();


            var results = new StandardSummaryOverallMultiResult();

            context.LoadStoredProc("[dbo].[usp_getStandardsSummaryPage]")
            .WithSqlParam("assessment_id", assessmentId)
            .ExecuteStoredProc((handler) =>
            {
                results.Result1 = handler.ReadToList <DataRowsPie>().ToList();
            });
            SortIntoAnswerOrder(results);

            /**
             * foreach each standard in the list
             * create a chartdata
             * foreach record
             *  if the previous does not equal the current then create a new chartdata
             *  add the record to the chart data
             *
             */

            string previousStandard = "";


            Dictionary <string, ChartData> answers = new Dictionary <string, ChartData>();

            foreach (var data in results.Result1.OrderBy(x => x.Short_Name).ThenBy(x => x.Answer_Order))
            {
                //this only adds the labels
                if (previousStandard != data.Short_Name)
                {
                    myChartData.Labels.Add(data.Short_Name);
                    previousStandard = data.Short_Name;
                }
                ChartData chartData;

                if (!answers.TryGetValue(data.Answer_Full_Name, out chartData))
                {
                    chartData = new ChartData();

                    chartData.label           = data.Answer_Full_Name;
                    chartData.backgroundColor = answerColorDefs[data.Answer_Text];
                    myChartData.dataSets.Add(chartData);
                    answers.Add(data.Answer_Full_Name, chartData);
                }
                myChartData.DataRowsPie.Add(data);
                chartData.data.Add((double)(data.Percent ?? 0));
            }

            return(myChartData);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Re-orders the pieces into Y|N|NA|A|U order
        /// </summary>
        /// <param name="r"></param>
        void SortIntoAnswerOrder(StandardSummaryOverallMultiResult r)
        {
            var shortName = r.Result1.Select(x => x.Short_Name).Distinct();

            var orderedList = new List <DataRowsPie>();

            foreach (var s in shortName)
            {
                var tempOList = new List <DataRowsPie>
                {
                    r.Result1.Where(p => p.Answer_Text == "Y" && p.Short_Name == s).FirstOrDefault(),
                    r.Result1.Where(p => p.Answer_Text == "N" && p.Short_Name == s).FirstOrDefault(),
                    r.Result1.Where(p => p.Answer_Text == "NA" && p.Short_Name == s).FirstOrDefault(),
                    r.Result1.Where(p => p.Answer_Text == "A" && p.Short_Name == s).FirstOrDefault(),
                    r.Result1.Where(p => p.Answer_Text == "U" && p.Short_Name == s).FirstOrDefault()
                };
                orderedList = orderedList.Union(tempOList).ToList();
            }


            r.Result1 = orderedList;
        }
Ejemplo n.º 4
0
        private ChartData GetStandardsSummarySingle(CSET_Context context, int assessmentId)
        {
            ChartData myChartData = null;

            var results = new StandardSummaryOverallMultiResult();

            context.LoadStoredProc("[usp_getStandardsSummaryPage]")
            .WithSqlParam("assessment_id", assessmentId)
            .ExecuteStoredProc((handler) =>
            {
                results.Result1 = handler.ReadToList <DataRowsPie>().ToList();
            });

            if (results.Count >= 1)
            {
                SortIntoAnswerOrder(results);

                List <double>      data   = new List <double>();
                List <String>      Colors = new List <string>();
                List <string>      Labels = new List <string>();
                List <DataRowsPie> rows   = new List <DataRowsPie>();
                myChartData = new ChartData();
                Labels      = new List <string>();
                Dictionary <string, ChartData> charts = new Dictionary <string, ChartData>();
                foreach (DataRowsPie c in results.Result1)
                {
                    ChartData next;
                    if (!charts.TryGetValue(c.Answer_Full_Name, out next))
                    {
                        data = new List <double>();
                        next = new ChartData()
                        {
                            Colors      = Colors,
                            DataRowsPie = rows,
                            borderWidth = "0",
                            borderColor = "transparent",
                            label       = c.Answer_Full_Name,
                            Labels      = Labels,
                            data        = data
                        };
                        charts.Add(c.Answer_Full_Name, next);
                    }
                    else
                    {
                        data = next.data;
                        rows = next.DataRowsPie;
                    }
                    data.Add((double)(c.Percent ?? 0));
                    myChartData.data.Add((double)(c.Percent ?? 0));
                    if (!Colors.Contains(answerColorDefs[c.Answer_Text ?? "U"]))
                    {
                        Colors.Add(answerColorDefs[c.Answer_Text ?? "U"]);
                    }
                    Labels.Add(c.Answer_Full_Name);
                    rows.Add(c);
                }
                myChartData.borderWidth = "0";
                myChartData.borderColor = "transparent";
                myChartData.label       = "Standards Summary";
                myChartData.Labels      = Labels;
                myChartData.Colors      = Colors;

                myChartData.DataRowsPie = rows;
                myChartData.DataRows    = new List <DataRows>();
            }

            myChartData.dataSets.ForEach(ds =>
            {
                ds.borderWidth = "0";
                ds.borderColor = "transparent";
            });

            return(myChartData);
        }