private void Delete_OnClick(object sender, RoutedEventArgs e) { var viewModel = (RecordManagerViewModel)DataContext; var SelectedItem = RecordsListBox.SelectedItem as RecordViewModel; if (SelectedItem != null) { var db = CrystalClearDB.GetInstance(); if (db == null) { viewModel.ShowMessageCommand.Execute("Something went wrong. Please try it again."); return; } var record = SelectedItem.ToRecord(); int rowAffected = db.DeleteRecord(record); if (rowAffected == 1) { viewModel.Records.Remove(SelectedItem); } else { viewModel.ShowMessageCommand.Execute("Something went wrong. Please try it again."); } } else { viewModel.ShowMessageCommand.Execute("Please select one in order to delete."); } }
protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); // Initialize the database CrystalClearDB.InitializeDatabase(); //Task.Run(() => this.TestEngine()); }
private void ExtendedClosingEventHandler(object sender, DialogClosingEventArgs eventArgs) { if ((bool)eventArgs.Parameter == false) { this.SelectedReservoir = null; return; } ReservoirAddDialog dialog = eventArgs.Session.Content as ReservoirAddDialog; var newName = dialog.TextReservoirName.Text; if (!string.IsNullOrWhiteSpace(newName)) { Console.WriteLine("New Reservoir Name: " + newName); if (this.SelectedReservoir != null) { this.SelectedReservoir.Name = newName; var db = CrystalClearDB.GetInstance(); if (db == null) { return; } int rowAffected = db.UpdateReservoir(new Reservoir { Id = SelectedReservoir.Id, Name = SelectedReservoir.Name }); if (rowAffected == 1) { var reservoirs = db.GetAllReservoirs(); var newReservoirModels = new ObservableCollection <ReservoirViewModel>(); foreach (var reservoir in reservoirs) { newReservoirModels.Add(new ReservoirViewModel(reservoir)); } Reservoirs = newReservoirModels; this.SelectedReservoir = null; } } else { var db = CrystalClearDB.GetInstance(); if (db == null) { return; } int newId = db.AddReservoir(newName); if (newId != -1) { var newReservoir = db.GetLastReservoir(); Reservoirs.Add(new ReservoirViewModel(newReservoir)); } } } }
private void Save_OnClick(object sender, RoutedEventArgs e) { var db = CrystalClearDB.GetInstance(); if (db == null) { return; } var viewModel = DataContext as AnalyzerViewModel; var newRecord = new Record(); newRecord.Temperature = viewModel.Temperature.Temperature; newRecord.PH = double.Parse(viewModel.PH); newRecord.DO = double.Parse(viewModel.DO); newRecord.BOD5 = double.Parse(viewModel.BOD5); newRecord.COD = double.Parse(viewModel.COD); newRecord.NH4N = double.Parse(viewModel.NH4N); newRecord.NO2N = double.Parse(viewModel.NO2N); newRecord.NO3N = double.Parse(viewModel.NO3N); newRecord.SS = double.Parse(viewModel.SS); newRecord.CL = double.Parse(viewModel.CL); newRecord.CB = double.Parse(viewModel.CB); newRecord.Overall = double.Parse(viewModel.OverallIndex); newRecord.Level = int.Parse(viewModel.Level); newRecord.ReservoirId = viewModel.Reservoir.Id; newRecord.DateTime = viewModel.Date.ToString("yyyy-MM-dd"); if (viewModel.ID == -1) { // New Record // Save int newId = db.AddRecord(newRecord); if (newId != -1) { var lastRecord = db.GetLastRecord(); viewModel.ID = lastRecord.Id; SaveButton.Content = "Update"; } else { viewModel.ShowMessageCommand.Execute("Something went wrong. Please try it again."); } } else { // Existing Record // Update newRecord.Id = viewModel.ID; int rowAffected = db.UpdateRecord(newRecord); if (rowAffected != 1) { viewModel.ShowMessageCommand.Execute("Something went wrong. Please try it again."); } } }
private void Save_OnClick(object sender, RoutedEventArgs e) { var db = CrystalClearDB.GetInstance(); if (db == null) { return; } var viewModel = DataContext as RecordManagerViewModel; if (viewModel.ID == -1) { // Shouldn't reach here. viewModel.ShowMessageCommand.Execute("Something odd happened. Please try it again."); return; } var updatedRecord = new Record(); updatedRecord.Id = viewModel.ID; updatedRecord.Temperature = viewModel.Temperature.Temperature; updatedRecord.PH = double.Parse(viewModel.PH); updatedRecord.DO = double.Parse(viewModel.DO); updatedRecord.BOD5 = double.Parse(viewModel.BOD5); updatedRecord.COD = double.Parse(viewModel.COD); updatedRecord.NH4N = double.Parse(viewModel.NH4N); updatedRecord.NO2N = double.Parse(viewModel.NO2N); updatedRecord.NO3N = double.Parse(viewModel.NO3N); updatedRecord.SS = double.Parse(viewModel.SS); updatedRecord.CL = double.Parse(viewModel.CL); updatedRecord.CB = double.Parse(viewModel.CB); updatedRecord.Overall = double.Parse(viewModel.OverallIndex); updatedRecord.Level = int.Parse(viewModel.Level); updatedRecord.ReservoirId = viewModel.Reservoir.Id; updatedRecord.DateTime = viewModel.Date.ToString("yyyy-MM-dd"); int rowAffected = db.UpdateRecord(updatedRecord); if (rowAffected != 1) { viewModel.ShowMessageCommand.Execute("Something went wrong. Please try it again."); } else { viewModel.ShowMessageCommand.Execute("It's been updated successfully."); // Refresh Data viewModel.ID = -1; AnalyzerPanel.Visibility = Visibility.Collapsed; SaveButton.Visibility = Visibility.Collapsed; ReservoirComboBox_SelectionChanged(null, null); } }
private void ReservoirComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { var SelectedItem = ReservoirComboBox.SelectedItem as Reservoir; if (SelectedItem == null) { return; } if (SelectedItem.Id == -1) { // All var db = CrystalClearDB.GetInstance(); if (db == null) { return; } var viewModel = (RecordManagerViewModel)DataContext; var allRecords = db.GetAllRecords(); var recordModels = new ObservableCollection <RecordViewModel>(); foreach (var record in allRecords) { recordModels.Add(new RecordViewModel(record)); } viewModel.Records = recordModels; viewModel.BackupRecords = recordModels.ToList <RecordViewModel>(); } else { // by Reservoir var db = CrystalClearDB.GetInstance(); if (db == null) { return; } var viewModel = (RecordManagerViewModel)DataContext; var allRecords = db.GetRecordsForReservoir(SelectedItem.Id); var recordModels = new ObservableCollection <RecordViewModel>(); foreach (var record in allRecords) { recordModels.Add(new RecordViewModel(record)); } viewModel.Records = recordModels; viewModel.BackupRecords = recordModels.ToList <RecordViewModel>(); } }
public static SimpleIndices CalculateSimpleIndices(double Temperature, double Cph, double Cdo, double Cbod5, double Ccod, double Cnh4n, double Cno2n, double Cno3n, double Css, double Ccl, double Ccb) { var db = CrystalClearDB.GetInstance(); if (db == null) { return(null); } var simpleIndices = new SimpleIndices(); // Calculate simple indices // PH var avgEnvironmentalStandard = db.GetAverageEnvironmentalStandard(); var SphAvg = (avgEnvironmentalStandard.PH2 + avgEnvironmentalStandard.PH1) / 2.0; var Sph = avgEnvironmentalStandard.PH1; simpleIndices.Iph = (Cph - SphAvg) / (Sph - SphAvg); // DO var oxygenDO = db.GetOxygenDOForTemperature(Temperature); var Sdo = avgEnvironmentalStandard.DO; simpleIndices.Ido = (oxygenDO.DO - Cdo) / (oxygenDO.DO - Sdo); // BOD5 simpleIndices.Ibod5 = Cbod5 / avgEnvironmentalStandard.BOD5; // COD simpleIndices.Icod = Ccod / avgEnvironmentalStandard.COD; // NH4-N simpleIndices.Inh4n = Cnh4n / avgEnvironmentalStandard.NH4N; // NO2-N simpleIndices.Ino2n = Cno2n / avgEnvironmentalStandard.NO2N; // NO3-N simpleIndices.Ino3n = Cno3n / avgEnvironmentalStandard.NO3N; // SS simpleIndices.Iss = Css / avgEnvironmentalStandard.SS; // CL simpleIndices.Icl = Ccl / avgEnvironmentalStandard.CL; // CB simpleIndices.Icb = Ccb / avgEnvironmentalStandard.CB; return(simpleIndices); }
public static int GetLevel(double Temperature, double OverallIndex) { var db = CrystalClearDB.GetInstance(); if (db == null) { return(0); } var weightIndices = db.GetWeightIndicesForTemperature(Temperature); var i = 0; while (i <= 4 && weightIndices[i].Overall < OverallIndex) { i++; } return(i + 1); }
private void DeleteReservoirs(object o) { var db = CrystalClearDB.GetInstance(); if (db == null) { return; } if (this.SelectedReservoirs != null && this.SelectedReservoirs.Count > 0) { foreach (var model in this.SelectedReservoirs) { db.DeleteReservoir(new Reservoir { Id = model.Id, Name = model.Name }); var index = Reservoirs.IndexOf(model); Reservoirs.RemoveAt(index); } this.SelectedReservoirs = null; } }
private void ReservoirManager_Loaded(object sender, RoutedEventArgs e) { Console.WriteLine("Reservoir Manager loaded"); var db = CrystalClearDB.GetInstance(); if (db == null) { return; } var reservoirs = db.GetAllReservoirs(); var reservoirModels = new ObservableCollection <ReservoirViewModel>(); foreach (var reservoir in reservoirs) { var reservoirModel = new ReservoirViewModel(reservoir); reservoirModels.Add(reservoirModel); } var viewModel = (ReservoirManagerViewModel)DataContext; viewModel.Reservoirs = reservoirModels; }
private void ExtendedClosingEventHandler(object sender, DialogClosingEventArgs eventArgs) { if ((bool)eventArgs.Parameter == false) { return; } ReservoirAddDialog dialog = eventArgs.Session.Content as ReservoirAddDialog; var newName = dialog.TextReservoirName.Text; if (!string.IsNullOrWhiteSpace(newName)) { Console.WriteLine("New Reservoir Name: " + newName); var db = CrystalClearDB.GetInstance(); if (db == null) { return; } int newId = db.AddReservoir(newName); if (newId != -1) { var reservoirs = db.GetAllReservoirs(); var newReservoirModels = new ObservableCollection <Reservoir>(); foreach (var reservoir in reservoirs) { newReservoirModels.Add(reservoir); } Reservoirs = newReservoirModels; ReservoirAdded(""); } } }
private void RecordManager_Loaded(object sender, RoutedEventArgs e) { Console.WriteLine("RecordManager loaded"); var db = CrystalClearDB.GetInstance(); if (db == null) { return; } var viewModel = (RecordManagerViewModel)DataContext; var allRecords = db.GetAllRecords(); var recordModels = new ObservableCollection <RecordViewModel>(); foreach (var record in allRecords) { recordModels.Add(new RecordViewModel(record)); } viewModel.Records = recordModels; var reservoirs = db.GetAllReservoirs(); var reservoirModels = new ObservableCollection <Reservoir>(reservoirs); viewModel.Reservoirs = reservoirModels; viewModel.Reservoir = null; var reservoirAll = new Reservoir { Id = -1, Name = "All", Deleted = false }; reservoirs.Insert(0, reservoirAll); viewModel.ReservoirsForView = new ObservableCollection <Reservoir>(reservoirs); viewModel.ReservoirForView = reservoirAll; viewModel.ViewMethod = viewModel.ViewMethods[0]; viewModel.Date = DateTime.Today; viewModel.Reservoir = null; viewModel.Temperature = null; viewModel.ID = -1; viewModel.PH = ""; viewModel.DO = ""; viewModel.BOD5 = ""; viewModel.COD = ""; viewModel.NH4N = ""; viewModel.NO2N = ""; viewModel.NO3N = ""; viewModel.SS = ""; viewModel.CL = ""; viewModel.CB = ""; viewModel.OverallIndex = "0.00000"; viewModel.Level = "0"; viewModel.Explanation = ""; AnalyzerPanel.Visibility = Visibility.Collapsed; SaveButton.Visibility = Visibility.Collapsed; }
private void Helper_Loaded(object sender, RoutedEventArgs e) { Console.WriteLine("Helper loaded"); var db = CrystalClearDB.GetInstance(); if (db == null) { return; } var viewModel = (HelperViewModel)DataContext; var standards = db.GetEnvironmentalStandards(); var environmentalStandards = new ObservableCollection <EnvironmentalStandardViewModel>(); foreach (var standard in standards) { environmentalStandards.Add(new EnvironmentalStandardViewModel { Level = standard.Level.ToString("D"), PH = standard.PH1.ToString("F") + "~" + standard.PH2.ToString("F"), DO = standard.DO.ToString("F"), BOD5 = standard.BOD5.ToString("F"), COD = standard.COD.ToString("F"), NH4N = standard.NH4N.ToString("F"), NO2N = standard.NO2N.ToString("F"), NO3N = standard.NO3N.ToString("F"), SS = standard.SS.ToString("F"), CL = standard.CL.ToString("F"), CB = standard.CB.ToString("F") }); } viewModel.EnvironmentalStandards = environmentalStandards; var solubilities = db.GetOxygenSolubilities(); var dos = db.GetOxygenDOs(); var oxygenSolubilities = new ObservableCollection <OxygenSolubilityViewModel>(); for (int i = 0; i < 10; i++) { var solubility1 = solubilities[i]; var solubility2 = solubilities[i + 11]; var solubility3 = solubilities[i + 21]; oxygenSolubilities.Add(new OxygenSolubilityViewModel { Temperature1 = solubility1.Temperature.ToString("F0"), DO1 = solubility1.DO.ToString("F2"), Temperature2 = solubility2.Temperature.ToString("F0"), DO2 = solubility2.DO.ToString("F2"), Temperature3 = solubility3.Temperature.ToString("F0"), DO3 = solubility3.DO.ToString("F2") }); } var solubility = solubilities[10]; oxygenSolubilities.Add(new OxygenSolubilityViewModel { Temperature1 = solubility.Temperature.ToString("F0"), DO1 = solubility.DO.ToString("F2"), Temperature2 = "", DO2 = "", Temperature3 = "", DO3 = "" }); oxygenSolubilities.Add(new OxygenSolubilityViewModel { Temperature1 = "0~10°C", DO1 = "14.000", Temperature2 = "11~20°C", DO2 = "10.000", Temperature3 = "21~30°C", DO3 = "8.292" }); viewModel.OxygenSolubilities = oxygenSolubilities; var individualIndicesFor10Celsius = db.GetIndividualIndicesFor10Celsius(); var iIfor10 = new ObservableCollection <BaseIndex>(individualIndicesFor10Celsius); viewModel.IndividualIndicesFor10Celsius = iIfor10; var individualIndicesFor20Celsius = db.GetIndividualIndicesFor20Celsius(); var iIfor20 = new ObservableCollection <BaseIndex>(individualIndicesFor20Celsius); viewModel.IndividualIndicesFor20Celsius = iIfor20; var individualIndicesFor30Celsius = db.GetIndividualIndicesFor30Celsius(); var iIfor30 = new ObservableCollection <BaseIndex>(individualIndicesFor30Celsius); viewModel.IndividualIndicesFor30Celsius = iIfor30; var weightCoefficientsFor10Celsius = db.GetWeightCoefficientsFor10Celsius(); var wCfor10 = new ObservableCollection <BaseIndex>(weightCoefficientsFor10Celsius); viewModel.WeightCoefficientsFor10Celsius = wCfor10; var weightCoefficientsFor20Celsius = db.GetWeightCoefficientsFor20Celsius(); var wCfor20 = new ObservableCollection <BaseIndex>(weightCoefficientsFor20Celsius); viewModel.WeightCoefficientsFor20Celsius = wCfor20; var weightCoefficientsFor30Celsius = db.GetWeightCoefficientsFor30Celsius(); var wCfor30 = new ObservableCollection <BaseIndex>(weightCoefficientsFor30Celsius); viewModel.WeightCoefficientsFor30Celsius = wCfor30; var weightIndicesFor10Celsius = db.GetWeightIndicesFor10Celsius(); var wIfor10 = new ObservableCollection <BaseIndex>(weightIndicesFor10Celsius); viewModel.WeightIndicesFor10Celsius = wIfor10; var weightIndicesFor20Celsius = db.GetWeightIndicesFor20Celsius(); var wIfor20 = new ObservableCollection <BaseIndex>(weightIndicesFor20Celsius); viewModel.WeightIndicesFor20Celsius = wIfor20; var weightIndicesFor30Celsius = db.GetWeightIndicesFor30Celsius(); var wIfor30 = new ObservableCollection <BaseIndex>(weightIndicesFor30Celsius); viewModel.WeightIndicesFor30Celsius = wIfor30; }
public static WeightCoefficients GetWeightCoefficients(double Temperature, SimpleIndices CalculatedIndices) { var db = CrystalClearDB.GetInstance(); if (db == null) { return(null); } var wks = new WeightCoefficients(); var individualIndices = db.GetIndividualIndicesForTemperature(Temperature); var weightCoefficients = db.GetWeightCoefficientsForTemperature(Temperature); // Get individual Weight Coefficient based on the Individual Indices, for calculated simple indices // PH var i = 2; // index number, for Level 3 var Iph = System.Math.Round(CalculatedIndices.Iph, 5, MidpointRounding.AwayFromZero); while (0 <= i && i <= 4) { if (Iph <= individualIndices[i].PH) { if (i != 0) { if (individualIndices[i - 1].PH < Iph) { // Found a relevant Level break; } i--; } else { // reached to Level 1 // Found break; } } else { if (i != 4) { if (Iph < individualIndices[i + 1].PH) { // Found a relevant Level i += 1; break; } i++; } else { // reached to Level 5 // Found break; } } } wks.PH = weightCoefficients[i].PH; // DO i = 2; // index number, for Level 3 var Ido = System.Math.Round(CalculatedIndices.Ido, 5, MidpointRounding.AwayFromZero); while (0 <= i && i <= 4) { if (Ido <= individualIndices[i].DO) { if (i != 0) { if (individualIndices[i - 1].DO < Ido) { // Found a relevant Level break; } i--; } else { // reached to Level 1 // Found break; } } else { if (i != 4) { if (Ido < individualIndices[i + 1].DO) { // Found a relevant Level i += 1; break; } i++; } else { // reached to Level 5 // Found break; } } } wks.DO = weightCoefficients[i].DO; // BOD5 i = 2; // index number, for Level 3 var Ibod5 = System.Math.Round(CalculatedIndices.Ibod5, 5, MidpointRounding.AwayFromZero); while (0 <= i && i <= 4) { if (Ibod5 <= individualIndices[i].BOD5) { if (i != 0) { if (individualIndices[i - 1].BOD5 < Ibod5) { // Found a relevant Level break; } i--; } else { // reached to Level 1 // Found break; } } else { if (i != 4) { if (Ibod5 < individualIndices[i + 1].BOD5) { // Found a relevant Level i += 1; break; } i++; } else { // reached to Level 5 // Found break; } } } wks.BOD5 = weightCoefficients[i].BOD5; // COD i = 2; // index number, for Level 3 var Icod = System.Math.Round(CalculatedIndices.Icod, 5, MidpointRounding.AwayFromZero); while (0 <= i && i <= 4) { if (Icod <= individualIndices[i].COD) { if (i != 0) { if (individualIndices[i - 1].COD < Icod) { // Found a relevant Level break; } i--; } else { // reached to Level 1 // Found break; } } else { if (i != 4) { if (Icod < individualIndices[i + 1].COD) { // Found a relevant Level i += 1; break; } i++; } else { // reached to Level 5 // Found break; } } } wks.COD = weightCoefficients[i].COD; // NH4-N i = 2; // index number, for Level 3 var Inh4n = System.Math.Round(CalculatedIndices.Inh4n, 5, MidpointRounding.AwayFromZero); while (0 <= i && i <= 4) { if (Inh4n <= individualIndices[i].NH4N) { if (i != 0) { if (individualIndices[i - 1].NH4N < Inh4n) { // Found a relevant Level break; } i--; } else { // reached to Level 1 // Found break; } } else { if (i != 4) { if (Inh4n < individualIndices[i + 1].NH4N) { // Found a relevant Level i += 1; break; } i++; } else { // reached to Level 5 // Found break; } } } wks.NH4N = weightCoefficients[i].NH4N; // NO2-N i = 2; // index number, for Level 3 var Ino2n = System.Math.Round(CalculatedIndices.Ino2n, 5, MidpointRounding.AwayFromZero); while (0 <= i && i <= 4) { if (Ino2n <= individualIndices[i].NO2N) { if (i != 0) { if (individualIndices[i - 1].NO2N < Ino2n) { // Found a relevant Level break; } i--; } else { // reached to Level 1 // Found break; } } else { if (i != 4) { if (Ino2n < individualIndices[i + 1].NO2N) { // Found a relevant Level i += 1; break; } i++; } else { // reached to Level 5 // Found break; } } } wks.NO2N = weightCoefficients[i].NO2N; // NO3-N i = 2; // index number, for Level 3 var Ino3n = System.Math.Round(CalculatedIndices.Ino3n, 5, MidpointRounding.AwayFromZero); while (0 <= i && i <= 4) { if (Ino2n <= individualIndices[i].NO3N) { if (i != 0) { if (individualIndices[i - 1].NO3N < Ino3n) { // Found a relevant Level break; } i--; } else { // reached to Level 1 // Found break; } } else { if (i != 4) { if (Ino3n < individualIndices[i + 1].NO3N) { // Found a relevant Level i += 1; break; } i++; } else { // reached to Level 5 // Found break; } } } wks.NO3N = weightCoefficients[i].NO3N; // SS i = 2; // index number, for Level 3 var Iss = System.Math.Round(CalculatedIndices.Iss, 5, MidpointRounding.AwayFromZero); while (0 <= i && i <= 4) { if (Iss <= individualIndices[i].SS) { if (i != 0) { if (individualIndices[i - 1].SS < Iss) { // Found a relevant Level break; } i--; } else { // reached to Level 1 // Found break; } } else { if (i != 4) { if (Iss < individualIndices[i + 1].SS) { // Found a relevant Level i += 1; break; } i++; } else { // reached to Level 5 // Found break; } } } wks.SS = weightCoefficients[i].SS; // CL i = 2; // index number, for Level 3 var Icl = System.Math.Round(CalculatedIndices.Icl, 5, MidpointRounding.AwayFromZero); while (0 <= i && i <= 4) { if (Icl <= individualIndices[i].CL) { if (i != 0) { if (individualIndices[i - 1].CL < Icl) { // Found a relevant Level break; } i--; } else { // reached to Level 1 // Found break; } } else { if (i != 4) { if (Icl < individualIndices[i + 1].CL) { // Found a relevant Level i += 1; break; } i++; } else { // reached to Level 5 // Found break; } } } wks.CL = weightCoefficients[i].CL; // CB i = 2; // index number, for Level 3 var Icb = System.Math.Round(CalculatedIndices.Icb, 5, MidpointRounding.AwayFromZero); while (0 <= i) { if (Icb <= individualIndices[i].CB) { if (i != 0) { if (individualIndices[i - 1].CB < Icb) { // Found a relevant Level break; } i--; } else { // reached to Level 1 // Found break; } } else { // For CB, comparison is only relevant till Level 3. // FOR CB above Level 3, always choose Level 4, which is close to Level 3. i += 1; break; } } wks.CB = weightCoefficients[i].CB; return(wks); }
private void Analyzer_Loaded(object sender, RoutedEventArgs e) { Console.WriteLine("Analyzer loaded"); var db = CrystalClearDB.GetInstance(); if (db == null) { return; } var reservoirs = db.GetAllReservoirs(); var reservoirModels = new ObservableCollection <Reservoir>(); foreach (var reservoir in reservoirs) { reservoirModels.Add(reservoir); } var viewModel = (AnalyzerViewModel)DataContext; viewModel.Reservoirs = reservoirModels; if (viewModel.Reservoirs.Count == 0) { // No reservoir // User should add one ReservoirComboBox.Visibility = Visibility.Collapsed; AddButton.Visibility = Visibility.Visible; AnalyzeButton.Visibility = Visibility.Collapsed; viewModel.ShowMessageCommand.Execute("Please add a reservoir to start the analysis"); } else { // There are some ReservoirComboBox.Visibility = Visibility.Visible; AddButton.Visibility = Visibility.Collapsed; AnalyzeButton.Visibility = Visibility.Visible; } viewModel.Date = DateTime.Today; viewModel.Reservoir = null; viewModel.Temperature = null; viewModel.ID = -1; viewModel.PH = ""; viewModel.DO = ""; viewModel.BOD5 = ""; viewModel.COD = ""; viewModel.NH4N = ""; viewModel.NO2N = ""; viewModel.NO3N = ""; viewModel.SS = ""; viewModel.CL = ""; viewModel.CB = ""; viewModel.OverallIndex = "0.00000"; viewModel.Level = "0"; viewModel.Explanation = ""; ((AnalyzerViewModel)DataContext).ReservoirAdded += ReservoirAddedHandler; }