/// <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)); } } }
/// <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"), }); } }
/// <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); }