public void TestRectangularContractedWeir() { // bully creek feder canal Series ch = new Series("bul_ch"); DateTime t1 = DateTime.Parse("2015-2-8 8:15"); DateTime t2 = DateTime.Parse("2015-2-12 7:15"); ch.AfterRead += new EventHandler(delegate(object o, EventArgs a) { ch.Add(t1, 2); ch.Add(t2, 1.69); }); Logger.EnableLogger(); SeriesExpressionParser.Debug = true; var c = new CalculationSeries("bul_qc"); c.Parser.VariableResolver.Add("bul_ch", new ParserResult(ch)); c.TimeInterval = TimeInterval.Irregular; c.Expression = "RectangularContractedWeir(bul_ch,10)"; c.Calculate(); Assert.AreEqual(2, c.Count, " expected two flow calculations"); Assert.AreEqual(90.42, c[t1].Value, 0.01); Assert.AreEqual(70.69, c[t2].Value, 0.01); ch.Read(); var x = Reclamation.TimeSeries.Math.RectangularContractedWeir(ch, 10); Assert.AreEqual(90.42, c[0].Value, 0.01); }
public void MathInDatabase() { _svr.CreateDataBase(_fn); Series one = new Series(); one.Name = "o"; one.Add(DateTime.Parse("2001-01-01"), 1); one.Add(DateTime.Parse("2001-01-02"), 1); Series two = new Series(); two.Name = "two"; two.Add(DateTime.Parse("2001-01-01"), 2); two.Add(DateTime.Parse("2001-01-02"), 2); CalculationSeries onePlusTwo = new CalculationSeries(); onePlusTwo.Name = "one+two"; // this name will match 'one%' in SQL onePlusTwo.Expression = "o+two"; _db.AddSeries(one); _db.AddSeries(two); _db.AddSeries(onePlusTwo); onePlusTwo.Calculate(); Assert.AreEqual(2, onePlusTwo.Count); Assert.AreEqual(3, onePlusTwo[0].Value); Assert.AreEqual(3, onePlusTwo[1].Value); onePlusTwo.WriteToConsole(); }
public void AddBug() { DateTime t1 = new DateTime(2013, 1, 1); var t2 = t1.AddDays(365); var fn = FileUtility.GetTempFileNameInDirectory(@"c:\temp\", ".pdb"); SQLiteServer svr = new SQLiteServer(fn); TimeSeriesDatabase db = new Reclamation.TimeSeries.TimeSeriesDatabase(svr, false); var s = new HydrometDailySeries("pal", "af"); s.Name = "pal_af"; s.Read(t1, t2); db.AddSeries(s); var cs = new CalculationSeries("add_test"); cs.Expression = "pal_af + pal_af"; db.AddSeries(cs); cs = db.GetSeriesFromName("add_test") as CalculationSeries; cs.Calculate(t1, t2); cs = db.GetSeriesFromName("add_test") as CalculationSeries; cs.Read(); Assert.IsTrue(cs.Count > 0); }
public void SpaceInVariableName() { _svr.CreateDataBase(_fn); Series one = new Series(); one.Name = "o"; one.Add(DateTime.Parse("2001-01-01"), 1); one.Add(DateTime.Parse("2001-01-02"), 1); SeriesExpressionParser.Debug = true; one.Name = "jck af"; // put a space in the name _db.AddSeries(one); CalculationSeries onePlusTwo = new CalculationSeries(); onePlusTwo.Name = "space_in_expression"; onePlusTwo.Expression = "'jck af'+2"; // using single quotes ' _db.AddSeries(onePlusTwo); onePlusTwo.Calculate(); Assert.AreEqual(2, onePlusTwo.Count); Assert.AreEqual(3, onePlusTwo[0].Value); Assert.AreEqual(3, onePlusTwo[1].Value); }
public void ImportDecodesWithMissingGageHeight() { FileUtility.CleanTempPath(); var fn1 = FileUtility.GetTempFileName(".pdb"); Console.WriteLine(fn1); var svr = new SQLiteServer(fn1); var db = new TimeSeriesDatabase(svr, Reclamation.TimeSeries.Parser.LookupOption.TableName); Logger.EnableLogger(); var tmpDir = CopyTestDecodesFileToTempDirectory("decodes_mabo_missing_gh.txt"); var ratingTableFileName = CreateTempRatingTable("mabo.csv", 2.37, 2.8, x => (x * 10)); var c = new CalculationSeries("instant_mabo_q"); c.Expression = "FileRatingTable(mabo_gh,\"" + ratingTableFileName + "\")"; db.AddSeries(c); FileImporter import = new FileImporter(db); import.Import(tmpDir, RouteOptions.Outgoing, computeDependencies: true, searchPattern: "*.txt"); db.Inventory(); var s = db.GetSeriesFromTableName("instant_mabo_q"); s.Read(); Assert.IsTrue(s.CountMissing() == 0); Assert.IsTrue(s.Count > 0, "No flow data computed"); }
public void StringParameter() { string expression = "HydrometRuleCurve(\"c:\\temp\\prvo\",fc))"; string subExpression; ParserFunction f; ParserUtility.TryGetFunctionCall(expression, out subExpression, out f); Assert.AreEqual("HydrometRuleCurve", f.Name); Assert.AreEqual(2, f.Parameters.Length); Assert.AreEqual("\"c:\\temp\\prvo\"", f.Parameters[0]); Assert.AreEqual("fc", f.Parameters[1]); CalculationSeries cs = new CalculationSeries("test"); cs.Expression = expression; var vars = cs.GetDependentVariables(); // "prvo" is a string NOT a variable. foreach (var item in vars) { System.Console.WriteLine("'" + item + "'"); } Assert.IsTrue(vars.Count == 1, "string parameter is not a variable"); Assert.IsTrue(vars[0] == "fc"); }
public AlterIssueForm(Issue item) { InitializeComponent(); this.item = item; nameTB.Text = item.name; descrTB.Text = item.description; // Add choice to add null to calculation series var emptySeries = new CalculationSeries(); emptySeries.id = -1; emptySeries.name = "Без серiї"; //seriesCB.Items.Add(emptySeries); //seriesCB.SelectedIndex = 0; //Bugged // Add all series from db to combo box db.Connect(); var obj = db.GetRows("calculations_description", "*", ""); var calculations = new List <CalculationSeries>(); foreach (var row in obj) { calculations.Add(CalculatoinSeriesMapper.Map(row)); } //seriesCB.Items.AddRange(calculations.ToArray()); db.Disconnect(); //seriesCB.SelectedIndex = item.seriesId.Length == 0 ? 0 : Int32.Parse(item.seriesId); // TODO }
public void ImportDecodesAndProcessWithFlagLimits() { Logger.EnableLogger(); FileUtility.CleanTempPath(); var fn1 = FileUtility.GetTempFileName(".pdb"); Console.WriteLine(fn1); var svr = new SQLiteServer(fn1); var db = new TimeSeriesDatabase(svr, Reclamation.TimeSeries.Parser.LookupOption.TableName); var tmpDir = CopyTestDecodesFileToTempDirectory("decodes_lapo.txt"); var rtlapo = CreateTempRatingTable("lapo.csv", new double[] { 3.50, 3.54, 3.55, 5.54 }, new double[] { 1, 2, 3, 10 }); // set limits gh: low=3.53, high 3.6, rate of change/hour 1 Quality q = new Quality(db); q.SaveLimits("instant_lapo_gh", 3.6, 3.53, 1.0); q.SaveLimits("instant_lapo_q", 5, 1.1, 0); var site = db.GetSiteCatalog(); site.AddsitecatalogRow("lapo", "", "OR"); db.Server.SaveTable(site); var c = new CalculationSeries("instant_lapo_q"); c.SiteID = "lapo"; c.Expression = "FileRatingTable(%site%_gh,\"" + rtlapo + "\")"; db.AddSeries(c); //SeriesExpressionParser.Debug = true; FileImporter import = new FileImporter(db); import.Import(tmpDir, RouteOptions.None, computeDependencies: true, searchPattern: "*.txt"); db.Inventory(); var s = db.GetSeriesFromTableName("instant_lapo_gh"); var expectedFlags = new string[] { "", "", "", "+", "", "", "", "-" }; for (int i = 0; i < s.Count; i++) { Assert.AreEqual(expectedFlags[i], s[i].Flag, " flag not expected "); } s = db.GetSeriesFromTableName("instant_lapo_q"); s.Read(); Assert.IsTrue(s.Count > 0, "No flow data computed lapo"); s.WriteToConsole(true); // computed flows should be: 2 2 2 10 2 2 1 expectedFlags = new string[] { "", "", "", "+", "", "", "", "-" }; //q>=1 and q<= 5 for (int i = 0; i < s.Count; i++) { Assert.AreEqual(expectedFlags[i], s[i].Flag.Trim(), " Flag check on Flow (Q) "); } SeriesExpressionParser.Debug = false; }
private void AddDailyCalculation(string name, string exp) { var c = new CalculationSeries(name); TimeSeriesName tn = new TimeSeriesName(name); c.Expression = exp; c.SiteID = tn.siteid; c.TimeInterval = TimeInterval.Daily; db.AddSeries(c); }
public void SimpleRecursive_wafi() { var c = new CalculationSeries("instant_wafi_ch"); c.Expression = "GenericWeir(wafi_ch,0,16.835,1.5)"; db.AddSeries(c); FileImporter fi = new FileImporter(db); fi.Import(dir, true, true, "*.wafi"); }
static void Main(string[] args) { if (args.Length != 3) { Console.WriteLine("Usage: ImportCsv site_list.csv instant|daily daysBack"); return; } FileUtility.CleanTempPath(); Logger.EnableLogger(); CsvFile csv = new CsvFile(args[0]); int daysBack = int.Parse(args[2]); /* * * interval,filename,date_column,value_column,cbtt,pcode * instant,kid.csv,Time,MB1.Hw_FlowMeter,ACHO,QC1 * instant,kid.csv,Time,MB1.Hw_FlowCalc,ACHO,QC2 * instant,kid.csv,Time,MB1.MillerHill_FlowPump1,HMPO,QP1 * instant,kid.csv,Time,MB1.MillerHill_FlowPump2,HMPO,QP2 * instant,kid.csv,Time,MB1.MillerHill_FlowPump3,HMPO,QP3 * */ var rows = csv.Select("interval = '" + args[1] + "'"); var interval = TimeInterval.Daily; if (args[1] == "instant") { interval = TimeInterval.Irregular; } Console.WriteLine("Processing " + rows.Length + " parameters"); for (int i = 0; i < rows.Length; i++) { var filename = rows[i]["filename"].ToString(); var dateColumn = rows[i]["date_column"].ToString(); var valueColumn = rows[i]["value_column"].ToString(); var cbtt = rows[i]["cbtt"].ToString(); var pcode = rows[i]["pcode"].ToString(); DataTable tbl = new CsvFile(filename); CalculationSeries s = new CalculationSeries(); s.TimeInterval = interval; s.Expression = valueColumn; s.Parser.VariableResolver = new DataTableVariableResolver(tbl, dateColumn); s.Calculate(DateTime.Now.AddDays(-daysBack), DateTime.Now); Console.WriteLine("Processing " + cbtt + "_" + pcode + " " + s.Count + " records"); TimeSeriesTransfer.Import(s, cbtt, pcode); } }
public void AddEquationSeries(string name, string equation, string interval = "instant") { var f = db.GetOrCreateFolder("hydromet", "aga", interval); TimeSeriesName tn = new TimeSeriesName(name, interval); var c = new CalculationSeries(name); c.Table.TableName = tn.GetTableName(); c.Expression = equation; c.TimeInterval = tn.GetTimeInterval(); db.AddSeries(c, f); }
public void JacksonQU() { // daily data based on other daily data //DailyCalculator. Reclamation.TimeSeries.Parser.SeriesExpressionParser.Debug = true; var s = new CalculationSeries(); s.Expression = "(jck_af-jck_af[t-1])/1.98347+jck_qd"; s.TimeInterval = TimeInterval.Daily; s.Parser.VariableResolver = new HydrometVariableResolver(); s.Calculate(new DateTime(2012, 11, 1), new DateTime(2012, 11, 15)); Assert.AreEqual(298, s["2012-11-15"].Value, 0.01); }
/// <summary> /// Adds new Calculation Series /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void AddCalculationClick(object sender, EventArgs e) { CalculationSeries s = new CalculationSeries(DB); CalculationProperties p = new CalculationProperties(s, new TimeSeriesTreeModel(DB), DB.GetUniqueUnits()); if (p.ShowDialog() == DialogResult.OK) { DB.AddSeries(s, CurrentFolder); // tree refresh.. Add node. s.Calculate(); // save again // refresh. DB.RefreshFolder(CurrentFolder); } }
public void MpollQU() { var qu = new CalculationSeries(); qu.Expression = "WOD_AF-WOD_AF[t-1]+WOD_OM"; qu.TimeInterval = TimeInterval.Monthly; qu.Parser.VariableResolver = new HydrometVariableResolver(); DateTime t1 = DateTime.Parse("9/1/1957"); DateTime t2 = DateTime.Parse("12/23/1957"); qu.Calculate(t1, t2); Assert.AreEqual(4120, qu["10/1/1957"].Value); qu.WriteToConsole(); }
public void Conditionals() { SeriesExpressionParser.Debug = true; var tiew_qj = new Series("tiew_qj"); var nscw_qj = new Series("nscw_qj"); tiew_qj.TimeInterval = TimeInterval.Daily; nscw_qj.TimeInterval = TimeInterval.Daily; DateTime t1 = DateTime.Parse("1/1/2015"); DateTime t2 = DateTime.Parse("1/10/2015"); tiew_qj.AfterRead += new EventHandler(delegate(object o, EventArgs a) { tiew_qj.AddRange(t1, new double[] { 10, 10, 1, 1 }); }); nscw_qj.AfterRead += new EventHandler(delegate(object o, EventArgs a) { nscw_qj.AddRange(t1, new double[] { 11, 10, 1, 100 }); }); var expected = new double[] { 35, 0, 0, 35 }; var expected2 = new double[] { 0, 0, 35, 0 }; var qu = new CalculationSeries(); qu.Expression = "If( tiew_qj + nscw_qj > 20.0 , 35.0, 0.0)"; qu.TimeInterval = TimeInterval.Daily; qu.Parser.VariableResolver.Add("tiew_qj", tiew_qj); qu.Parser.VariableResolver.Add("nscw_qj", nscw_qj); qu.Calculate(t1, t2); qu.WriteToConsole(); Assert.AreEqual(4, qu.Count, " expected 4 QU values"); for (int i = 0; i < expected.Length; i++) { Assert.AreEqual(expected[i], qu[i].Value, 0.001); } expected = null; qu.Expression = "If( tiew_qj + nscw_qj < 20.0 , 35.0, 0.0)"; qu.Calculate(t1, t2); qu.WriteToConsole(); Assert.AreEqual(4, qu.Count, " expected 4 QU values"); for (int i = 0; i < expected2.Length; i++) { Assert.AreEqual(expected2[i], qu[i].Value, 0.001); } }
public void SimpleDailyAverageNoPrefix() { var mm = new CalculationSeries(); mm.SiteID = "pici"; mm.Expression = "DailyAverage(%site%_ob)"; mm.TimeInterval = TimeInterval.Irregular; mm.Parser.VariableResolver = new HydrometVariableResolver(); DateTime t1 = DateTime.Parse("5/2/2013"); DateTime t2 = DateTime.Parse("5/2/2013"); mm.Calculate(t1, t2); Assert.AreEqual(44.56, mm["5/2/2013"].Value, 0.01); mm.WriteToConsole(); }
private CalculationSeries CreateCalcSeries(TimeSeriesDatabaseDataSet.SeriesCatalogRow r, string name, TimeSeriesName tn, string expression) { var s = new CalculationSeries(name) { Parameter = tn.pcode, SiteID = r.siteid, Expression = expression }; s.Table.TableName = tn.GetTableName(); s.TimeInterval = tn.GetTimeInterval(); sw.WriteLine("Created: " + tn.GetTableName() + " = " + expression); return(s); }
private void buttonAdd_Click(object sender, EventArgs e) { var db = Database.DB(); var s = new CalculationSeries(db); var m = new TimeSeriesTreeModel(db); var p = new CalculationProperties(s, m, db); if (p.ShowDialog() == DialogResult.OK) { db.SuspendTreeUpdates(); db.AddSeries(s); } LoadTable(); }
public void SimpleDailyAverageWithInterval() { var mm = new CalculationSeries(); mm.SiteID = "pici"; // test feautre that replaces %site% with SiteID mm.Expression = "DailyAverage(instant_%site%_ob)"; mm.TimeInterval = TimeInterval.Daily; mm.Parser.VariableResolver = new HydrometVariableResolver(); DateTime t1 = DateTime.Parse("5/2/2013"); DateTime t2 = DateTime.Parse("5/2/2013"); mm.Calculate(t1, t2); Assert.AreEqual(44.56, mm["5/2/2013"].Value, 0.01); mm.WriteToConsole(); }
public CalculationProperties(CalculationSeries s, ITreeModel model, TimeSeriesDatabase db) { string[] DBunits = db.GetUniqueUnits(); m_db = db; InitializeComponent(); tree1 = new PiscesTree(model); tree1.ExpandRootNodes(); tree1.AllowDrop = false; tree1.Parent = this.splitContainer1.Panel1; tree1.Dock = DockStyle.Fill; tree1.RemoveCommandLine(); m_series = s; basicEquation1.SeriesExpression = m_series.Expression; basicEquation1.SiteID = m_series.SiteID; }
public CalculationProperties(CalculationSeries s, ITreeModel model, string[] DBunits) { InitializeComponent(); tree1 = new PiscesTree(model); tree1.ExpandRootNodes(); tree1.AllowDrop = false; tree1.Parent = this.splitContainer1.Panel1; tree1.Dock = DockStyle.Fill; tree1.RemoveCommandLine(); m_series = s; basicEquation1.SeriesExpression = m_series.Expression; basicEquation1.Units = m_series.Units; basicEquation1.SeriesName = m_series.Table.TableName; this.LoadList(basicEquation1.ComboBoxUnits, DBunits); }
public void ValeQU() { // daily data based on other daily data //DailyCalculator. Reclamation.TimeSeries.Parser.SeriesExpressionParser.Debug = true; var s = new CalculationSeries(); s.Expression = "(WAR_AF[t-2]-WAR_AF[t-3]+BEU_AF[t-2]-BEU_AF[t-3]+BUL_AF-BUL_AF[t-1])/1.98347+VALO_QD"; s.TimeInterval = TimeInterval.Daily; s.Parser.VariableResolver = new HydrometVariableResolver(); DateTime t = new DateTime(2012, 12, 6); s.Calculate(t, t); Assert.AreEqual(1, s.Count); Assert.AreEqual(573.75, s[t].Value, 0.01); }
public void ConstantInteger() { CalculationSeries c = new CalculationSeries(); c.TimeInterval = TimeInterval.Daily; c.Name = "constant_series"; c.Expression = "14"; db.AddSeries(c); DateTime t1 = new DateTime(2014, 10, 1); DateTime t2 = new DateTime(2014, 10, 5); c.Calculate(t1, t2); Assert.AreEqual(5, c.Count); Assert.AreEqual(14, c[0].Value, 0.001); }
static void Main(string[] args) { Logger.EnableLogger(); //var svr = new SQLiteServer(@"C:\temp\snowcourse.pdb"); var svr = PostgreSQL.GetPostgresServer("timeseries", "lrgs1.pn.usbr.gov"); var db = new TimeSeriesDatabase(svr); var sc = db.GetSeriesCatalog(); var sites = db.GetSiteCatalog(); CsvFile csv = new CsvFile(@"C:\Users\KTarbet\Documents\project\Hydromet\ConfigurationData\su_cbtt.csv"); for (int i = 0; i < csv.Rows.Count; i++) { var row = csv.Rows[i]; string triplet = "16F02:ID:SNOW"; triplet = row["nrcs code"].ToString(); if (triplet.Trim() == "") { continue; } triplet += ":" + row["state"].ToString(); triplet += ":SNOW"; string cbtt = row["cbtt"].ToString().ToLower(); if (!sites.Exists(cbtt)) { sites.AddsitecatalogRow(cbtt, row["name"].ToString(), row["state"].ToString()); } var monthlyFolder = db.GetOrCreateFolder("hydromet", cbtt, "monthly"); var m = new CalculationSeries(db); m.Name = row["name"].ToString() + " " + cbtt + "_su"; m.Table.TableName = "monthly_" + cbtt + "_" + row["type"].ToString(); m.TimeInterval = TimeInterval.Monthly; m.Expression = "DailySnowCourseToMonthly(\"" + triplet + "\")"; var id = db.AddSeries(m, monthlyFolder); m.Properties.Set("program", "hydromet"); m.Properties.Set("agency", "nrcs"); m.Properties.Set("nrcs_type", "SNOW"); m.Properties.Save(); } svr.SaveTable(sc); }
/// <summary> /// Adds new Calculation Series /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void AddCalculationClick(object sender, EventArgs e) { CalculationSeries s = new CalculationSeries(DB); CalculationProperties p = new CalculationProperties(s, new TimeSeriesTreeModel(DB), DB); if (p.ShowDialog() == DialogResult.OK) { DB.AddSeries(s, CurrentFolder); // tree refresh.. Add node. if (p.Calculate) { s.Calculate(); // save again } // refresh. //DB.RefreshFolder(CurrentFolder); DatabaseChanged();; } }
public void FunctionNames() { _svr.CreateDataBase(_fn); ParserFunction f; string subExpr = ""; bool ok = ParserUtility.TryGetFunctionCall("Merge(series1,'series 2')+'Series 5'", out subExpr, out f); Assert.IsTrue(ok); Assert.AreEqual("Merge", f.Name); Assert.AreEqual(2, f.Parameters.Length); Series observed = new Series(); observed.Name = "observed"; observed.Add(DateTime.Parse("2001-01-01"), 1); observed.AddMissing(DateTime.Parse("2001-1-02")); observed.Add(DateTime.Parse("2001-01-04"), 1); observed.TimeInterval = TimeInterval.Daily; Series estimated = new Series(); estimated.Name = "estimated"; estimated.Add(DateTime.Parse("2001-1-02"), 2); estimated.Add(DateTime.Parse("2001-1-03"), 2); estimated.Add(DateTime.Parse("2000-12-25"), 2); estimated.Add(DateTime.Parse("2001-12-26"), 2); estimated.TimeInterval = TimeInterval.Daily; CalculationSeries c = new CalculationSeries(); //c.SetMissingDataToZero = true; c.TimeInterval = TimeInterval.Daily; c.Name = "merged"; c.Expression = "Merge(observed, estimated)"; _db.AddSeries(observed); _db.AddSeries(estimated); _db.AddSeries(c); c.Calculate(); Assert.AreEqual(2, c["2001-1-03"].Value, 0.0001); c.WriteToConsole(); }
public void Constant() { _svr.CreateDataBase(_fn); CalculationSeries c = new CalculationSeries(); c.TimeInterval = TimeInterval.Daily; c.Name = "constant_series"; c.Expression = "15.0"; _db.AddSeries(c); DateTime t1 = new DateTime(2014, 10, 1); DateTime t2 = new DateTime(2014, 10, 5); c.Calculate(t1, t2); Assert.AreEqual(5, c.Count); Assert.AreEqual(15, c[0].Value, 0.001); }
public void MathMax() { //DailyCalculator. DateTime t = new DateTime(2012, 12, 6); ConstantSeries s1 = new ConstantSeries("s1", "aa", -1, TimeInterval.Daily); s1.TimeInterval = TimeInterval.Daily; Reclamation.TimeSeries.Parser.SeriesExpressionParser.Debug = true; var s = new CalculationSeries(); s.Expression = "Max(s1,0)"; s.TimeInterval = TimeInterval.Daily; s.Parser.VariableResolver = new VariableResolver(); s.Parser.VariableResolver.Add("s1", s1); s.Calculate(t, t.AddDays(2)); s.WriteToConsole(); Assert.AreEqual(3, s.Count); }
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); } }
/// <summary> /// Adds new Calculation Series /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void AddCalculationClick(object sender, EventArgs e) { CalculationSeries s = new CalculationSeries(DB); CalculationProperties p = new CalculationProperties(s, new TimeSeriesTreeModel( DB), DB.GetUniqueUnits()); if (p.ShowDialog() == DialogResult.OK) { DB.AddSeries(s, CurrentFolder); // tree refresh.. Add node. if( p.Calculate) s.Calculate(); // save again // refresh. DB.RefreshFolder(CurrentFolder); } }