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); }
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()); }
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); }