Esempio n. 1
0
        public static Configurator <Contract, ContractRow> ConfigureFormWatcher(
            this Configurator <Contract, ContractRow> conf)
        {
            conf.Table();
            conf.Column(c => c.StartDate)
            .FilterRange(c => c.StartDate, c => c.ClientFiltering().HideFilter());
            conf.Column(c => c.Supplier)
            .FilterValue(c => c.Supplier, x => x.ClientFiltering().HideFilter());

            conf.WatchForm <WatchedFormViewModel>(w =>
            {
                w.WatchAllFields();
                w.Field(x => x.Supplier).TriggerSearchOnEvents(10, "keyup").DoNotEmbedToQuery();
                w.Field(x => x.Ratings).Delimiter(",");
                w.Field(x => x.PriceRanges).Selector("input[name='chb_Price']");
                w.Field(x => x.StartDateFrom).AutoDatePicker();
                w.Field(x => x.StartDateTo).AutoDatePicker();
                w.Field(x => x.FormTimeStamp).Constant(DateTime.Now);

                w.FilterColumn(conf, x => x.StartDate).FilterRange(x => x.StartDateFrom, x => x.StartDateTo).ClientServer(server: false);
                w.FilterColumn(conf, x => x.Supplier).FilterValue(x => x.Supplier).ClientServer(server: false);
            });



            conf.FreeOrdering(q =>
                              q.Form <WatchedFormViewModel>().Ordering == OrderingPreset.ByNames
                    ? Ordering.Ascending.ToFilterTuple()
                    : FilterTuple.None <Ordering>(),
                              x => x.Title);

            conf.FreeOrdering(q =>
                              q.Form <WatchedFormViewModel>().Ordering == OrderingPreset.ByPrices
                        ? Ordering.Descending.ToFilterTuple()
                        : FilterTuple.None <Ordering>(),
                              x => x.Price);

            conf.FreeFilter(q =>
                            q.Form <WatchedFormViewModel>().Ordering.ToFilterTuple(x => x == OrderingPreset.ByScopeRating),
                            (x, v) => x.OrderByDescending(c => c.Rating).ThenByDescending(c => c.Scope));

            conf.FreeFilter(q => q.Form <WatchedFormViewModel>().Title.TupleIfNotNull(), (q, v) => q.Where(x => x.Title.Contains(v)));

            conf.FreeFilter(
                q => q.Form <WatchedFormViewModel>().Ratings.TupleIfNotNull(x => x.Length > 0),
                (q, v) => q.Where(x => v.Contains(x.Rating))
                );

            conf.FreeFilter(q => q.Form <WatchedFormViewModel>().EndYear.TupleIfNotNull(),
                            (q, v) => v == -1 ? q.Where(c => c.EndDate == null) : q.Where(x => x.EndDate != null && x.EndDate.Value.Year == v));

            conf.FreeFilter(q => q.Form <WatchedFormViewModel>().Priorities.TupleIfNotNull(x => x.Length > 0),
                            (q, v) => q.Where(x => v.Contains(x.Priority) || x.Priority == Priority.Critical));

            conf.FreeFilter(q => q.Form <WatchedFormViewModel>().TupleIfNotNull(), FilterTax);
            conf.FreeFilter(q => q.Form <WatchedFormViewModel>().PriceRanges.TupleIfNotNull(c => c.Length > 0), FilterPrices);
            return(conf);
        }
        public static Configurator <Contract, ContractRow> ConfigureValueFilters(this Configurator <Contract, ContractRow> conf)
        {
            conf.Table();
            conf.Column(c => c.Id).DataOnly();

            // Simple server filtering
            conf.Column(c => c.Title).FilterValue(c => c.Title);

            // Server configuration in order to continue configure filter
            // in cshtml
            conf.Column(c => c.Supplier).FilterValueNoUi(c => c.Supplier);

            // Value filter overriden by filtering delegate
            conf.Column(c => c.Price).FilterValueNoUi(c => c.Price)
            .By((q, v) => q.Where(x => x.Price < v));

            // Exactly the same as above
            conf.Column(c => c.Price).FilterValueNoUiBy((q, v) => q.Where(x => x.Price < v));

            // Overriden value extractor
            conf.Column(c => c.Tax)
            .FilterValueBy((q, v) => q.Where(x => x.Tax > v))
            .Value(q =>
            {
                if (!q.Filterings.ContainsKey("Tax"))
                {
                    return(FilterTuple.None <double?>());
                }
                var f = q.Filterings["Tax"];
                if (string.IsNullOrEmpty(f))
                {
                    return(FilterTuple.None <double?>());
                }
                var d = ValueConverter.Convert <double>(f);
                if (d > 10)
                {
                    d = d / 100;
                }
                return(((double?)d).ToFilterTuple());
            });

            // Automatic datepickers demo
            conf.Column(c => c.StartDate).FilterValue(c => c.StartDate).CompareOnlyDates();
            conf.Column(c => c.EndDate).FilterValueNoUi(c => c.StartDate).CompareOnlyDates();

            return(conf);
        }
