Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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());
         }
     }
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        /// <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));
        }