示例#1
0
文件: SqlQuery.cs 项目: TNOCS/csTouch
 private void AddOutputsAsLabel(BaseContent refPoi, IDataRecord dr)
 {
     foreach (var output in OutputParameters.Where(p => p.OutputType == SqlOutputType.Label))
     {
         var oldValue = refPoi.Labels.ContainsKey(output.Name) ? refPoi.Labels[output.Name] : string.Empty;
         var strings = dr[output.Name] as string[];
         if (strings != null)
         {
             refPoi.Labels[output.Name] = string.Join("\r\n", strings);
             //refPoi.Labels[output.Name] = "";
             //foreach (var str in strings)
             //    refPoi.Labels[output.Name] += str + "\r\n";
         }
         else if (dr[output.Name] == null) return;
         else
             refPoi.Labels[output.Name] = dr[output.Name].ToString();
         var name = output.Name;
         if (!string.Equals(oldValue, refPoi.Labels[output.Name]))
             Caliburn.Micro.Execute.OnUIThread(() => refPoi.TriggerLabelChanged(name));
     }
 }
示例#2
0
 /// <summary>
 /// Calculate the results using the created formula.
 /// Note that you can have up to 8 parameters.
 /// </summary>
 /// <param name="bc"></param>
 /// <param name="mathFormula"></param>
 /// <returns>The computed result.</returns>
 private double CalculateResult(BaseContent bc, object mathFormula)
 {
     var parameters = new double[inputParameters.Count];
     for (var i = 0; i < parameters.Length; i++)
     {
         var sqlInputParameter = inputParameters[i];
         switch (sqlInputParameter.Type)
         {
             case SqlParameterTypes.Label:
                 parameters[i] = bc.LabelToDouble(sqlInputParameter.LabelName);
                 break;
             case SqlParameterTypes.Sensor:
                 parameters[i] = GetSensorValue(bc, sqlInputParameter.LabelName);
                 break;
         }
     }
     var result = 0d;
     switch (parameters.Length)
     {
         case 2:
         {
             var formula = mathFormula as Func<double, double, double>;
             result = formula == null ? 0 : formula(parameters[0], parameters[1]);
             break;
         }
         case 3:
         {
             var formula = mathFormula as Func<double, double, double, double>;
             result = formula == null ? 0 : formula(parameters[0], parameters[1], parameters[2]);
             break;
         }
         case 4:
         {
             var formula = mathFormula as Func<double, double, double, double, double>;
             result = formula == null ? 0 : formula(parameters[0], parameters[1], parameters[2], parameters[3]);
             break;
         }
         case 5:
         {
             var formula = mathFormula as Func<double, double, double, double, double, double>;
             result = formula == null ? 0 : formula(parameters[0], parameters[1], parameters[2], parameters[3], parameters[4]);
             break;
         }
         case 6:
         {
             var formula = mathFormula as Func<double, double, double, double, double, double, double>;
             result = formula == null ? 0 : formula(parameters[0], parameters[1], parameters[2], parameters[3], parameters[4], parameters[5]);
             break;
         }
         case 7:
         {
             var formula = mathFormula as Func<double, double, double, double, double, double, double, double>;
             result = formula == null ? 0 : formula(parameters[0], parameters[1], parameters[2], parameters[3], parameters[4], parameters[5], parameters[6]);
             break;
         }
         case 8:
         {
             var formula = mathFormula as Func<double, double, double, double, double, double, double, double, double>;
             result = formula == null ? 0 : formula(parameters[0], parameters[1], parameters[2], parameters[3], parameters[4], parameters[5], parameters[6], parameters[7]);
             break;
         }
     }
     if (string.IsNullOrEmpty(DesiredResultLabel)) return result;
     bc.Labels[DesiredResultLabel] = result.ToString(CultureInfo.InvariantCulture);
     Caliburn.Micro.Execute.OnUIThread(() => bc.TriggerLabelChanged(DesiredResultLabel));
     return result;
 }