/// <summary> /// Add bindable property value /// </summary> /// <param name="inlines">Inlines to fill</param> /// <param name="tipProperty">Property</param> /// <param name="source">Source object</param> private static void _AddBindableProperty(InlineCollection inlines, TipProperty tipProperty, object source) { try { PropertyPath propertyPath = new PropertyPath(tipProperty.PrefixPath + tipProperty.Name); Binding binding = new Binding(); binding.Path = propertyPath; binding.Source = source; FrameworkElement fe = new FrameworkElement(); BindingOperations.SetBinding(fe, FrameworkElement.DataContextProperty, binding); object value = fe.DataContext; if (value != null) { string valueStr; if (value is double && tipProperty.ValueUnits.HasValue && tipProperty.DisplayUnits.HasValue) { Unit valueUnits = tipProperty.ValueUnits.Value; Unit displayUnits = tipProperty.DisplayUnits.Value; if (valueUnits != displayUnits) { value = UnitConvertor.Convert((double)value, valueUnits, displayUnits); } valueStr = UnitFormatter.Format((double)value, displayUnits); } else { // Special case for planned date if (tipProperty.Name.Equals(Order.PropertyNamePlannedDate)) { DateTime dateTime = (DateTime)value; valueStr = dateTime.ToShortDateString(); } else if (tipProperty.Name.Equals(Stop.PropertyNameStopType)) { valueStr = _GetStopTypeStr((StopType)value, (Stop)source); } else { valueStr = value.ToString(); } } if (valueStr.Length > 0) { _AddLine(tipProperty.Title, valueStr, inlines, false); } } BindingOperations.ClearBinding(fe, FrameworkElement.DataContextProperty); } catch (Exception ex) { Logger.Info(ex); } }
private string molWeightDisplayValue(double value) { var displayUnit = _molWeightDimension.DefaultUnit; var unitFormatter = new UnitFormatter(displayUnit); return(unitFormatter.Format(_molWeightDimension.BaseUnitValueToUnitValue(displayUnit, value))); }
/////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// protected override void DoValidate(double objectToValidate, object currentTarget, string key, ValidationResults validationResults) { Type type = currentTarget.GetType(); PropertyInfo property = type.GetProperty(key); UnitPropertyAttribute unitAttribute = (UnitPropertyAttribute)Attribute.GetCustomAttribute(property, typeof(UnitPropertyAttribute)); Unit displayUnits = (RegionInfo.CurrentRegion.IsMetric)? unitAttribute.DisplayUnitMetric : unitAttribute.DisplayUnitUS; Unit valueUnits = unitAttribute.ValueUnits; if ((objectToValidate < _minValue) || (_maxValue < objectToValidate)) { string format = this.MessageTemplate; double maxValue = _maxValue; if (valueUnits != displayUnits) { maxValue = UnitConvertor.Convert(maxValue, valueUnits, displayUnits); } string valueToDisplay = UnitFormatter.Format(maxValue, displayUnits); string message = string.Format(format, valueToDisplay); this.LogValidationResult(validationResults, message, currentTarget, key); } }
public void UnitFormatter_When_InputIs2Digits_Then_ResultIsInvalidDigitsException() { // arrange var formatter = new UnitFormatter(); // act // assert Assert.Throws <InvalidDigitsException>(() => formatter.Format(10)); }
public void UnitFormatter_When_InputIs1Digit_Then_ResultIsNoException() { // arrange var formatter = new UnitFormatter(); // act // assert Assert.DoesNotThrow(() => formatter.Format(9)); }
private string numericFormatter <TInput>(TInput input, double value, Func <TInput, Unit> unitRetrieverFunc) { var withDimension = input as IWithDimension; if (withDimension == null) { return(_numericFormatter.Format(value)); } if (unitRetrieverFunc == null || withDimension.Dimension == null) { return(_numericFormatter.Format(value)); } var displayUnit = unitRetrieverFunc(input); var displayValue = withDimension.Dimension.BaseUnitValueToUnitValue(displayUnit, value); return(_numericFormatter.Format(displayValue, displayUnit)); }
public void UnitFormatter_When_InputIs1_Then_ResultIsOne() { // arrange var formatter = new UnitFormatter(); // act var value = formatter.Format(1); // assert Assert.That(value, Is.EqualTo("one")); }
private string startValueDisplayFor(TStartValue startValue) { if (startValue.Formula != null) { var name = startValue.Formula.Name; var display = startValue.Formula.ToString(); return(string.Equals(name, display) ? name : $"{name} ({display})"); } var value = startValue.ConvertToDisplayUnit(startValue.StartValue); return(_unitFormatter.Format(value, startValue.DisplayUnit)); }
public SetRestartSolverInValuePointCommand(TableFormula tableFormula, ValuePoint valuePoint, bool newRestartSolverValue, IBuildingBlock buildingBlock) : base(buildingBlock) { _tableFormulaId = tableFormula.Id; _tableFormula = tableFormula; _valuePoint = valuePoint; _newRestartSolverValue = newRestartSolverValue; _oldRestartSolverValue = _valuePoint.RestartSolver; _x = _valuePoint.X; _y = _valuePoint.Y; var unitFormatter = new UnitFormatter(); CommandType = AppConstants.Commands.EditCommand; var dimension = tableFormula.XDimension; var xCoordinate = dimension.BaseUnitValueToUnitValue(tableFormula.XDisplayUnit, valuePoint.X); dimension = tableFormula.Dimension; var yCoordinate = dimension.BaseUnitValueToUnitValue(tableFormula.YDisplayUnit, valuePoint.Y); Description = AppConstants.Commands.SetRestartSolverInValuePoint(_tableFormula.Name, unitFormatter.Format(xCoordinate, tableFormula.XDisplayUnit), unitFormatter.Format(yCoordinate, tableFormula.YDisplayUnit), newRestartSolverValue, _oldRestartSolverValue, buildingBlock.Name); ObjectType = ObjectTypes.ValuePoint; }
/// <summary> /// Set Text property to textbox using correct region format. /// </summary> private void _SetTextToInnerTextBox() { if (!_inited || this.Value == null) { if (_inited) { // Clear value. _TextBox.Text = string.Empty; } return; } double value = (double)this.Value; if (_valueUnits != _displayUnits) { value = UnitConvertor.Convert(value, _valueUnits, _displayUnits); } string valueToDisplay = UnitFormatter.Format(value, _displayUnits); _TextBox.Text = valueToDisplay; }
/// <summary> /// Initialize control. /// </summary> private void _Init() { Xceed.Wpf.DataGrid.CellContentPresenter cellContentPresenter = this.VisualParent as Xceed.Wpf.DataGrid.CellContentPresenter; if (cellContentPresenter == null) { return; } Xceed.Wpf.DataGrid.DataCell dataCell = cellContentPresenter.TemplatedParent as Xceed.Wpf.DataGrid.DataCell; string columnName = dataCell.ParentColumn.FieldName; ESRI.ArcLogistics.Data.DataObject dataObject = dataCell.ParentRow.DataContext as ESRI.ArcLogistics.Data.DataObject; if (dataObject != null) { int capacityPropertyIndex = Capacities.GetCapacityPropertyIndex(columnName); if (capacityPropertyIndex != -1) { CapacityInfo capacityInfo = App.Current.Project.CapacitiesInfo[capacityPropertyIndex]; if (RegionInfo.CurrentRegion.IsMetric) { _displayUnits = capacityInfo.DisplayUnitMetric; } else { _displayUnits = capacityInfo.DisplayUnitUS; } _valueUnits = _displayUnits; } else { Type type = dataObject.GetType(); PropertyInfo property = type.GetProperty(columnName); UnitPropertyAttribute unitAttribute = (UnitPropertyAttribute)Attribute.GetCustomAttribute(property, typeof(UnitPropertyAttribute)); _displayUnits = (RegionInfo.CurrentRegion.IsMetric) ? unitAttribute.DisplayUnitMetric : unitAttribute.DisplayUnitUS; _valueUnits = unitAttribute.ValueUnits; } _TextBox.Text = UnitFormatter.Format(0.0, _displayUnits); _inited = true; _SetTextToInnerTextBox(); } else { // If this is not DataObject Break breakObject = dataCell.ParentRow.DataContext as Break; if (breakObject != null) { // If this is Break. Get it`s type and initiate control in a proper way. Type type = breakObject.GetType(); PropertyInfo property = type.GetProperty(columnName); if (property != null) { Attribute attr = Attribute.GetCustomAttribute(property, typeof(UnitPropertyAttribute)); UnitPropertyAttribute unitAttribute = (UnitPropertyAttribute)attr; _displayUnits = (RegionInfo.CurrentRegion.IsMetric) ? unitAttribute.DisplayUnitMetric : unitAttribute.DisplayUnitUS; _valueUnits = unitAttribute.ValueUnits; } _TextBox.Text = UnitFormatter.Format(0.0, _displayUnits); _inited = true; _SetTextToInnerTextBox(); } } }