public override SmartViewRule Read(SmartViewFilter filter, SmartViewField field, string value)
        {
            DateTime datetime;

            if (DateTime.TryParse(value, CultureInfo.InvariantCulture, DateTimeStyles.None, out datetime))
            {
                return(new SmartViewDateRule(filter, field, new SmartViewDateParameter(datetime)));
            }
            else
            {
                return(new SmartViewDateRule(filter, field, new SmartViewDateParameter(int.Parse(value))));
            }
        }
Exemple #2
0
        public static SmartViewEditMode GetEditMode(SmartViewFilter filter, SmartViewField field)
        {
            switch (filter)
            {
            case SmartViewFilter.Contains:
            case SmartViewFilter.BeginsWith:
            case SmartViewFilter.EndsWith:
            case SmartViewFilter.DoesNotContains:
                return(new SmartViewEditMode(SmartViewEditType.Text));

            case SmartViewFilter.Is:
            case SmartViewFilter.IsNot:
                return(GetEditModeIs(field));

            case SmartViewFilter.IsMoreThan:
            case SmartViewFilter.IsLessThan:
                return(new SmartViewEditMode(SmartViewEditType.Numeric));

            case SmartViewFilter.IsAfter:
            case SmartViewFilter.IsBefore:
                return(new SmartViewEditMode(SmartViewEditType.Date));

            case SmartViewFilter.WasInTheLast:
            case SmartViewFilter.WasNotInTheLast:
            case SmartViewFilter.IsInTheNext:
            case SmartViewFilter.IsNotInTheNext:
                return(new SmartViewEditMode(SmartViewEditType.Numeric, StringResources.SmartView_DaysPeriod));

            case SmartViewFilter.IsIn:
            case SmartViewFilter.IsNotIn:
                return(new SmartViewEditMode(SmartViewEditType.Numeric, StringResources.SmartView_Days));

            case SmartViewFilter.Was:
            case SmartViewFilter.WasNot:
                return(new SmartViewEditMode(SmartViewEditType.Numeric, StringResources.SmartView_DaysAgo));

            case SmartViewFilter.Exists:
            case SmartViewFilter.DoesNotExist:
            case SmartViewFilter.Yes:
            case SmartViewFilter.No:
            case SmartViewFilter.IsYesterday:
            case SmartViewFilter.IsToday:
            case SmartViewFilter.IsTomorrow:
                return(new SmartViewEditMode(SmartViewEditType.None));

            default:
                throw new ArgumentOutOfRangeException("filter");
            }
        }
        public SmartViewRuleValueViewModel CreateValueViewModel(SmartViewFilter filter, SmartViewField field, object value)
        {
            IEnumerable <string> values = null;

            if (field == SmartViewField.Folder)
            {
                values = this.Workbook.Folders.Select(f => f.Name);
            }
            else if (field == SmartViewField.Context)
            {
                values = this.workbook.Contexts.Select(f => f.Name);
            }
            else if (field == SmartViewField.Priority)
            {
                values = TaskPriorityConverter.Descriptions;
            }

            if (value is SmartViewDateParameter)
            {
                var dateParameter = (SmartViewDateParameter)value;
                if (dateParameter.Date != null)
                {
                    value = dateParameter.Date;
                }
                else
                {
                    value = dateParameter.Days;
                }
            }
            else if (value is TaskPriority)
            {
                value = ((TaskPriority)value).GetDescription();
            }

            var valueViewModel = new SmartViewRuleValueViewModel(SmartViewHelper.GetEditMode(filter, field).Type, values)
            {
                Value = value
            };

            return(valueViewModel);
        }
Exemple #4
0
 protected SmartViewRule(SmartViewFilter filter, SmartViewField field, T value) :
     base(filter, field, value)
 {
 }
