internal double?GetActualValue(ICalcEvaluator evaluator, int baseRow, int baseColumn, int index, IActualValue actual) { IconCriterion criterion = this.iconCriteria[index]; if (criterion != null) { switch (criterion.IconValueType) { case IconValueType.Number: return(this.CalculateValue(evaluator, baseRow, baseColumn, criterion.Value)); case IconValueType.Percent: return(this.CalculatePercent(evaluator, baseRow, baseColumn, criterion.Value, actual)); case IconValueType.Percentile: return(this.CalculatePercentile(evaluator, baseRow, baseColumn, criterion.Value)); case IconValueType.Formula: return(this.CalculateValue(evaluator, baseRow, baseColumn, criterion.Value)); } } return(null); }
void AddIconSetRuleCondition(IconSetRule iconSetRule) { if (iconSetRule != null) { List <DummyIconSetValue> list = new List <DummyIconSetValue>(); for (int i = 0; i < iconSetRule.IconCriteria.Length; i++) { IconCriterion criterion = iconSetRule.IconCriteria[i]; if (((criterion != null) && (criterion.IconValueType == IconValueType.Formula)) && !string.IsNullOrEmpty((string)(criterion.Value as string))) { list.Add(new DummyIconSetValue(iconSetRule, i)); } else if (((criterion != null) && !string.IsNullOrEmpty((string)(criterion.Value as string))) && (criterion.Value as string).StartsWith("=")) { list.Add(new DummyIconSetValue(iconSetRule, i)); } } if (list.Count > 0) { this.iconValues.Add(iconSetRule, list); this.AddConditionsByRange(iconSetRule.Ranges, list.ToArray()); } } }
internal override bool IsConditionEvaluateToTrue(ICalcEvaluator evaluator, int baseRow, int baseColumn, IActualValue actual) { if (base.condition == null) { return(false); } object obj2 = actual.GetValue(baseRow, baseColumn); if (obj2 == null) { return(false); } double num = 0.0; if (!FormatConverter.IsNumber(obj2)) { return(false); } double?nullable = FormatConverter.TryDouble(obj2, false); if (!nullable.HasValue) { return(false); } num = nullable.Value; int num2 = 0; if ((this.iconSetType >= Dt.Cells.Data.IconSetType.ThreeArrowsColored) && (this.iconSetType <= Dt.Cells.Data.IconSetType.ThreeSymbolsUncircled)) { num2 = 3; } else if ((this.iconSetType >= Dt.Cells.Data.IconSetType.FourArrowsColored) && (this.iconSetType <= Dt.Cells.Data.IconSetType.FourTrafficLights)) { num2 = 4; } else if ((this.iconSetType >= Dt.Cells.Data.IconSetType.FiveArrowsColored) && (this.iconSetType <= Dt.Cells.Data.IconSetType.FiveBoxes)) { num2 = 5; } if (this.iconCriteria != null) { double maxValue = double.MaxValue; for (int i = num2 - 1; i > 0; i--) { if (i >= (this.iconCriteria.Length + 1)) { return(true); } IconCriterion criterion = this.iconCriteria[i - 1]; if ((criterion == null) || (criterion.Value == null)) { return(true); } double?nullable2 = this.GetActualValue(evaluator, baseRow, baseColumn, i - 1, actual); if (!nullable2.HasValue) { return(true); } if (criterion.IsGreaterThanOrEqualTo) { if ((num < maxValue) && (num >= nullable2.Value)) { return(true); } } else if ((num < maxValue) && (num > nullable2.Value)) { return(true); } } } return(true); }
/// <summary> /// Returns a specified value of the rule if the cell satisfies the condition. /// </summary> /// <param name="evaluator">The evaluator.</param> /// <param name="baseRow">The row index.</param> /// <param name="baseColumn">The column index.</param> /// <param name="actual">The current object.</param> /// <returns>Returns an icon object.</returns> public override object Evaluate(ICalcEvaluator evaluator, int baseRow, int baseColumn, IActualValue actual) { object obj2 = actual.GetValue(baseRow, baseColumn); if (obj2 == null) { return(null); } double num = 0.0; if (!FormatConverter.IsNumber(obj2)) { return(null); } double?nullable = FormatConverter.TryDouble(obj2, false); if (!nullable.HasValue) { return(null); } num = nullable.Value; int num2 = 0; if ((this.iconSetType >= Dt.Cells.Data.IconSetType.ThreeArrowsColored) && (this.iconSetType <= Dt.Cells.Data.IconSetType.ThreeSymbolsUncircled)) { num2 = 3; } else if ((this.iconSetType >= Dt.Cells.Data.IconSetType.FourArrowsColored) && (this.iconSetType <= Dt.Cells.Data.IconSetType.FourTrafficLights)) { num2 = 4; } else if ((this.iconSetType >= Dt.Cells.Data.IconSetType.FiveArrowsColored) && (this.iconSetType <= Dt.Cells.Data.IconSetType.FiveBoxes)) { num2 = 5; } if (this.iconCriteria == null) { return((int)0); } double maxValue = double.MaxValue; for (int i = num2 - 1; i > 0; i--) { if (i >= (this.iconCriteria.Length + 1)) { return(new IconDrawingObject(baseRow, baseColumn, this.iconSetType, this.modifyIconIndex(0), this.showIconOnly)); } IconCriterion criterion = this.iconCriteria[i - 1]; if ((criterion == null) || (criterion.Value == null)) { return(new IconDrawingObject(baseRow, baseColumn, this.iconSetType, this.modifyIconIndex(0), this.showIconOnly)); } double?nullable2 = this.GetActualValue(evaluator, baseRow, baseColumn, i - 1, actual); if (!nullable2.HasValue) { return(new IconDrawingObject(baseRow, baseColumn, this.iconSetType, this.modifyIconIndex(0), this.showIconOnly)); } if (criterion.IsGreaterThanOrEqualTo) { if ((num < maxValue) && (num >= nullable2.Value)) { return(new IconDrawingObject(baseRow, baseColumn, this.iconSetType, this.modifyIconIndex(i), this.showIconOnly)); } } else if ((num < maxValue) && (num > nullable2.Value)) { return(new IconDrawingObject(baseRow, baseColumn, this.iconSetType, this.modifyIconIndex(i), this.showIconOnly)); } } return(new IconDrawingObject(baseRow, baseColumn, this.iconSetType, this.modifyIconIndex(0), this.showIconOnly)); }