Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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;
                }
            }
        }
Exemplo n.º 3
0
        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);
                }
            }
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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;
            }
        }
Exemplo n.º 6
0
        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);
            }
        }
Exemplo n.º 7
0
 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);
 }
Exemplo n.º 8
0
 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);
 }
Exemplo n.º 9
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);
            }
        }
Exemplo n.º 10
0
        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();
                }
            }
        }
Exemplo n.º 11
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);
        }
Exemplo n.º 12
0
        /// <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);
        }