Exemple #5
0
        public static SmartViewRule BuildRule(SmartViewFilter filter, SmartViewField field, object param)
        {
            var rule = GetSupportedRule(field);

            if (rule is SmartViewPriorityRule)
            {
                TaskPriority priority;
                if (param is TaskPriority)
                {
                    priority = (TaskPriority)param;
                }
                else
                {
                    priority = TaskPriorityConverter.FromDescription((string)param);
                }

                return(new SmartViewPriorityRule(filter, field, priority));
            }
            else if (rule is SmartViewStringRule)
            {
                return(new SmartViewStringRule(filter, field, (string)param));
            }
            else if (rule is SmartViewDateRule)
            {
                DateTime datetime = param is DateTime ? (DateTime)param : DateTime.MinValue;
                if (datetime != DateTime.MinValue)
                {
                    return(new SmartViewDateRule(filter, field, new SmartViewDateParameter(datetime)));
                }
                else
                {
                    int value = 0;
                    if (param is string)
                    {
                        string content = (string)param;
                        int.TryParse(content, out value);
                    }
                    else if (param is int)
                    {
                        value = (int)param;
                    }

                    value = Math.Max(0, value);
                    return(new SmartViewDateRule(filter, field, new SmartViewDateParameter(value)));
                }
            }
            else if (rule is SmartViewBoolRule)
            {
                bool value = false;
                if (param is bool)
                {
                    value = (bool)param;
                }

                return(new SmartViewBoolRule(filter, field, value));
            }
            else if (rule is SmartViewFolderRule)
            {
                return(new SmartViewFolderRule(filter, field, (string)param));
            }
            else if (rule is SmartViewContextRule)
            {
                string parameter = (string)param;
                if (string.IsNullOrWhiteSpace(parameter))
                {
                    parameter = "0";
                }

                return(new SmartViewContextRule(filter, field, parameter));
            }
            else if (rule is SmartViewProgressRule)
            {
                double value = 0;
                if (param is string)
                {
                    string content = (string)param;
                    double.TryParse(content, out value);
                }
                else if (param is int)
                {
                    value = (int)param;
                }
                else if (param is double)
                {
                    value = (double)param;
                }

                return(new SmartViewProgressRule(filter, field, value));
            }
            else if (rule is SmartViewTagRule)
            {
                string parameter = (string)param;
                if (string.IsNullOrWhiteSpace(parameter))
                {
                    parameter = "0";
                }

                return(new SmartViewTagRule(filter, field, parameter));
            }
            else
            {
                throw new ArgumentException();
            }
        }
Exemple #6
0
        public static T AssertRule<T>(this SmartViewHandler handler, int block, int rule, int ruleCount, SmartViewMatchType type, SmartViewField field, SmartViewFilter filter, Func<T, bool> checkRule)
            where T : SmartViewRule
        {
            SmartViewBlockRule smartViewBlockRule = handler.Blocks[block];

            Assert.AreEqual(ruleCount, smartViewBlockRule.Rules.Count);
            Assert.AreEqual(type, smartViewBlockRule.Match);            

            SmartViewRule smartViewRule = smartViewBlockRule.Rules[rule];

            Assert.AreEqual(field, smartViewRule.Field);
            Assert.AreEqual(filter, smartViewRule.Filter);

            SmartViewRule item = smartViewRule;
            Assert.IsTrue(item is T);

            Assert.IsTrue(checkRule((T) item));

            return (T) item;
        }
Exemple #7
0
 public override SmartViewRule Read(SmartViewFilter filter, SmartViewField field, string value)
 {
     return(new SmartViewBoolRule(filter, field, bool.Parse(value)));
 }
Exemple #8
0
 public SmartViewBoolRule(SmartViewFilter filter, SmartViewField field, bool value)
     : base(filter, field, value)
 {
 }
Exemple #9
0
 public override SmartViewRule Read(SmartViewFilter filter, SmartViewField field, string value)
 {
     return(new SmartViewTagRule(filter, field, value));
 }
Exemple #10
0
 public SmartViewTagRule(SmartViewFilter filter, SmartViewField field, string value)
     : base(filter, field, value)
 {
 }
 public override SmartViewRule Read(SmartViewFilter filter, SmartViewField field, string value)
 {
     return(new SmartViewProgressRule(filter, field, double.Parse(value)));
 }
 public SmartViewProgressRule(SmartViewFilter filter, SmartViewField field, double value)
     : base(filter, field, value)
 {
 }
Exemple #13
0
 public override SmartViewRule Read(SmartViewFilter filter, SmartViewField field, string value)
 {
     return(new SmartViewPriorityRule(filter, field, value.ParseAsEnum <TaskPriority>()));
 }
Exemple #14
0
 public SmartViewPriorityRule(SmartViewFilter filter, SmartViewField field, TaskPriority value)
     : base(filter, field, value)
 {
 }
Exemple #15
0
 public SmartViewDateRule(SmartViewFilter filter, SmartViewField field, SmartViewDateParameter value)
     : base(filter, field, value)
 {
 }