private UnitedSensorValue GetDoubleDataObject(List <double> values, DateTime barStartTime, DateTime barEndTime) { UnitedSensorValue result = new UnitedSensorValue(); FillCommonData(result, barStartTime); DoubleBarData barData = new DoubleBarData(); barData.LastValue = values.Any() ? GetRoundedNumber(values.Last()) : 0.0; FillNumericData(barData, values); barData.StartTime = barStartTime.ToUniversalTime(); barData.EndTime = barEndTime.ToUniversalTime(); result.Data = JsonConvert.SerializeObject(barData); return(result); }
private void FillNumericData(DoubleBarData data, List <double> values) { if (values.Any()) { values.Sort(); data.Max = GetRoundedNumber(values.Last()); data.Min = GetRoundedNumber(values.First()); data.Count = values.Count; data.Mean = GetRoundedNumber(CountMean(values)); data.Percentiles.Add(new PercentileValueDouble(GetRoundedNumber(GetPercentile(values, 0.25)), 0.25)); data.Percentiles.Add(new PercentileValueDouble(GetRoundedNumber(GetPercentile(values, 0.5)), 0.5)); data.Percentiles.Add(new PercentileValueDouble(GetRoundedNumber(GetPercentile(values, 0.75)), 0.75)); return; } data.Max = 0.0; data.Min = 0.0; data.Count = 0; data.Mean = 0.0; }