public static LocalValue <decimal> BuildDecimalWithPrecision <WidgetT>( IReadOnlyValueView <WidgetT, string> view, decimal defaultValue, Func <int> getPrecision, params Validate <decimal>[] validators) { var result = new LocalValue <decimal>(defaultValue); view.BindReadOnlyAndInitialize(result, x => I18n.Localize(x, DecimalFormatExtensions.GetWithPrecision(getPrecision()))); validators.ForEach(y => result.AddValidatorAndRevalidate(y)); return(result); }
public ClassFieldRemoteMutator <decimal, decimal, ContT> BuildDecimalWithPrecision( Expression <Func <ContT, decimal> > getField, InputView view, Func <int> getPrecision, params Validate <decimal>[] validators) { view.RaisesChangedOnKeyPressed = false; return(Build( getField, view, x => I18n.Localize(x, DecimalFormatExtensions.GetWithPrecision(getPrecision())), x => I18n.ParseDecimalWithoutLoss(x, getPrecision()), validators)); }
public static LocalValue <decimal> BuildDecimalWithPrecision( InputView view, decimal defaultValue, Func <int> getPrecision, params Validate <decimal>[] validators) { var result = new LocalValue <decimal>(defaultValue); view.RaisesChangedOnKeyPressed = false; view.BindReadWriteAndInitialize(result, x => I18n.Localize(x, DecimalFormatExtensions.GetWithPrecision(getPrecision())), x => I18n.ParseDecimalWithoutLoss(x, getPrecision())); validators.ForEach(y => result.AddValidatorAndRevalidate(y)); return(result); }
public static ValueContainingUnboundColumnBuilder <RecordT, DecimalWithPrecision> WithValueLocalized <RecordT>( this BaseUnboundColumnBuilder <RecordT> self, Func <RecordT, DecimalWithPrecision> valueProvider) where RecordT : new() { return(self.WithValue( valueProvider, x => x == null ? "" : I18n.Localize( x.Value, DecimalFormatExtensions.GetWithPrecision(x.Precision)), (val, exp) => { if (val == null) { exp.Export(""); } else { exp.Export(val.RoundedValue); } })); }
public static LocalValue <decimal?> BuildNullableDecimalWithPrecision( InputView view, Func <int> getPrecision, params Validate <decimal?>[] validators) { view.RaisesChangedOnKeyPressed = false; var result = new LocalValue <decimal?>(null); view.BindReadWriteAndInitialize(result, x => !x.HasValue ? "" : I18n.Localize(x.Value, DecimalFormatExtensions.GetWithPrecision(getPrecision())), x => string.IsNullOrEmpty(x) ? (decimal?)null : I18n.ParseDecimalWithoutLoss(x, getPrecision())); validators.ForEach(y => result.AddValidatorAndRevalidate(y)); return(result); }
public static Tuple <HTMLElement, DataGridColumnControllerResult <DecimalWithPrecision> > ForDecimalWithPrecision( ITransformationMediator listener, params GrouperDefOrAggregatorDef <DecimalWithPrecision>[] additionalGrouperOrAggr) { return(Create( listener, new [] { new FilterDef <DecimalWithPrecision>( I18n.Translate("is empty"), (filterParam, x) => DecimalWithPrecision.ComparatorImpl(x, null) == 0), new FilterDef <DecimalWithPrecision>( I18n.Translate("is not empty"), (filterParam, x) => DecimalWithPrecision.ComparatorImpl(x, null) != 0), new FilterDef <DecimalWithPrecision>( I18n.Translate("equals"), (filterParam, x) => DecimalWithPrecision.ComparatorImpl(x, filterParam) == 0), new FilterDef <DecimalWithPrecision>( I18n.Translate("doesn't equal"), (filterParam, x) => DecimalWithPrecision.ComparatorImpl(x, filterParam) != 0), new FilterDef <DecimalWithPrecision>( I18n.Translate("is bigger than"), (filterParam, x) => DecimalWithPrecision.ComparatorImpl(x, filterParam) > 0), new FilterDef <DecimalWithPrecision>( I18n.Translate("is smaller than"), (filterParam, x) => DecimalWithPrecision.ComparatorImpl(x, filterParam) < 0) }, new List <AggregatorDef <DecimalWithPrecision> > { new AggregatorDef <DecimalWithPrecision>(SumAggregatorLabel, x => { var lst = x.Where(y => y != null).ToList(); var p = lst.Any() ? lst[0].Precision : 0; return I18n.Localize( lst.Aggregate(0m, (y, z) => y + z.RoundedValue), DecimalFormatExtensions.GetWithPrecision(p)); }), new AggregatorDef <DecimalWithPrecision>(CountAggregatorLabel, x => I18n.Localize(x.Count())), new AggregatorDef <DecimalWithPrecision>(I18n.Translate("Average"), x => { var lst = x.Where(y => y != null).ToList(); var p = lst.Any() ? lst[0].Precision : 0; return I18n.Localize( lst.Aggregate(0m, (y, z) => y + z.RoundedValue) / lst.Count <= 0 ? 1 : lst.Count, DecimalFormatExtensions.GetWithPrecision(p)); }), }.Concat(additionalGrouperOrAggr.Where(x => x.Aggregator != null).Select(x => x.Aggregator)), new List <GrouperDef <DecimalWithPrecision> > { new GrouperDef <DecimalWithPrecision>(GroupEverythingAsOneGroupLabel, RecordGroupingUtil.GroupAllRecordsAsOneGroup), new GrouperDef <DecimalWithPrecision>(UniqueValueGroupLabel, x => RecordGroupingUtil.GroupRecordsByKey(x, y => y, y => y.KeyData.ToString())) }.Concat(additionalGrouperOrAggr.Where(x => x.Grouper != null).Select(x => x.Grouper)), x => { var val = new InputView("", InputView.TypeText); val.PlaceHolder = I18n.Translate("Filter value"); val.BindReadWriteAndInitialize(x, y => y == null ? "" : I18n.Localize( y.Value, DecimalFormatExtensions.GetWithPrecision(y.Precision)), y => { if (string.IsNullOrWhiteSpace(y)) { return null; } var v = I18n.ParseDecimal(y); var s = I18n.Localize(v, DecimalFormat.WithFiveDecPlaces); var p = s.Length - s.IndexOf('.') - 1; return new DecimalWithPrecision(v, p); }); return val; }, null, null, new DecimalWithPrecisionDefaultComparer() )); }