예제 #1
0
    /// <summary>
    /// Reload data.
    /// </summary>
    public override void ReloadData()
    {
        // Check the site
        int siteId = CMSContext.CurrentSiteID;

        if (siteId > 0)
        {
            // Check current page
            PageInfo currentPage = CMSContext.CurrentPageInfo;
            if (currentPage != null)
            {
                int objectId = currentPage.NodeID;

                DateTime         fromDate = DateTime.Now;
                DateTime         toDate   = DateTime.Now;
                HitsIntervalEnum interval = HitsIntervalEnum.Day;

                // Prepare the parameters
                switch (StatisticsType)
                {
                case 1:     // Week
                    fromDate = DateTimeHelper.GetWeekStart(DateTime.Now);
                    toDate   = fromDate.AddDays(7);
                    interval = HitsIntervalEnum.Week;
                    break;

                case 2:     // Month
                    fromDate = DateTimeHelper.GetMonthStart(DateTime.Now);
                    toDate   = fromDate.AddMonths(1);
                    interval = HitsIntervalEnum.Month;
                    break;

                case 3:     // Year
                    fromDate = DateTimeHelper.GetYearStart(DateTime.Now);
                    toDate   = fromDate.AddYears(1);
                    interval = HitsIntervalEnum.Year;
                    break;

                case 4:
                    fromDate = new DateTime(1753, 1, 1);
                    toDate   = new DateTime(9999, 1, 1);
                    interval = HitsIntervalEnum.Year;
                    break;

                default:     // Day
                    fromDate = DateTimeHelper.GetDayStart(DateTime.Now);
                    toDate   = fromDate.AddDays(1);
                    interval = HitsIntervalEnum.Day;
                    break;
                }

                // Get the text
                lblInfo.Text = String.Format(MessageText, HitsInfoProvider.GetObjectHitCount(siteId, objectId, interval, "pageviews", fromDate, toDate));
            }
        }
    }
예제 #2
0
    /// <summary>
    /// Updates the specified graph type controls depending on their visibility.
    /// </summary>
    private void InitializeActions()
    {
        HashSet <HitsIntervalEnum> visibleGraphTypes = new HashSet <HitsIntervalEnum>();

        foreach (string token in VisibleGraphTypes.Split(';'))
        {
            HitsIntervalEnum visibleGraphType = HitsIntervalEnumFunctions.StringToHitsConversion(token);
            visibleGraphTypes.Add(visibleGraphType);
        }

        if (visibleGraphTypes.Contains(HitsIntervalEnum.Hour))
        {
            graphIntervalElem.Actions.Add(new CMSButtonGroupAction
            {
                Name = "hour",
                Text = GetString("general.hour"),
            });
        }

        if (visibleGraphTypes.Contains(HitsIntervalEnum.Day))
        {
            graphIntervalElem.Actions.Add(new CMSButtonGroupAction
            {
                Name = "day",
                Text = GetString("general.day"),
            });
        }

        if (visibleGraphTypes.Contains(HitsIntervalEnum.Week))
        {
            graphIntervalElem.Actions.Add(new CMSButtonGroupAction
            {
                Name = "week",
                Text = GetString("general.week"),
            });
        }

        if (visibleGraphTypes.Contains(HitsIntervalEnum.Month))
        {
            graphIntervalElem.Actions.Add(new CMSButtonGroupAction
            {
                Name = "month",
                Text = GetString("general.month"),
            });
        }

        if (visibleGraphTypes.Contains(HitsIntervalEnum.Year))
        {
            graphIntervalElem.Actions.Add(new CMSButtonGroupAction
            {
                Name = "year",
                Text = GetString("general.year"),
            });
        }
    }
