protected override void OnEnable() { base.OnEnable(); multiDimPresenter_prop = serializedObject.FindProperty("_multiDimPresenter"); dataItemMesh_prop = serializedObject.FindProperty("_dataItemMesh"); useMinItem_prop = serializedObject.FindProperty("_useMinIndex"); _stackedBar = (StackedBar)serializedObject.targetObject; }
private void AdjustResidual(StackedBar stackedBar, double residualVal) { var residualStack = stackedBar.Stacks.Where(s => String.Compare(s.Legend, CAConstants.RESIDUAL_SLICE) == 0).FirstOrDefault(); if (residualStack == null) { stackedBar.Stacks.Add(new Ordinate { Legend = CAConstants.RESIDUAL_SLICE, Value = Math.Round(residualVal, CAConstants.CHART_LABEL_PRECISION) }); } else { residualStack.Value += Math.Round(residualVal, CAConstants.CHART_LABEL_PRECISION); } }
public ActionResult BudgetMonthBarStacked() { var bs = new List <StackedBar>(); foreach (var c in db.Categories.Include("Expenses").Where(c => c.Occurance == "Monthly")) { var expenses = c.Expenses.Where(e => e.DateRecorded.Year == DateTime.Today.Year).Where(e => e.DateRecorded.Month == DateTime.Today.Month).Select(e => e.Cost).Sum(); var budgetLeft = c.BudgetCost - expenses; var newStackedBar = new StackedBar(); newStackedBar.xkey = c.Type.ToString(); // newStackedBar.xkey = "a[href^='http://stackoverflow.com']"; newStackedBar.ykey1 = budgetLeft.ToString(); newStackedBar.ykey2 = expenses.ToString(); bs.Add(newStackedBar); } return(Json(bs, JsonRequestBehavior.AllowGet)); }
public override void Populate(List <SentenceFragment> dataSlices) { string monthYear = dataSlices[0].RecognizedEntities. Where(re => re.Entity is Time). Select(re => re.Value.ToFormattedDateTimeStr("MMM yyyy")). FirstOrDefault(); //bool isPanTumor = ChartAuditRuleEngine.GetTumors(sentenceFragments[0]).Count == 0; var measureRE = dataSlices[0].RecognizedEntities.Where(re => re.IsMeasure).FirstOrDefault(); string measureName = measureRE.Entity.DomainName; string measureField = measureRE.Entity.FieldName; string measureRecognizedName = measureRE.RecognizedName; if (String.IsNullOrEmpty(measureField)) { return; } HashSet <string> tumorNames = new HashSet <string>(); var stackedBarMap = new Dictionary <string, StackedBar>(); HashSet <string> legends = new HashSet <string>(); int count = 0; foreach (var row in dataSlices) { count++; string tumorName = TumorNames[count - 1]; if (!tumorNames.Contains(tumorName)) { tumorNames.Add(tumorName); } StackedBar stackedBar = null; if (!stackedBarMap.ContainsKey(tumorName)) { stackedBarMap.Add(tumorName, new StackedBar { Abscissa = tumorName, Stacks = new List <Ordinate>() }); } stackedBar = stackedBarMap[tumorName]; var measureVal = row.RecognizedEntities. Where(re => re.Entity is Measure). Select(re => re.Value.SafeToDouble()). FirstOrDefault(); stackedBar.Stacks.Add(new Ordinate { Legend = String.Empty, Value = measureVal }); } StackedBars = stackedBarMap.Values.ToList(); //the following code is added because of the limitation of the front end chart library to identify distinct legends from stacked bars correctly foreach (var legend in legends) { var stackedBarsMissingThisLegend = StackedBars.Where(sb => !sb.Stacks.Select(sbs => sbs.Legend).Contains(legend)); foreach (var stackedBar in stackedBarsMissingThisLegend) { stackedBar.Stacks.Add(new Ordinate { Legend = legend, Value = 0 }); } } string captionStr = IsPanTumor ? CAConstants.PAN_TUMOR : (legends.Count == 1 ? legends.First() : String.Join(", ", tumorNames)); Caption = String.Format("{0} {1} in {2}", captionStr, measureRecognizedName, monthYear); StackedBars.ForEach(sb => sb.Stacks = sb.Stacks.OrderBy(sbs => sbs.Legend).ToList()); Arrange(StackedBars); BuildNarrative(monthYear, measureName); }