private void AddBtn_Click(object sender, EventArgs e) { IDDIsotopicsAdd ia = new IDDIsotopicsAdd(); if (ia.ShowDialog() == DialogResult.OK) { if (string.IsNullOrEmpty(ia.ID)) { return; } // check for Id existence if (!NC.App.DB.CompositeIsotopics.Has(ia.ID)) { CompositeIsotopics iso = new CompositeIsotopics(m_comp_iso); // copy current values to new iso iso.id = string.Copy(ia.ID); modified = iso.modified = true; NC.App.DB.CompositeIsotopics.Revert(iso); // revert originating selection on in-memory list back to DB values NC.App.DB.CompositeIsotopics.GetList().Add(iso); // do not add to database until the OK or the Save set button is selected applog.TraceInformation("New composite isotopics " + iso.id + " (not saved to database)"); IsotopicsIdComboBox.Items.Add(iso.id); IsotopicsIdComboBox.SelectedItem = iso.id; // force m_iso assignment in event handler calcQ = true; } else { MessageBox.Show("'" + ia.ID + "' is already in use", "I .... uuuh oh"); } } }
void LoadEntry(CompositeIsotopics comp_iso) { DataGridViewRowCollection rows = this.IsoDataGrid.Rows; rows.Clear(); string[] summ = new string[9]; summ[0] = comp_iso.pu_mass.ToString("F3"); summ[1] = comp_iso.pu238.ToString("F6"); summ[2] = comp_iso.pu239.ToString("F6"); summ[3] = comp_iso.pu240.ToString("F6"); summ[4] = comp_iso.pu241.ToString("F6"); summ[5] = comp_iso.pu242.ToString("F6"); summ[6] = comp_iso.pu_date.ToString("yyyy-MM-dd"); summ[7] = comp_iso.am241.ToString("F6"); summ[8] = comp_iso.am_date.ToString("yyyy-MM-dd"); rows.Add(summ); foreach (CompositeIsotopic ci in comp_iso.isotopicComponents) { string[] sub = new string[9]; sub[0] = ci.pu_mass.ToString("F3"); sub[1] = ci.pu238.ToString("F6"); sub[2] = ci.pu239.ToString("F6"); sub[3] = ci.pu240.ToString("F6"); sub[4] = ci.pu241.ToString("F6"); sub[5] = ci.pu242.ToString("F6"); sub[6] = ci.pu_date.ToString("yyyy-MM-dd"); sub[7] = ci.am241.ToString("F6"); sub[8] = ci.am_date.ToString("yyyy-MM-dd"); rows.Add(sub); } }
private void CompositeIsotopicsBtn_Click(object sender, EventArgs e) { IDDCompositeIsotopics f = new IDDCompositeIsotopics(ah.ap.comp_isotopics_id); DialogResult dlg = f.ShowDialog(); if (dlg != DialogResult.OK) { return; } ah.RefreshParams(); CompositeIsotopics selected = f.GetSelectedIsotopics; if (ah.ap.isotopics_id != selected.id) /* They changed the isotopics id. Isotopics already saved to DB in IDDIsotopics*/ { ah.ap.isotopics_id = selected.id; ah.ap.comp_isotopics_id = selected.id; // NEXT: do new item id stuff right after this } else { // isotopic settings will be loaded from DB prior to running measurement // change the isotopics setting on the current item id state ItemId Cur = NC.App.DB.ItemIds.Get(ah.ap.item_id); if (Cur == null) // blank or unspecified somehow { return; } Cur.IsoApply(NC.App.DB.Isotopics.Get(ah.ap.isotopics_id)); // apply the iso dates to the item NC.App.DB.ItemIds.Set(Cur); NC.App.DB.ItemIds.Refresh(); // save and update the list of items } }
private void SelButton_Click(object sender, EventArgs e) { IsotopicsList il = new IsotopicsList(iso: false); if (il.ShowDialog() == DialogResult.OK) { m_comp_iso = il.GetSingleSelectedCompIsotopics(); IsotopicsIdComboBox.SelectedItem = m_comp_iso.id; } }
private void RefreshIdComboWithDefault() { if (NC.App.DB.CompositeIsotopics.GetList() != null && NC.App.DB.CompositeIsotopics.GetList().Count > 0) { comp_iso = NC.App.DB.CompositeIsotopics.GetList().FirstOrDefault(isot => String.Compare(isot.id, "default", true) == 0); // "Default" is the first selected item } else { comp_iso = new CompositeIsotopics(); } RefreshIsoIDCombo(IsotopicsIdComboBox); IsotopicsIdComboBox.SelectedItem = comp_iso.id; // forces event handler (below) to load dialog fields }
void CalculateAndPersist(CompositeIsotopics comp_iso) { if (!GutCheck(calc: true)) { return; } Isotopics newiso = null; uint retcode = comp_iso.CombinedCalculation(out newiso, NC.App.AppContext.INCCParity, applog); if (retcode == 36783) { MessageBox.Show("Unable to update isotopics, sum of Pu isotopes must be greater than zero"); } else if (retcode == 36784) { MessageBox.Show("Sum of masses = 0.\r\nNew isotopics not calculated and stored."); } else { newiso.modified = comp_iso.modified = true; if (!NC.App.DB.CompositeIsotopics.Has(comp_iso.id)) { NC.App.DB.CompositeIsotopics.GetList().Add(comp_iso); // add to in-memory list } List <CompositeIsotopics> list = NC.App.DB.CompositeIsotopics.GetMatch(i => i.modified); foreach (CompositeIsotopics iso in list) { long pk = NC.App.DB.CompositeIsotopics.Set(iso); // add to database applog.TraceInformation((pk >= 0 ? "Saved " : "Unable to save ") + iso.id + " composite isotopics"); } comp_iso.modified = false; LoadEntry(comp_iso); string msg = string.Format( "Composite Isotopics id:\t{0}\n\nIsotopics Source Code:\t{1}\n\nMass\t\t{2,8:F3}\nPu238\t\t{3,8:F6}\nPu239\t\t{4,8:F6}\nPu240\t\t{5,8:F6}\nPu241\t\t{6,8:F6}\nPu242\t\t{7,8:F6}\nPu Date\t\t{8}\nAm241\t\t{9,8:F6}\nAm Date\t\t{10}\n\nIsotopics are updated to the reference date.", newiso.id, newiso.source_code, comp_iso.MassSum, newiso.pu238, newiso.pu239, newiso.pu240, newiso.pu241, newiso.pu242, newiso.pu_date, newiso.am241, newiso.am_date); DialogResult res = MessageBox.Show(msg, "Accept Results", MessageBoxButtons.OKCancel); if (res == DialogResult.OK) { if (!NC.App.DB.Isotopics.Has(newiso.id)) { NC.App.DB.Isotopics.GetList().Add(newiso); long pk = NC.App.DB.Isotopics.Set(newiso); // add to database applog.TraceInformation((pk >= 0 ? "Saved " : "Unable to save ") + newiso.id + " isotopics"); if (pk >= 0) { NC.App.DB.Isotopics.Refresh(); } } else { NC.App.DB.Isotopics.Replace(newiso); applog.TraceInformation("Replaced " + newiso.id + " isotopics"); } calcQ = false; } else { MessageBox.Show("New isotopics not stored."); } } }
object CompositeIsotopics(string[] sa, bool headtest) { var res = new object(); CompositeIsotopics cis = null; CompositeIsotopic ci = null; Array ev = Enum.GetValues(typeof(CompIsCol)); if (headtest) // full iso line { if (sa.Length != ev.Length) return null; cis = new CompositeIsotopics(); res = cis; } else // comp iso subentry line { if (sa.Length != ev.Length - 2) return null; ci = new CompositeIsotopic(); res = ci; } float pumass = 0; Isotopics iso = new Isotopics(); string s = string.Empty; double v = 0, err = 0; foreach (CompIsCol op in ev) { try { if (headtest) s = sa[(int)op]; else { if (op > CompIsCol.IsoSourceCode) s = sa[(int)op - 2]; else s = string.Empty; } switch (op) { case CompIsCol.IsoSourceCode: if (headtest) { Enum.TryParse(s, out cis.source_code); iso.source_code = cis.source_code; } break; case CompIsCol.IsoId: if (headtest) { cis.id = string.Copy(s); iso.id = cis.id; } break; case CompIsCol.PuMass: //if (!headtest) // comp iso lines start with mass //{ float sv = 0f; float.TryParse(s, out sv); pumass = sv; //} break; case CompIsCol.AmDate: INCC5FileImportUtils.GenFromYYYYMMDD(s, ref iso.am_date); break; case CompIsCol.PuDate: INCC5FileImportUtils.GenFromYYYYMMDD(s, ref iso.pu_date); break; case CompIsCol.Pu238: double.TryParse(s, out v); iso.SetVal(Isotope.pu238, v); break; case CompIsCol.Pu239: double.TryParse(s, out v); iso.SetVal(Isotope.pu239, v); break; case CompIsCol.Pu240: double.TryParse(s, out v); iso.SetVal(Isotope.pu240, v); break; case CompIsCol.Pu241: double.TryParse(s, out v); iso.SetVal(Isotope.pu241, v); break; case CompIsCol.Pu242: double.TryParse(s, out v); iso.SetVal(Isotope.pu242, v); break; case CompIsCol.Am241: double.TryParse(s, out v); iso.SetVal(Isotope.am241, v); break; case CompIsCol.Pu238err: double.TryParse(s, out err); iso.SetError(Isotope.pu238, err); break; case CompIsCol.Pu239err: double.TryParse(s, out err); iso.SetError(Isotope.pu239, err); break; case CompIsCol.Pu240err: double.TryParse(s, out err); iso.SetError(Isotope.pu240, err); break; case CompIsCol.Pu241err: double.TryParse(s, out err); iso.SetError(Isotope.pu241, err); break; case CompIsCol.Pu242err: double.TryParse(s, out err); iso.SetError(Isotope.pu242, err); break; case CompIsCol.Am241err: double.TryParse(s, out err); iso.SetError(Isotope.am241, err); break; } } catch (Exception ex) { Results.mlogger.TraceEvent(LogLevels.Warning, 34100, s + " fails as composite isotopics summary element " + op.ToString() + " " + ex.Message); return null; } } // copy values onto the relevant object if (cis != null) cis.Copy(iso, pumass); if (ci != null) ci.Copy(iso, pumass); return res; }
void Init() { IsoIsotopics = new List<Isotopics>(); CompIsoIsotopics = null; mlogger = NC.App.Loggers.Logger(LMLoggers.AppSection.Control); Output = new CSVFile(); Output.Log = mlogger; }
private void AddBtn_Click(object sender, EventArgs e) { IDDIsotopicsAdd ia = new IDDIsotopicsAdd(); if (ia.ShowDialog() == DialogResult.OK) { if (string.IsNullOrEmpty(ia.ID)) return; // check for Id existence if (!NC.App.DB.CompositeIsotopics.Has(ia.ID)) { CompositeIsotopics iso = new CompositeIsotopics(m_comp_iso); // copy current values to new iso iso.id = string.Copy(ia.ID); modified = iso.modified = true; NC.App.DB.CompositeIsotopics.Revert(iso); // revert originating selection on in-memory list back to DB values NC.App.DB.CompositeIsotopics.GetList().Add(iso); // do not add to database until the OK or the Save set button is selected applog.TraceInformation("New composite isotopics " + iso.id + " (not saved to database)"); IsotopicsIdComboBox.Items.Add(iso.id); IsotopicsIdComboBox.SelectedItem = iso.id; // force m_iso assignment in event handler calcQ = true; } else MessageBox.Show("'" + ia.ID + "' is already in use", "I .... uuuh oh"); } }
CompositeIsotopics GenCompIso(List<string> sa) { CompositeIsotopics i = new CompositeIsotopics(); string s = string.Empty; double v = 0, err = 0; foreach (ItemCol op in System.Enum.GetValues(typeof(ItemCol))) { try { s = sa[(int)op]; switch (op) { case ItemCol.AmDate: INCC5FileImportUtils.GenFromYYYYMMDD(s, ref i.am_date); break; case ItemCol.PuDate: INCC5FileImportUtils.GenFromYYYYMMDD(s, ref i.pu_date); break; case ItemCol.IsoSourceCode: Enum.TryParse(s, out i.source_code); break; case ItemCol.DeclTotalPu: float sv = 0; float.TryParse(s, out sv); i.pu_mass = sv; break; case ItemCol.Pu238: double.TryParse(s, out v); i.SetVal(Isotope.pu238, v); break; case ItemCol.Pu239: double.TryParse(s, out v); i.SetVal(Isotope.pu239, v); break; case ItemCol.Pu240: double.TryParse(s, out v); i.SetVal(Isotope.pu240, v); break; case ItemCol.Pu241: double.TryParse(s, out v); i.SetVal(Isotope.pu241, v); break; case ItemCol.Pu242: double.TryParse(s, out v); i.SetVal(Isotope.pu242, v); break; case ItemCol.Am241: double.TryParse(s, out v); i.SetVal(Isotope.am241, v); break; case ItemCol.Pu238err: double.TryParse(s, out err); i.SetError(Isotope.pu238, err); break; case ItemCol.Pu239err: double.TryParse(s, out err); i.SetError(Isotope.pu239, err); break; case ItemCol.Pu240err: double.TryParse(s, out err); i.SetError(Isotope.pu240, err); break; case ItemCol.Pu241err: double.TryParse(s, out err); i.SetError(Isotope.pu241, err); break; case ItemCol.Pu242err: double.TryParse(s, out err); i.SetError(Isotope.pu242, err); break; case ItemCol.Am241err: double.TryParse(s, out err); i.SetError(Isotope.am241, err); break; } } catch (Exception ex) { Results.mlogger.TraceEvent(LogLevels.Warning, 34100, s + " fails as composite isotopics summary element " + op.ToString() + " " + ex.Message); return null; } } return i; }
private void RefreshIdComboWithDefault(string id) { IsotopicsIdComboBox.Items.Clear(); // get the in-memory list List<CompositeIsotopics> isolist = NC.App.DB.CompositeIsotopics.GetList(); if (isolist.Count > 0) // look for id on the list { foreach (CompositeIsotopics tope in isolist) { IsotopicsIdComboBox.Items.Add(tope.id); } if (!string.IsNullOrEmpty(id)) m_comp_iso = isolist.Find(i => string.Equals(i.id, id, StringComparison.OrdinalIgnoreCase)); else m_comp_iso = isolist[0]; } if (m_comp_iso != null) IsotopicsIdComboBox.SelectedItem = m_comp_iso.id; // forces event handler to load dialog fields }
void LoadEntry(CompositeIsotopics comp_iso) { DataGridViewRowCollection rows = this.IsoDataGrid.Rows; rows.Clear(); string[] summ = new string[9]; summ[0] = comp_iso.pu_mass.ToString("F3"); summ[1] = comp_iso.pu238.ToString("F6"); summ[2] = comp_iso.pu239.ToString("F6"); summ[3] = comp_iso.pu240.ToString("F6"); summ[4] = comp_iso.pu241.ToString("F6"); summ[5] = comp_iso.pu242.ToString("F6"); summ[6] = comp_iso.pu_date.ToString("yyyy-MM-dd"); summ[7] = comp_iso.am241.ToString("F6"); summ[8] = comp_iso.am_date.ToString("yyyy-MM-dd"); rows.Add(summ); foreach(CompositeIsotopic ci in comp_iso.isotopicComponents) { string[] sub = new string[9]; sub[0] = ci.pu_mass.ToString("F3"); sub[1] = ci.pu238.ToString("F6"); sub[2] = ci.pu239.ToString("F6"); sub[3] = ci.pu240.ToString("F6"); sub[4] = ci.pu241.ToString("F6"); sub[5] = ci.pu242.ToString("F6"); sub[6] = ci.pu_date.ToString("yyyy-MM-dd"); sub[7] = ci.am241.ToString("F6"); sub[8] = ci.am_date.ToString("yyyy-MM-dd"); rows.Add(sub); } }
private void IsotopicsIdComboBox_SelectedIndexChanged(object sender, EventArgs e) { ComboBox cb = (ComboBox)sender; string newid = (string)cb.SelectedItem; if (NC.App.DB.CompositeIsotopics.Has(newid)) m_comp_iso = NC.App.DB.CompositeIsotopics.Get(newid); PopulateWithSelectedItem(); }
void CalculateAndPersist(CompositeIsotopics comp_iso) { if (!GutCheck(calc: true)) return; Isotopics newiso = null; uint retcode = comp_iso.CombinedCalculation(out newiso, NC.App.AppContext.INCCParity, applog); if (retcode == 36783) MessageBox.Show("Unable to update isotopics, sum of Pu isotopes must be greater than zero"); else if (retcode == 36784) MessageBox.Show("Sum of masses = 0.\r\nNew isotopics not calculated and stored."); else { newiso.modified = comp_iso.modified = true; if (!NC.App.DB.CompositeIsotopics.Has(comp_iso.id)) NC.App.DB.CompositeIsotopics.GetList().Add(comp_iso); // add to in-memory list List<CompositeIsotopics> list = NC.App.DB.CompositeIsotopics.GetMatch(i => i.modified); foreach (CompositeIsotopics iso in list) { long pk = NC.App.DB.CompositeIsotopics.Set(iso); // add to database applog.TraceInformation((pk >= 0 ? "Saved " : "Unable to save ") + iso.id + " composite isotopics"); } comp_iso.modified = false; LoadEntry(comp_iso); string msg = string.Format( "Composite Isotopics id:\t{0}\n\nIsotopics Source Code:\t{1}\n\nMass\t\t{2,8:F3}\nPu238\t\t{3,8:F6}\nPu239\t\t{4,8:F6}\nPu240\t\t{5,8:F6}\nPu241\t\t{6,8:F6}\nPu242\t\t{7,8:F6}\nPu Date\t\t{8}\nAm241\t\t{9,8:F6}\nAm Date\t\t{10}\n\nIsotopics are updated to the reference date.", newiso.id, newiso.source_code, comp_iso.MassSum, newiso.pu238, newiso.pu239, newiso.pu240, newiso.pu241, newiso.pu242, newiso.pu_date, newiso.am241, newiso.am_date); DialogResult res = MessageBox.Show(msg, "Accept Results", MessageBoxButtons.OKCancel); if (res == DialogResult.OK) { if (!NC.App.DB.Isotopics.Has(newiso.id)) { NC.App.DB.Isotopics.GetList().Add(newiso); long pk = NC.App.DB.Isotopics.Set(newiso); // add to database applog.TraceInformation((pk >= 0 ? "Saved " : "Unable to save ") + newiso.id + " isotopics"); if (pk >= 0) NC.App.DB.Isotopics.Refresh(); } else { NC.App.DB.Isotopics.Replace(newiso); applog.TraceInformation("Replaced " + newiso.id + " isotopics"); } calcQ = false; } else MessageBox.Show("New isotopics not stored."); } }
List<string[]> Convert(CompositeIsotopics i) { List<string[]> b = new List<string[]>(); // do the header line Array ev = Enum.GetValues(typeof(IsoFiles.CompIsCol)); string[] sa = new string[ev.Length]; sa[(int)IsoFiles.CompIsCol.AmDate] = Quote(i.am_date.ToString("yyyyMMdd")); sa[(int)IsoFiles.CompIsCol.PuDate] = Quote(i.pu_date.ToString("yyyyMMdd")); sa[(int)IsoFiles.CompIsCol.PuMass] = i.pu_mass.ToString(); sa[(int)IsoFiles.CompIsCol.IsoSourceCode] = Quote(i.source_code.ToString()); sa[(int)IsoFiles.CompIsCol.IsoId] = Quote(i.id.ToString()); sa[(int)IsoFiles.CompIsCol.Pu238] = i.pu238.ToString(); sa[(int)IsoFiles.CompIsCol.Pu238err] = i.pu238_err.ToString(); sa[(int)IsoFiles.CompIsCol.Pu239] = i.pu239.ToString(); sa[(int)IsoFiles.CompIsCol.Pu239err] = i.pu239_err.ToString(); sa[(int)IsoFiles.CompIsCol.Pu240] = i.pu240.ToString(); sa[(int)IsoFiles.CompIsCol.Pu240err] = i.pu240_err.ToString(); sa[(int)IsoFiles.CompIsCol.Pu241] = i.pu241.ToString(); sa[(int)IsoFiles.CompIsCol.Pu241err] = i.pu241_err.ToString(); sa[(int)IsoFiles.CompIsCol.Pu242] = i.pu242.ToString(); sa[(int)IsoFiles.CompIsCol.Pu242err] = i.pu242_err.ToString(); sa[(int)IsoFiles.CompIsCol.Am241] = i.am241.ToString(); sa[(int)IsoFiles.CompIsCol.Am241err] = i.am241_err.ToString(); b.Add(sa); // now do each compite as a line foreach(CompositeIsotopic ci in i.isotopicComponents) b.Add(Convert(ci)); return b; }