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);
        }
Example #2
0
 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);
        }
Example #4
0
 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()
                ));
 }