private void PreviewGrid_GridTapped(object sender, GridTappedEventArgs e) { try { var rowIndex = e.RowColumnIndex.RowIndex; var rowData = e.RowData; var columnIndex = e.RowColumnIndex.ColumnIndex; VmPreviewEqVar vmPreviewEqVar = rowData as VmPreviewEqVar; if (columnIndex == 1) { if (vmPreviewEqVar == null || vmPreviewEqVar.IsCalculated) { return; } //previewGrid.EndEdit(); // Finish previous edit if there was one. //previewGrid.BeginEdit(rowIndex, columnIndex); // Start new one. } } catch (Exception ex) { Logging.LogException(ex); } }
private void SetEqPreviewVariables() { try { IList<SingleValue> eqVars = _currentEquationCalc?.FindAllVariables() ?? (new List<SingleValue>()); IList<SingleValue> eqConstants = _currentEquationCalc?.FindAllConstants() ?? (new List<SingleValue>()); // ------------- SetMaxVarLength(eqVars, eqConstants); // ------------- EqPreviewVariables.Clear(); // ------------- Random rnd = new Random(); const int rndMax = 1000000; const double rndDivide = (double)(rndMax / 10); // ------------- for (int i = 0; i < eqVars.Count; i++) { var item = eqVars[i]; item.ClearAllVarVals(); bool isCalculated = false; if (i == 0) { isCalculated = true; } VmPreviewEqVar eqVar = new VmPreviewEqVar(this, item, isCalculated); EqPreviewVariables.Add(eqVar); AssignTestData(eqVar, isCalculated, item, rnd, rndMax, rndDivide); } for (int i = 0; i < eqConstants.Count; i++) { var item = eqConstants[i]; EqPreviewVariables.Add(new VmPreviewEqVar(this, item, true)); } } catch (Exception ex) { Logging.LogException(ex); throw; } }
private void AssignTestData(VmPreviewEqVar eqVar, bool isCalculated, SingleValue sngVal, Random rnd, int rndMax, double rndDivide) { if (!isCalculated && (sngVal is Variable)) { if ((_currentEquationCalc.TestValues != null) && _currentEquationCalc.TestValues.ContainsKey(sngVal.Name)) { eqVar.Value = _currentEquationCalc.TestValues[sngVal.Name]; } else { // Assign randomn values for the test calculation int rndNext = rnd.Next(rndMax); double varVal = ((double)rndNext) / rndDivide; // Going to be a Number between 0 and 10 eqVar.Value = varVal; } } eqVar.SetExpectedDimensions((_currentEquationCalc.ExpectedDimensions.ContainsKey(sngVal.Name) ? _currentEquationCalc.ExpectedDimensions[sngVal.Name] : null)); }
void UpdateCalcInput(VmPreviewEqVar wmEqVar) { try { SingleValue singleValue = wmEqVar.GetSingleValue(); KnownUOM knownUOM = wmEqVar.GetKnownUOM(); if (singleValue == null) return; if (singleValue is Constant) return; if (singleValue is Literal) return; // Check or update the calc UOM bool bUpdateCalcUom = false; if (knownUOM == null) { singleValue.CalcQuantity.AnonUOM = null; } else if (singleValue.CalcQuantity.AnonUOM == null) { bUpdateCalcUom = true; } else if (!knownUOM.Dimensions.Equals(singleValue.CalcQuantity.AnonUOM.Dimensions)) { bUpdateCalcUom = true; } if (bUpdateCalcUom) { singleValue.CalcQuantity.AnonUOM = new AnonUOM(knownUOM.Dimensions, _uOMSet); } double dbl = (wmEqVar.Value ?? double.NaN); CalcStatus calcStatus; if (double.IsNaN(dbl) || double.IsInfinity(dbl)) { calcStatus = CalcStatus.Bad; } else { calcStatus = CalcStatus.Good; } singleValue.CalcQuantity.CalcStatus = calcStatus; // Convert the input value to the calc UOM double convertedVal = dbl; if (knownUOM != null) { convertedVal = UOM.Convert(dbl, fromUOM: knownUOM, anonToUOM: singleValue.CalcQuantity.AnonUOM); } singleValue.CalcQuantity.Value = convertedVal; SetMaxUOMLength(); } catch (Exception ex) { Logging.LogException(ex); throw; } }