Esempio n. 3
0
        protected override Tuple <bool, TFilteringKey> DefaultExtract(Query filterArgument)
        {
            string filterValue      = null;
            bool   presentFiltering = filterArgument.Filterings.TryGetValue(ColumnName, out filterValue);

            if (string.IsNullOrEmpty(filterValue))
            {
                presentFiltering = false;
            }
            if (!presentFiltering)
            {
                return(FilterTuple.None <TFilteringKey>());
            }
            TFilteringKey key = ParseFunction(filterValue);

            return(key.ToFilterTuple());
        }
        private static Tuple <bool, RangeTuple <double?> > ExtractTaxRange(Query q)
        {
            if (!q.Filterings.ContainsKey("Tax"))
            {
                return(FilterTuple.None <RangeTuple <double?> >());
            }
            var f = q.Filterings["Tax"];

            if (string.IsNullOrEmpty(f))
            {
                return(FilterTuple.None <RangeTuple <double?> >());
            }
            var spl   = f.Split('|');
            var sFrom = spl[0];
            var sTo   = spl[1];
            var from  = string.IsNullOrEmpty(sFrom) ? (double?)null : ValueConverter.Convert <double>(sFrom);
            var to    = string.IsNullOrEmpty(sTo) ? (double?)null : ValueConverter.Convert <double>(sTo);

            if (from.HasValue && from >= 10)
            {
                from = from / 100;
            }
            if (to.HasValue && to >= 10)
            {
                to = to / 100;
            }
            var rng = new RangeTuple <double?>
            {
                From    = @from,
                HasFrom = @from.HasValue,
                To      = to,
                HasTo   = to.HasValue
            };

            return(rng.ToFilterTuple());
        }
Esempio n. 5
0
        public static Configurator <Contract, ContractRow> ConfigureMixedFilters(this Configurator <Contract, ContractRow> conf)
        {
            conf.Table();
            conf.Column(c => c.Id).DataOnly();

            // Simple server filtering
            conf.Column(c => c.Title).FilterValue(c => c.Title);

            // Server configuration in order to continue configure filter
            // in cshtml
            conf.Column(c => c.Supplier).FilterValueNoUi(c => c.Supplier);

            // Simple server filtering
            conf.Column(c => c.Price).FilterRange(c => c.Price);

            // Simple select filter
            conf.Column(c => c.Rating)
            .FilterSelect(c => c.Rating, ui => ui.SelectAny()
                          .SelectItems(new UiListItem[]
            {
                new UiListItem()
                {
                    Text = "*", Value = "1"
                },
                new UiListItem()
                {
                    Text = "**", Value = "2"
                },
                new UiListItem()
                {
                    Text = "***", Value = "3"
                },
                new UiListItem()
                {
                    Text = "****", Value = "4"
                },
                new UiListItem()
                {
                    Text = "*****", Value = "5"
                },
            })
                          .ClientFiltering() // with client filtering!
                          );

            // Select filter for enumeration with client filtering
            conf.Column(c => c.Scope)
            .FilterSelect(c => c.Scope,
                          ui => ui.SelectAny().SelectItems(EnumHelper.GetSelectList(typeof(Scope))).ClientFiltering());

            // Overriden value extractor
            conf.Column(c => c.Tax)
            .FilterValueBy((q, v) => q.Where(x => x.Tax > v))
            .Value(q =>
            {
                if (!q.Filterings.ContainsKey("Tax"))
                {
                    return(FilterTuple.None <double?>());
                }
                var f = q.Filterings["Tax"];
                if (string.IsNullOrEmpty(f))
                {
                    return(FilterTuple.None <double?>());
                }
                var d = ValueConverter.Convert <double>(f);
                if (d > 10)
                {
                    d = d / 100;
                }
                return(((double?)d).ToFilterTuple());
            });

            // Automatic datepickers demo
            conf.Column(c => c.StartDate).FilterRange(c => c.StartDate).CompareOnlyDates();

            conf.Column(c => c.EndDate).FilterValueNoUi(c => c.StartDate).CompareOnlyDates();

            return(conf);
        }