/// <summary>
    /// Recomputes the data from the datasource and refreshes it
    /// </summary>
    /// <param name="datasource">Histogrammable data that uses datetime for the buckets.</param>
    public void Refresh(IEnumerable <IHistogramable> datasource)
    {
        if (datasource == null)
        {
            throw new ArgumentNullException("datasource");
        }
        DateBucketManager           bm      = DateBucketManager.BucketManagerForGroupingMode(CurrentGrouping);
        Dictionary <string, object> context = new Dictionary <string, object>()
        {
            { LogbookEntryDisplay.HistogramContextSelectorKey, SelectedFieldToGraph }
        };

        bm.ScanData(datasource, context, true);
        // check for daily with less than a year
        if (CurrentGrouping == DateBucketManager.GroupingMode.Day && bm.MaxDate.CompareTo(bm.MinDate) > 0 && bm.MaxDate.Subtract(bm.MinDate).TotalDays > 365)
        {
            CurrentGrouping = DateBucketManager.GroupingMode.Week;
            bm = new WeeklyBucketManager();
            bm.ScanData(datasource, context, true);
        }
        gcTrends.XDatePattern = bm.DateFormat;

        RawData = bm.Buckets.ToArray <Bucket <DateTime> >();
        RefreshChartAndTable();
    }
Exemple #2
0
    /// <summary>
    /// Recomputes the data from the datasource and refreshes it
    /// </summary>
    public void Refresh()
    {
        // In case Page_Load has not been called, make sure combo boxes are populated.
        SetUpSelectors();
        if (String.IsNullOrEmpty(cmbGrouping.SelectedValue))
        {
            cmbGrouping.SelectedIndex = 0;
        }

        if (HistogramManager == null)
        {
            throw new InvalidOperationException("Null HistogramManager");
        }

        BucketManager bm = BucketManager;

        bm.ScanData(HistogramManager);

        // check for daily with less than a year
        if (bm is DailyBucketManager dbm && dbm.MaxDate.CompareTo(dbm.MinDate) > 0 && dbm.MaxDate.Subtract(dbm.MinDate).TotalDays > 365)
        {
            BucketManager = bm = new WeeklyBucketManager();
            bm.ScanData(HistogramManager);
        }

        if (bm is DateBucketManager datebm)
        {
            gcTrends.XDatePattern = datebm.DateFormat;
            gcTrends.XDataType    = GoogleColumnDataType.date;
        }
        else
        {
            gcTrends.XDatePattern = "{0}";
            gcTrends.XDataType    = GoogleColumnDataType.@string;
        }

        using (DataTable dt = bm.ToDataTable(HistogramManager))
        {
            gvRawData.Columns.Clear();
            if (String.IsNullOrEmpty(bm.BaseHRef))
            {
                gvRawData.Columns.Add(new BoundField()
                {
                    DataField = BucketManager.ColumnNameDisplayName, HeaderText = bm.DisplayName
                });
            }
            else
            {
                gvRawData.Columns.Add(new HyperLinkField()
                {
                    DataTextField = BucketManager.ColumnNameDisplayName, DataNavigateUrlFormatString = "{0}", DataNavigateUrlFields = new string[] { BucketManager.ColumnNameHRef }, HeaderText = bm.DisplayName, Target = "_blank"
                });
            }

            foreach (DataColumn dc in dt.Columns)
            {
                if (dc.ColumnName.CompareCurrentCultureIgnoreCase(BucketManager.ColumnNameHRef) == 0 || dc.ColumnName.CompareOrdinal(BucketManager.ColumnNameDisplayName) == 0)
                {
                    continue;
                }
                gvRawData.Columns.Add(new BoundField()
                {
                    HeaderText = dc.ColumnName, DataField = dc.ColumnName
                });
            }
            gvRawData.DataSource = dt;
            gvRawData.DataBind();
        }

        RefreshChartAndTable(bm.Buckets);

        if (bm is YearMonthBucketManager ybm && ybm.Buckets.Any())
        {
            gvYearly.Visible    = true;
            gvYearly.DataSource = ybm.ToYearlySummary();
            gvYearly.DataBind();

            // Set the column headers so that they're localized
            for (int i = 0; i < 12; i++)
            {
                gvYearly.HeaderRow.Cells[i + 1].Text = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedMonthNames[i];
            }
        }
Exemple #3
0
    /// <summary>
    /// Recomputes the data from the datasource and refreshes it
    /// </summary>
    public void Refresh()
    {
        // In case Page_Load has not been called, make sure combo boxes are populated.
        SetUpSelectors();
        if (String.IsNullOrEmpty(cmbGrouping.SelectedValue))
        {
            cmbGrouping.SelectedIndex = 0;
        }

        if (HistogramManager == null)
        {
            throw new InvalidOperationException("Null HistogramManager");
        }

        BucketManager bm = BucketManager;

        bm.ScanData(HistogramManager);

        // check for daily with less than a year
        if (bm is DailyBucketManager dbm && dbm.MaxDate.CompareTo(dbm.MinDate) > 0 && dbm.MaxDate.Subtract(dbm.MinDate).TotalDays > 365)
        {
            BucketManager = bm = new WeeklyBucketManager();
            bm.ScanData(HistogramManager);
        }

        if (bm is DateBucketManager datebm)
        {
            gcTrends.XDatePattern = (bm is WeeklyBucketManager) ? String.Format(CultureInfo.InvariantCulture, Resources.LocalizedText.ChartFormatWeekOf, datebm.DateFormat) : datebm.DateFormat;
            gcTrends.XDataType    = GoogleColumnDataType.date;
        }
        else
        {
            gcTrends.XDatePattern = "{0}";
            gcTrends.XDataType    = GoogleColumnDataType.@string;
        }

        using (DataTable dt = bm.ToDataTable(HistogramManager))
        {
            gvRawData.Columns.Clear();
            if (String.IsNullOrEmpty(bm.BaseHRef))
            {
                gvRawData.Columns.Add(new BoundField()
                {
                    DataField = BucketManager.ColumnNameDisplayName, HeaderText = bm.DisplayName
                });
            }
            else
            {
                gvRawData.Columns.Add(new HyperLinkField()
                {
                    DataTextField = BucketManager.ColumnNameDisplayName, DataNavigateUrlFormatString = "{0}", DataNavigateUrlFields = new string[] { BucketManager.ColumnNameHRef }, HeaderText = bm.DisplayName, Target = "_blank"
                });
            }

            foreach (DataColumn dc in dt.Columns)
            {
                if (dc.ColumnName.CompareCurrentCultureIgnoreCase(BucketManager.ColumnNameHRef) == 0 || dc.ColumnName.CompareOrdinal(BucketManager.ColumnNameDisplayName) == 0)
                {
                    continue;
                }
                gvRawData.Columns.Add(new BoundField()
                {
                    HeaderText = dc.ColumnName, DataField = dc.ColumnName
                });
            }
            gvRawData.DataSource = dt;
            gvRawData.DataBind();
        }

        RefreshChartAndTable(bm.Buckets);
    }