void FlagClick(object sender, EventArgs e) { if (sender is ToolStripDropDownItem) { string flag = " "; var item = sender as ToolStripDropDownItem; string txt = item.Text; if (interval == TimeInterval.Monthly) { flag = txt.Substring(0, 1); } else if (interval == TimeInterval.Irregular) { if (txt == "Clear") { flag = " "; } else { int startIndex = txt.IndexOf("(") + 1; flag = txt.Substring(startIndex, 1); } } SpreadsheetRange ssRng = new SpreadsheetRange(wbView.RangeSelection); ssRng.SetFlag(flag); } }
private void ContextMenuEnabling() { if (interpolateMenu == null || flagMenu == null) { return; } interpolateMenu.Enabled = true; ScaleToVolumeMenu.Enabled = true; regressionMenu.Enabled = false; advancedRawData.Enabled = false; flagMenu.Enabled = true; interpolateWithStyleMenu.Enabled = false; calculateMenu.Enabled = false; if (wbView.ActiveCell != null) { SpreadsheetRange ssRng = new SpreadsheetRange(wbView.RangeSelection); calculateMenu.Enabled = ssRng.ValidCalculationRange; advancedRawData.Enabled = ssRng.ValidCalculationRange && wbView.RangeSelection.ColumnCount == 1 && interval == TimeInterval.Irregular; if (ssRng.ValidInterpolationWithStyle) { interpolateWithStyleMenu.Enabled = true; } if (!ssRng.ValidInterpolationRange) { interpolateMenu.Enabled = false; ScaleToVolumeMenu.Enabled = false; } if (!ssRng.ValidFlagRange) { flagMenu.Enabled = false; } if (wbView.ActiveCell.Row == 0 || wbView.ActiveCell.Column == 0) { // date column or header row. interpolateMenu.Enabled = false; flagMenu.Enabled = false; calculateMenu.Enabled = false; } } }
void ScaleToVolumeMenu_Click(object sender, EventArgs e) { var f = new InputScaleToVolume(); if (f.ShowDialog() == DialogResult.OK) { SpreadsheetRange ssRng = new SpreadsheetRange(wbView.RangeSelection); double val = ssRng.Sum() * 1.98347; // assume flow in cfs if (val > 0) { ssRng.ScaleSelectedRange(f.Value / val); } } }
void interpolateWithStyleMenu_Click(object sender, EventArgs e) { try { m_suspendUpdates = true; SpreadsheetRange ssRng = new SpreadsheetRange(wbView.RangeSelection); ssRng.InterpolateWithStyle(); } finally { m_suspendUpdates = false; } OnUpdateCompleted(EventArgs.Empty); }
void calculateMenu_Click(object sender, EventArgs e) { Cursor = Cursors.WaitCursor; try { var db = Database.DB(); if (db == null) { MessageBox.Show("Error connecting to the database. Please check your password"); return; } SpreadsheetRange ssRng = new SpreadsheetRange(wbView.RangeSelection); var colNames = ssRng.SelectedRangeColumnNames; for (int c = 0; c < colNames.Length; c++) { var tokens = colNames[c].Trim().Split(' '); if (tokens.Length != 2) { continue; } var cbtt = tokens[0]; var pcode = tokens[1]; if (interval == TimeInterval.Monthly) { MonthlyCalculation(ssRng, cbtt, pcode); } else if (interval == TimeInterval.Daily) { DailyCalculation(ssRng, cbtt, pcode, c); } else if (interval == TimeInterval.Irregular) { InstantCalculation(ssRng, cbtt, pcode, c); } } } finally { Cursor = Cursors.Default; } }
void showEquationMenu_Click(object sender, EventArgs e) { Cursor = Cursors.WaitCursor; string msg = ""; try { var db = Database.DB(); if (db == null) { MessageBox.Show("Error connecting to the database. Please check your password"); return; } SpreadsheetRange ssRng = new SpreadsheetRange(wbView.RangeSelection); var colNames = ssRng.SelectedRangeColumnNames; for (int c = 0; c < colNames.Length; c++) { var tokens = colNames[c].Trim().Split(' '); if (tokens.Length != 2) { continue; } var cbtt = tokens[0]; var pcode = tokens[1]; var s = db.GetCalculationSeries(cbtt, pcode, interval); if (s != null) { msg += cbtt + "_" + pcode + " = " + s.Expression + "\n"; } } } finally { Cursor = Cursors.Default; } if (msg != "") { MessageBox.Show(msg); } }
private void FillGaps_Click(object sender, EventArgs e) { try { m_suspendUpdates = true; SpreadsheetRange gaps = new SpreadsheetRange(wbView.RangeSelection); //string flag = ""; //if (interval == TimeInterval.Irregular) // flag = "e"; gaps.FillGaps(); } finally { m_suspendUpdates = false; } OnUpdateCompleted(EventArgs.Empty); }
void interpolateMenu_Click(object sender, EventArgs e) { try { m_suspendUpdates = true; SpreadsheetRange inter = new SpreadsheetRange(wbView.RangeSelection); string flag = ""; if (interval == TimeInterval.Irregular) { flag = "e"; } inter.Interpolate(flag); } finally { m_suspendUpdates = false; } OnUpdateCompleted(EventArgs.Empty); }
private static void MonthlyCalculation(SpreadsheetRange ssRng, string cbtt, string pcode) { var db = Database.DB(); CalculationSeries series = db.GetCalculationSeries(cbtt, pcode, TimeInterval.Monthly); if (series == null) { return; } var rng = ssRng.SelectedDateRange; series.Calculate(rng.DateTime1.FirstOfMonth(), rng.DateTime2.EndOfMonth()); series.Name = "new"; var old = ssRng.SelectionToMonthlySeries(false); old.Name = "old"; var diff = series - old; diff.Name = "Difference"; var list = new SeriesList(); list.Add(series); list.Add(old); list.Add(diff); var dlg = new MonthlyCalculationPreview(); dlg.DataSource = list.ToDataTable(true); if (dlg.ShowDialog() == DialogResult.OK) { // insert into range.. ssRng.InsertSeriesValues(series, dlg.SelectedFlag); } }
void wbView_RangeSelectionChanged(object sender, RangeSelectionChangedEventArgs e) { var rng = e.RangeSelection; this.toolStripStatusLabelStats.Text = ""; if (rng.ColumnCount == 1) { SpreadsheetRange r = new SpreadsheetRange(rng); double sum, min, max; int count; r.Stats(out min, out max, out sum, out count); if (count > 0) { double avg = sum / count; toolStripStatusLabelStats.Text = "min: " + min.ToString("F2") + " max: " + max.ToString("F2") + " avg: " + avg.ToString("F2") + " sum: " + sum.ToString("F2") + " count: " + count.ToString(); } } }
private static void DailyCalculation(SpreadsheetRange ssRng, string cbtt, string pcode, int columnOffset) { var db = Database.DB(); var series = db.GetCalculationSeries(cbtt, pcode, TimeInterval.Daily); if (series == null) { return; } Reclamation.TimeSeries.Parser.SeriesExpressionParser.Debug = true; var rng = ssRng.SelectedDateRange; series.Calculate(rng.DateTime1, rng.DateTime2); if (ssRng.RowCount != series.Count) { MessageBox.Show(series.Messages.ToString(50), "Error with Calculation"); return; } ssRng.InsertSeriesValues(series, "", columnOffset); }
/// <summary> /// If Decodes software is installed locally /// DECODE raw data for a single parameter /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void AdvancedRawData_Click(object sender, EventArgs e) { // determine siteid (cbtt) and pcode SpreadsheetRange r = new SpreadsheetRange(wbView.RangeSelection); var col = r.SelectedRangeColumnNames[0]; var tokens = col.Trim().Split(' '); if (tokens.Length != 2) { return; } var cbtt = tokens[0].ToLower(); var pcode = tokens[1].ToLower(); // find date range that is selected. var t = r.SelectedDateRange; // account for timezone offset and transmission time delay // summer UTC-6h // winter UTC-7h var t1 = t.DateTime1.AddHours(-24); var t2 = t.DateTime2.AddHours(+24); var svr = Database.GetServer("hydromet_opendcs"); if (svr == null) { MessageBox.Show("Error connecting to the database. Please check your password"); return; } var fn = FileUtility.GetSimpleTempFileName(".txt"); var log = FileUtility.GetSimpleTempFileName(".txt"); // run DECODES to create output file DecodesUtility.RunDecodesRoutingSpec(svr, "hydromet-tools", t1, t2, cbtt, fn, log); //Don't Go Karl! foreach (var item in File.ReadAllLines(log)) { Logger.WriteLine(item); } foreach (var item in File.ReadAllLines(fn)) { Logger.WriteLine(item); } TextFile tf = new TextFile(fn); if (!HydrometInstantSeries.IsValidDMS3(tf)) { MessageBox.Show("Error reading Decodes output"); return; } // Read Decodes output var sl = HydrometInstantSeries.HydrometDMS3DataToSeriesList(tf); // filter by cbtt and pcode var s = sl.Find(x => x.Table.TableName == "instant_" + cbtt + "_" + pcode); if (s == null) { Logger.WriteLine("Error: could not find decoded data for " + cbtt + "/" + pcode); return; } // use dataview for sorted data // filter by date range Series decoded = s.Clone(); for (int i = 0; i < s.Count; i++) { var pt = s[i]; if (pt.DateTime >= t.DateTime1 && pt.DateTime <= t.DateTime2) { decoded.Add(pt); } } // put values into hydromet tools r.InsertSeriesValues(decoded); }