Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
        }