private BMDatabase GetSelectedDB() { BMDeviceRecordVM selected = _listDevices.SelectedItem as BMDeviceRecordVM; if (selected != null && selected.Database != null) { return(selected.Database); } return(null); }
private void UpdateOrAddBMDeviceRecordVM(BMDatabase db) { BMDeviceRecordVM dev = _devices.FirstOrDefault(d => d.DeviceAddress == db.Device.Address); if (dev == null) { dev = new BMDeviceRecordVM(db); _devices.Add(dev); } dev.Index = _devices.IndexOf(dev); dev.Update(db); }
private void UpdateChartFromSelectedDB(BMDatabase db) { if (_isInUpdate) { return; } _isInUpdate = true; DateTime startUpdateTime = DateTime.Now; this.Title = "Barometer - " + db.Device; this.Cursor = Cursors.AppStarting; db.Units.TemperatureUnits.Units = (eTemperatureUnits)_cmbTemperatureUnits.SelectedItem; db.Units.AirPressureUnits.Units = (eAirPressureUnits)_cmbAirPressureUnits.SelectedItem; double days = double.Parse(((ComboBoxItem)_cmbDays.SelectedItem).Tag.ToString()); TimeSpan daysBack = TimeSpan.FromDays(days); List <BMRecordCurrent> recordsIn = db.GetLastRecords(daysBack); List <BMRecordCurrent> recordsOut; //bool isIntervalZoom = false; //if (isIntervalZoom) //{ // if (_chkAutoZoom.IsChecked.Value) // { // int bucketSize = db.Records.Count / 1000; //1000 records after zoom // _sliderDillute.Value = Math.Ceiling(Math.Pow(bucketSize, 0.5)); // } // int zoom = (int)Math.Pow(2, _sliderDillute.Value); // _txtDilluteValue.Text = string.Format("Dillute x{0:0.0}", zoom); // recordsOut = db.DilluteByPointAndConvertUnits(recordsIn, zoom); //} //else //dillute by time { double bucketIntervalInSec = 60 * double.Parse(((ComboBoxItem)_cmbInterval.SelectedItem).Tag.ToString()); if (_chkAutoZoom.IsChecked.Value) { bucketIntervalInSec = 15; //_cmbInterval.SelectedIndex = 0; //all if (recordsIn.Count >= BMDatabase.MIN_RECORDS_TO_FILTER) { TimeSpan range = recordsIn.Last().Date - recordsIn.First().Date; bucketIntervalInSec = range.TotalSeconds / 1000; //interval in seconds to get 1000 points bucketIntervalInSec = GetClosestIntervalAndSetSelectInComboBox(bucketIntervalInSec); } } //////// // recordsOut = BMDatabase.DilluteByTime(recordsIn, bucketIntervalInSec); } BMDeviceRecordVM dev = _listDevices.SelectedItem as BMDeviceRecordVM; _chart1.UpdateChartTemperature(recordsOut, db.Units, dev.IsActive); _chart2.UpdateChartHumidity(recordsOut, db.Units, dev.IsActive); _chart3.UpdateChartAirPressure(recordsOut, db.Units, dev.IsActive); TimeSpan tsElapsed = DateTime.Now - startUpdateTime; _txtDilluteResult.Text = string.Format("Total: {0:###,###} -> {1:###,###} -> {2} ({3:0.0} ms)", db.Records.Count, recordsIn.Count, recordsOut.Count, tsElapsed.TotalMilliseconds); this.Cursor = Cursors.Arrow; _isInUpdate = false; }