예제 #3
0
    /// <summary>
    /// Sets time controls (dropdown with interval and textbox with interval value). Returns true if time controls are to be hided.
    /// </summary>
    private bool SetTimeControls()
    {
        HitsIntervalEnum interval = HitsIntervalEnumFunctions.StringToHitsConversion(mIntervalStr);

        DateTime from = DateTimeHelper.ZERO_TIME;
        DateTime to   = DateTimeHelper.ZERO_TIME;

        object dcFrom = null;
        object dcTo   = null;

        if (mParameters != null)
        {
            // Load fromdate and todate from report parameters (passed from query string)
            dcFrom = mParameters.Table.Columns["FromDate"];
            dcTo   = mParameters.Table.Columns["ToDate"];

            if (dcFrom != null)
            {
                from = ValidationHelper.GetDateTime(mParameters["FromDate"], DateTimeHelper.ZERO_TIME);
            }

            if (dcTo != null)
            {
                to = ValidationHelper.GetDateTime(mParameters["ToDate"], DateTimeHelper.ZERO_TIME);
            }
        }

        // If one contains zero time, set all time radio button. In such situation, report can maintain unlimited fromdate or todate.
        if ((from == DateTimeHelper.ZERO_TIME) || (to == DateTimeHelper.ZERO_TIME))
        {
            mCheckLast = false;
        }

        // If one is not set, hide limitdata panel
        if ((dcFrom == null) || (dcTo == null))
        {
            ucInterval.DefaultPeriod = SchedulingHelper.PERIOD_DAY;
            return(true);
        }

        int  diff        = 0;
        bool noAddToDiff = false;

        // If interval is not known, but 'from' and 'to' is set (f.e. preview, webpart,..) - compute interval from date values
        if (interval == HitsIntervalEnum.None)
        {
            String sFrom = ValidationHelper.GetString(mParameters["FromDate"], String.Empty).ToLowerCSafe();
            String sTo   = ValidationHelper.GetString(mParameters["ToDate"], String.Empty).ToLowerCSafe();
            mCheckLast = true;

            if (MacroProcessor.ContainsMacro(sFrom) && MacroProcessor.ContainsMacro(sTo))
            {
                if (sFrom.Contains("addhours"))
                {
                    interval = HitsIntervalEnum.Hour;
                }
                else if (sFrom.Contains("adddays"))
                {
                    interval = HitsIntervalEnum.Day;
                }
                else if (sFrom.Contains("addweeks"))
                {
                    interval = HitsIntervalEnum.Week;
                }
                else if (sFrom.Contains("addmonths"))
                {
                    interval = HitsIntervalEnum.Month;
                }
                else if (sFrom.Contains("addyears"))
                {
                    interval = HitsIntervalEnum.Year;
                }

                var macroResolverSettings = new MacroSettings
                {
                    AvoidInjection = false,
                    Culture        = CultureHelper.EnglishCulture.Name
                };
                to          = DateTime.Now;
                from        = ValidationHelper.GetDateTime(MacroResolver.Resolve(sFrom, macroResolverSettings), DateTime.Now, macroResolverSettings.Culture);
                noAddToDiff = true;
            }
            else if ((from != DateTimeHelper.ZERO_TIME) && (to != DateTimeHelper.ZERO_TIME))
            {
                // Set interval as greatest possible interval (365+ days -> years, 30+days->months ,...)
                diff = (int)(to - from).TotalDays;
                if (diff >= 365)
                {
                    interval = HitsIntervalEnum.Year;
                }
                else if (diff >= 30)
                {
                    interval = HitsIntervalEnum.Month;
                }
                else if (diff >= 7)
                {
                    interval = HitsIntervalEnum.Week;
                }
                else if (diff >= 1)
                {
                    interval = HitsIntervalEnum.Day;
                }
                else
                {
                    interval = HitsIntervalEnum.Hour;
                }
            }
        }

        // Set default period and diff based on interval
        switch (interval)
        {
        case HitsIntervalEnum.Year:
            diff = to.Year - from.Year;
            ucInterval.DefaultPeriod = SchedulingHelper.PERIOD_MONTH;
            break;

        case HitsIntervalEnum.Month:
            diff = ((to.Year - from.Year) * 12) + to.Month - from.Month;
            ucInterval.DefaultPeriod = SchedulingHelper.PERIOD_MONTH;
            break;

        case HitsIntervalEnum.Week:
            diff = (int)(to - from).TotalDays / 7;
            ucInterval.DefaultPeriod = SchedulingHelper.PERIOD_WEEK;
            break;

        case HitsIntervalEnum.Day:
            diff = (int)(to - from).TotalDays;
            ucInterval.DefaultPeriod = SchedulingHelper.PERIOD_DAY;
            break;

        case HitsIntervalEnum.Hour:
            diff = (int)(to - from).TotalHours;
            ucInterval.DefaultPeriod = SchedulingHelper.PERIOD_HOUR;
            break;

        case HitsIntervalEnum.None:
            mCheckLast = false;
            break;
        }

        // Add current
        if (!noAddToDiff)
        {
            diff++;
        }

        if (interval != HitsIntervalEnum.None)
        {
            drpLast.SelectedValue = HitsIntervalEnumFunctions.HitsConversionToString(interval);
        }

        if (!mCheckLast)
        {
            // Defaul settings for no time
            ucInterval.DefaultPeriod = SchedulingHelper.PERIOD_DAY;
        }

        if (diff != 0)
        {
            txtLast.Text = diff.ToString();
        }

        return(false);
    }