예제 #1
0
        private void RefreshAllCharts()
        {
            // ----------------------------------------------------------------------------------
            // Refresh all data for current year and attach data to lines and bars on chart.
            // ----------------------------------------------------------------------------------

            if (MetData.Rows.Count > 0)
            {
                YearlyData = DataTableUtility.FilterTableForYear(MetData, (int)YearStartBox.Value, (int)YearStartBox.Value + (int)NumYearsBox.Value - 1);

                //JF 061211 - Fix bug in max radiation for years that don't begin at day 1 by sending the starting day to QMax
                int firstDay = 0;
                if ((YearlyData.Count > 0))
                {
                    if (YearlyData.Table.Columns.Contains("day"))
                    {
                        firstDay = Convert.ToInt32(YearlyData[0]["day"]);
                    }
                    else if (YearlyData.Table.Columns.Contains("date"))
                    {
                        DateTime D = (DateTime)YearlyData[0]["date"];
                        firstDay = D.DayOfYear;
                    }
                }

                if (YearlyData.Table.Columns.IndexOf("Rain") != -1)
                {
                    double[] Rainfall = DataTableUtility.ColumnValues(YearlyData, "rain");
                    if (NumYearsBox.Value == 1)
                    {
                        RainfallLabel.Text = MathUtility.Sum(Rainfall).ToString("f1") + " mm for the year " + YearStartBox.Value.ToString();
                    }
                    else
                    {
                        RainfallLabel.Text = MathUtility.Sum(Rainfall).ToString("f1") + " mm for the years " + YearStartBox.Value.ToString() + " to " + (YearStartBox.Value + NumYearsBox.Value - 1).ToString();
                    }
                    RainfallLabel.Left = Label1.Left + Label1.Width;
                }
                else
                {
                    RainfallLabel.Text = "";
                }
                MonthlyData = DataTableUtility.MonthlySums(YearlyData);
                CalcQmax(firstDay);
                PopulateSeries(RainfallBar, YearlyData, "Rain");
                PopulateSeries(RainfallBar2, YearlyData, "Rain");
                PopulateSeries(MaximumTemperatureLine, YearlyData, "MaxT");
                PopulateSeries(MinimumTemperatureLine, YearlyData, "MinT");
                PopulateSeries(RadiationLine, YearlyData, "Radn");
                if (MetData.Columns["QMax"] == null)
                {
                    MaximumRadiationLine.Visible = false;
                }
                else
                {
                    PopulateSeries(MaximumRadiationLine, YearlyData, "QMax");
                    MaximumRadiationLine.Visible = true;
                }
                PopulateSeries(MonthlyRainfallBar, MonthlyData, "Rain");
                if (MonthlyData.Columns.IndexOf("pan") != -1)
                {
                    PopulateSeries(MonthlyEvaporationLine, MonthlyData, "pan");
                }
                else
                {
                    PopulateSeries(MonthlyEvaporationLine, MonthlyData, "Evap");
                }
            }
        }