示例#1
0
        private FilterGroup GetDateTimeAxisFilter(DbContext db, ReportArg arg, object dbValue)
        {
            FilterGroup filterGroup = new FilterGroup();

            if (new string[4]
            {
                "year",
                "month",
                "day",
                "week"
            }.Contains(arg.axisFieldType))
            {
                RangeDateValue rangeDateValue = dbValue as RangeDateValue;
                filterGroup.rules.Add(new FilterRule
                {
                    field = arg.axisField,
                    value = rangeDateValue.Min,
                    op    = "greaterthanorequal"
                });
                filterGroup.rules.Add(new FilterRule
                {
                    field = arg.axisField,
                    value = rangeDateValue.Max,
                    op    = "lessthanorequal"
                });
            }
            else if (arg.axisFieldType == "ref")
            {
                Field field = (from a in reportModelConfig.fields
                               where a.name == arg.axisField
                               select a).FirstOrDefault();
                if (field.type == "many2one")
                {
                    filterGroup.rules.Add(new FilterRule
                    {
                        field = field.dbName,
                        value = dbValue,
                        op    = "equal"
                    });
                }
            }
            else
            {
                filterGroup.rules.Add(new FilterRule
                {
                    field = arg.axisField,
                    value = dbValue,
                    op    = "equal"
                });
            }
            return(filterGroup);
        }
示例#2
0
        private List <RangeDateItem> GetRangeDates(DbContext dbContext_3, string string_7, string string_8, string string_9)
        {
            RangeDateValue       rangeDateValue = GetRangeDateValue(dbContext_3, string_7, string_8);
            DateTime             t    = rangeDateValue.Min;
            DateTime             t2   = rangeDateValue.Max;
            List <RangeDateItem> list = new List <RangeDateItem>();

            if (string_9 == "year")
            {
                t  = new DateTime(t.Year, 1, 1, 0, 0, 0);
                t2 = new DateTime(t2.Year, 1, 1, 0, 0, 0).AddYears(1).AddSeconds(-1.0);
                DateTime dateTime = new DateTime(t.Year, 1, 1, 0, 0, 0);
                while (dateTime >= t && dateTime <= t2)
                {
                    list.Add(new RangeDateItem
                    {
                        name  = dateTime.ToString("yyyy"),
                        value = new RangeDateValue(dateTime, dateTime.AddYears(1).AddSeconds(-1.0))
                    });
                    dateTime = dateTime.AddYears(1);
                }
            }
            if (string_9 == "month")
            {
                t  = new DateTime(t.Year, t.Month, 1, 0, 0, 0);
                t2 = new DateTime(t2.Year, t2.Month, 1, 0, 0, 0).AddMonths(1).AddSeconds(-1.0);
                DateTime dateTime = new DateTime(t.Year, t.Month, 1, 0, 0, 0);
                while (dateTime >= t && dateTime <= t2)
                {
                    list.Add(new RangeDateItem
                    {
                        name  = dateTime.ToString("yyyy-MM"),
                        value = new RangeDateValue(dateTime, dateTime.AddMonths(1).AddSeconds(-1.0))
                    });
                    dateTime = dateTime.AddMonths(1);
                }
            }
            if (string_9 == "day")
            {
                t  = new DateTime(t.Year, t.Month, t.Day, 0, 0, 0);
                t2 = new DateTime(t2.Year, t2.Month, t2.Day, 0, 0, 0).AddDays(1.0).AddSeconds(-1.0);
                DateTime dateTime = new DateTime(t.Year, t.Month, t.Day, 0, 0, 0);
                while (dateTime >= t && dateTime <= t2)
                {
                    list.Add(new RangeDateItem
                    {
                        name  = dateTime.ToString("yyyy-MM-dd"),
                        value = new RangeDateValue(dateTime, dateTime.AddDays(1.0).AddSeconds(-1.0))
                    });
                    dateTime = dateTime.AddDays(1.0);
                }
            }
            if (string_9 == "week")
            {
                t  = new DateTime(t.Year, t.Month, t.Day, 0, 0, 0).AddDays((double)(-1 * (int)t.DayOfWeek));
                t2 = new DateTime(t2.Year, t2.Month, t2.Day, 0, 0, 0).AddDays((double)(6 - t2.DayOfWeek));
                DateTime dateTime = new DateTime(t.Year, t.Month, t.Day, 0, 0, 0);
                while (dateTime >= t && dateTime <= t2)
                {
                    list.Add(new RangeDateItem
                    {
                        name  = dateTime.ToString("yyyy-MM-dd") + "至" + dateTime.AddDays(7.0).AddSeconds(-1.0).ToString("yyyy-MM-dd"),
                        value = new RangeDateValue(dateTime, dateTime.AddDays(7.0).AddSeconds(-1.0))
                    });
                    dateTime = dateTime.AddDays(7.0);
                }
            }
            return(list);
        }
示例#3
0
        private FilterGroup GetDateTimeLegendFilter(DbContext db, ReportArg arg, object xValue, object yValue)
        {
            FilterGroup filterGroup = new FilterGroup();

            if (new string[4]
            {
                "year",
                "month",
                "day",
                "week"
            }.Contains(arg.legendFieldType))
            {
                RangeDateValue rangeDateValue = xValue as RangeDateValue;
                filterGroup.rules.Add(new FilterRule
                {
                    field = arg.legendField,
                    value = rangeDateValue.Min,
                    op    = "greaterthanorequal"
                });
                filterGroup.rules.Add(new FilterRule
                {
                    field = arg.legendField,
                    value = rangeDateValue.Max,
                    op    = "lessthanorequal"
                });
            }
            else if (arg.legendFieldType == "ref")
            {
                Field field = (from a in reportModelConfig.fields
                               where a.name == arg.legendField
                               select a).FirstOrDefault();
                if (field.type == "many2one")
                {
                    filterGroup.rules.Add(new FilterRule
                    {
                        field = field.dbName,
                        value = xValue,
                        op    = "equal"
                    });
                }
            }
            else
            {
                filterGroup.rules.Add(new FilterRule
                {
                    field = arg.legendField,
                    value = xValue,
                    op    = "equal"
                });
            }
            if (arg.dataFilter != null && (arg.dataFilter.rules.Any() || arg.dataFilter.groups.Any()))
            {
                filterGroup.groups.Add(arg.dataFilter);
            }
            if (!string.IsNullOrEmpty(arg.axisField) && arg.legendType != "pie")
            {
                FilterGroup filterGroup2 = GetDateTimeAxisFilter(db, arg, yValue);
                foreach (FilterRule rule in filterGroup2.rules)
                {
                    filterGroup.rules.Add(rule);
                }
            }
            return(filterGroup);
        }