Example #1
0
    protected override void OnPreRender(EventArgs e)
    {
        base.OnPreRender(e);

        string printDialogUrl = string.Format("{0}?reportname={1}&parameters={2}",
                                              ResolveUrl(PrintPageURL),
                                              ReportName,
                                              AnalyticsHelper.GetQueryStringParameters(ReportParameters));

        string printScript = string.Format("myModalDialog('{0}&UILang={1}&hash={2}','PrintReport {3}',800,700);return false",
                                           printDialogUrl,
                                           CultureInfo.CurrentUICulture.IetfLanguageTag,
                                           QueryHelper.GetHash(printDialogUrl),
                                           ReportName);

        string subscriptionScript = String.Format("modalDialog('{0}?reportname={1}&parameters={2}&interval={3}','Subscription',{4},{5});return false",
                                                  ResolveUrl("~/CMSModules/Reporting/Dialogs/EditSubscription.aspx"),
                                                  ReportName,
                                                  AnalyticsHelper.GetQueryStringParameters(ReportParameters),
                                                  HitsIntervalEnumFunctions.HitsConversionToString(SelectedInterval),
                                                  AnalyticsHelper.SUBSCRIPTION_WINDOW_WIDTH,
                                                  AnalyticsHelper.SUBSCRIPTION_WINDOW_HEIGHT);

        string refreshScript = "function RefreshPage() {" + ControlsHelper.GetPostBackEventReference(this, "") + "};";

        ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "RefreshScript", ScriptHelper.GetScript(refreshScript));

        // Register special script for print window
        ScriptHelper.RegisterPrintDialogScript(Page);
        ScriptHelper.RegisterDialogScript(Page);

        // Scripts have to be assigned when ReportName and ReportParameters are available!
        AssignClientScriptToAction(mPrintAction, printScript);
        AssignClientScriptToAction(mSubscriptionAction, subscriptionScript);
    }
    /// <summary>
    /// OnPreRender event handler
    /// </summary>
    /// <param name="e"></param>
    protected override void OnPreRender(EventArgs e)
    {
        InitializeActions();

        // Select action
        graphIntervalElem.SelectedActionName = HitsIntervalEnumFunctions.HitsConversionToString(SelectedValue);

        base.OnPreRender(e);
    }
Example #3
0
    /// <summary>
    /// Displays the report
    /// </summary>
    /// <param name="reload">If true display reload control is reloaded</param>
    private void DisplayReport(bool reload)
    {
        if (reportDisplayed)
        {
            return;
        }

        ucGraphType.ProcessChartSelectors(false);

        // Prepare report parameters
        DataTable dtp = new DataTable();

        dtp.Columns.Add("FromDate", typeof(DateTime));
        dtp.Columns.Add("ToDate", typeof(DateTime));
        dtp.Columns.Add("CodeName", typeof(string));
        dtp.Columns.Add("TestName", typeof(string));
        dtp.Columns.Add("VariationName", typeof(string));

        object[] parameters = new object[5];

        parameters[0] = ucGraphType.From;
        parameters[1] = ucGraphType.To;
        parameters[2] = "abtests";
        parameters[3] = ValidationHelper.GetString(ucABTests.Value, String.Empty);
        parameters[4] = ValidationHelper.GetString(ucSelectVariation.Value, String.Empty);

        dtp.Rows.Add(parameters);
        dtp.AcceptChanges();

        String reportName = ucGraphType.GetReportName("abtestconversionsbyvariations.yearreport;abtestconversionsbyvariations.monthreport;abtestconversionsbyvariations.weekreport;abtestconversionsbyvariations.dayreport;abtestconversionsbyvariations.hourreport");

        ucDisplayReport.ReportName = reportName;

        // Conversion count
        if (!ucDisplayReport.IsReportLoaded())
        {
            ShowError(String.Format(GetString("Analytics_Report.ReportDoesnotExist"), reportName));
        }
        else
        {
            ucDisplayReport.LoadFormParameters   = false;
            ucDisplayReport.DisplayFilter        = false;
            ucDisplayReport.ReportParameters     = dtp.Rows[0];
            ucDisplayReport.GraphImageWidth      = 100;
            ucDisplayReport.IgnoreWasInit        = true;
            ucDisplayReport.UseExternalReload    = true;
            ucDisplayReport.UseProgressIndicator = true;
            ucDisplayReport.SelectedInterval     = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval);

            if (reload)
            {
                ucDisplayReport.ReloadData(true);
            }
        }

        reportDisplayed = true;
    }
    /// <summary>
    /// Updates the specified graph type controls depending on their visibility.
    /// </summary>
    private void InitializeActions()
    {
        var visibleGraphTypes = new HashSet <HitsIntervalEnum>();

        foreach (var token in VisibleGraphTypes.Split(';'))
        {
            var 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>
    /// Displays the report using the current graph type.
    /// </summary>
    private void DisplayReport()
    {
        // Create control to display the specified report
        Control        control         = LoadUserControl("~/CMSModules/Reporting/Controls/DisplayReport.ascx");
        IDisplayReport ucDisplayReport = control as IDisplayReport;

        if (ucDisplayReport == null)
        {
            return;
        }
        pnlDisplayReport.Controls.Add(control);

        // Social media insights do not provide hourly reports
        ucGraphType.VisibleGraphTypes = "year;month;week;day";
        ucGraphType.ProcessChartSelectors(false);

        // Choose a report using the current graph type
        string reportName = ucGraphType.GetReportName(ReportCodeNames);

        ucDisplayReport.ReportName = reportName;
        if (!ucDisplayReport.IsReportLoaded())
        {
            ShowError(String.Format(GetString("Analytics_Report.ReportDoesnotExist"), HTMLHelper.HTMLEncode(reportName)));
        }
        else
        {
            ucDisplayReport.LoadFormParameters   = false;
            ucDisplayReport.DisplayFilter        = false;
            ucDisplayReport.ReportParameters     = CreateReportParameters();
            ucDisplayReport.GraphImageWidth      = 100;
            ucDisplayReport.IgnoreWasInit        = true;
            ucDisplayReport.UseExternalReload    = true;
            ucDisplayReport.UseProgressIndicator = true;
            ucDisplayReport.SelectedInterval     = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval);

            ucDisplayReport.ReloadData(true);
        }
    }
Example #6
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);
    }
    /// <summary>
    /// Display report
    /// </summary>
    /// <param name="reload">If true, display report control is reloaded</param>
    private void DisplayReport(bool reload)
    {
        if (mReportLoaded)
        {
            return;
        }

        // Set repors name
        const string CONVERSION_COUNT        = "mvtestconversioncount.yearreport;mvtestconversioncount.monthreport;mvtestconversioncount.weekreport;mvtestconversioncount.dayreport;mvtestconversioncount.hourreport";
        const string CONVERSION_RATE         = "mvtestconversionrate.yearreport;mvtestconversionrate.monthreport;mvtestconversionrate.weekreport;mvtestconversionrate.dayreport;mvtestconversionrate.hourreport";
        const string CONVERSION_VALUE        = "mvtestconversionvalue.yearreport;mvtestconversionvalue.monthreport;mvtestconversionvalue.weekreport;mvtestconversionvalue.dayreport;mvtestconversionvalue.hourreport";
        const string CONVERSION_COMBINATIONS = "mvtestconversionsbycombinations.yearreport;mvtestconversionsbycombinations.monthreport;mvtestconversionsbycombinations.weekreport;mvtestconversionsbycombinations.dayreport;mvtestconversionsbycombinations.hourreport";

        pnlCombination.Visible = false;
        // Set proper report name
        if (rbCount.Checked)
        {
            mUcDisplayReport.ReportName = ucGraphType.GetReportName(CONVERSION_COUNT);
        }

        if (rbRate.Checked)
        {
            mUcDisplayReport.ReportName = ucGraphType.GetReportName(CONVERSION_RATE);
        }

        if (rbValue.Checked)
        {
            mUcDisplayReport.ReportName = ucGraphType.GetReportName(CONVERSION_VALUE);
        }

        if (rbCombinations.Checked)
        {
            mUcDisplayReport.ReportName = ucGraphType.GetReportName(CONVERSION_COMBINATIONS);
            pnlCombination.Visible      = true;
        }

        // Conversion
        ucConversions.PostbackOnDropDownChange = true;
        ucConversions.MVTestName = mTestName;
        ucConversions.ReloadData(true);

        // Conversion
        String conversion = ValidationHelper.GetString(ucConversions.Value, String.Empty);

        if (conversion == ucConversions.AllRecordValue)
        {
            conversion = String.Empty;
        }

        // Combination
        String combination = ValidationHelper.GetString(usCombination.Value, String.Empty);

        if (combination == usCombination.AllRecordValue)
        {
            combination = String.Empty;
        }

        // General report data
        mUcDisplayReport.LoadFormParameters    = false;
        mUcDisplayReport.DisplayFilter         = false;
        mUcDisplayReport.GraphImageWidth       = 100;
        mUcDisplayReport.IgnoreWasInit         = true;
        mUcDisplayReport.TableFirstColumnWidth = Unit.Percentage(30);
        mUcDisplayReport.UseExternalReload     = true;
        mUcDisplayReport.UseProgressIndicator  = true;
        mUcDisplayReport.SelectedInterval      = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval);

        // Resolve report macros
        DataTable dtp = new DataTable();

        dtp.Columns.Add("FromDate", typeof(DateTime));
        dtp.Columns.Add("ToDate", typeof(DateTime));
        dtp.Columns.Add("CodeName", typeof(string));
        dtp.Columns.Add("MVTestName", typeof(string));
        dtp.Columns.Add("ConversionName", typeof(string));
        dtp.Columns.Add("CombinationName", typeof(string));

        object[] parameters = new object[6];
        parameters[0] = ucGraphType.From;
        parameters[1] = ucGraphType.To;
        parameters[2] = "pageviews";
        parameters[3] = mTestName;
        parameters[4] = conversion;
        parameters[5] = combination;

        dtp.Rows.Add(parameters);
        dtp.AcceptChanges();
        mUcDisplayReport.ReportParameters = dtp.Rows[0];

        if (reload)
        {
            mUcDisplayReport.ReloadData(true);
        }

        mReportLoaded = true;
    }
    /// <summary>
    /// Displays the given report
    /// </summary>
    private void DisplayReport()
    {
        // If report was already displayed .. return
        if (reportDisplayed)
        {
            return;
        }

        ucGraphType.ProcessChartSelectors(false);

        // Prepare report parameters
        DataTable reportParameters = new DataTable();

        // In case of hidden datetime -> for save purpose pass from (to) as now to query parameter
        DateTime from = ((ucGraphType.From == DateTimeHelper.ZERO_TIME) && !pnlHeader.Visible) ? DateTime.Now : ucGraphType.From;
        DateTime to   = ((ucGraphType.To == DateTimeHelper.ZERO_TIME) && !pnlHeader.Visible) ? DateTime.Now : ucGraphType.To;

        reportParameters.Columns.Add("FromDate", typeof(DateTime));
        reportParameters.Columns.Add("ToDate", typeof(DateTime));
        reportParameters.Columns.Add("CodeName", typeof(string));
        reportParameters.Columns.Add("CampaignName", typeof(string));
        reportParameters.Columns.Add("ConversionName", typeof(string));
        reportParameters.Columns.Add("Goal", typeof(string));
        reportParameters.Columns.Add("SiteID", typeof(int));

        object[] parameters = new object[7];

        parameters[0] = (mAllowNoTimeSelection && from == DateTimeHelper.ZERO_TIME) ? (DateTime?)null : from;
        parameters[1] = (mAllowNoTimeSelection && to == DateTimeHelper.ZERO_TIME) ? (DateTime?)null : to;
        parameters[2] = dataCodeName;
        parameters[3] = String.Empty;
        parameters[4] = String.Empty;
        parameters[5] = ucReportHeader.SelectedGoal;
        parameters[6] = ucReportHeader.SelectedSiteID;


        // Get report name from query
        String reportName = ucGraphType.GetReportName(reportCodeNames);

        // Filter campaign if any campaign selected
        string campaignName = ValidationHelper.GetString(ucReportHeader.SelectedCampaign, String.Empty);

        if ((campaignName != ucReportHeader.AllRecordValue) && (!String.IsNullOrEmpty(campaignName)))
        {
            parameters[3] = campaignName;
        }

        if (conversionID == 0)
        {
            // Filter conversion
            String conversionName = ValidationHelper.GetString(ucReportHeader.SelectedConversion, String.Empty);
            if ((conversionName != ucReportHeader.AllRecordValue) && (!String.IsNullOrEmpty(conversionName)))
            {
                parameters[4] = conversionName;
            }
        }
        else
        {
            ConversionInfo ci = ConversionInfoProvider.GetConversionInfo(conversionID);
            if (ci != null)
            {
                parameters[4] = ci.ConversionName;
                mDeleteParam  = "singleconversion;" + ci.ConversionName;
            }
        }

        reportParameters.Rows.Add(parameters);
        reportParameters.AcceptChanges();

        mUcDisplayReport.ReportName = reportName;

        // Set display report
        if (!mUcDisplayReport.IsReportLoaded())
        {
            ShowError(String.Format(GetString("Analytics_Report.ReportDoesnotExist"), HTMLHelper.HTMLEncode(reportName)));
        }
        else
        {
            mUcDisplayReport.LoadFormParameters   = false;
            mUcDisplayReport.DisplayFilter        = false;
            mUcDisplayReport.ReportParameters     = reportParameters.Rows[0];
            mUcDisplayReport.GraphImageWidth      = 100;
            mUcDisplayReport.IgnoreWasInit        = true;
            mUcDisplayReport.UseExternalReload    = true;
            mUcDisplayReport.UseProgressIndicator = true;
            mUcDisplayReport.SelectedInterval     = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval);
            mUcDisplayReport.ReloadData(true);
        }

        // Mark as report displayed
        reportDisplayed = true;
    }
Example #9
0
    protected override void OnPreRender(EventArgs e)
    {
        ucGraphType.ProcessChartSelectors(false);

        // Prepare report parameters
        DataTable dtp = new DataTable();

        dtp.Columns.Add("FromDate", typeof(DateTime));
        dtp.Columns.Add("ToDate", typeof(DateTime));
        dtp.Columns.Add("CodeName", typeof(string));
        dtp.Columns.Add("MVTestName", typeof(string));
        dtp.Columns.Add("ConversionName", typeof(string));

        object[] parameters = new object[5];

        parameters[0] = ucGraphType.From;
        parameters[1] = ucGraphType.To;
        parameters[2] = "mvtests";

        String reportName = ucGraphType.GetReportName("mvtests.yearreport;mvtests.monthreport;mvtests.weekreport;mvtests.dayreport;mvtests.hourreport");
        String conversionRateReportName = ucGraphType.GetReportName("mvtestsconversionrate.yearreport;mvtestsconversionrate.monthreport;mvtestsconversionrate.weekreport;mvtestsconversionrate.dayreport;mvtestsconversionrate.hourreport");
        String valuesReportName         = ucGraphType.GetReportName("mvtestsconversionvalue.yearreport;mvtestsconversionvalue.monthreport;mvtestsconversionvalue.weekreport;mvtestsconversionvalue.dayreport;mvtestsconversionvalue.hourreport");

        string MVTestName = ValidationHelper.GetString(ucMVTests.Value, String.Empty);

        if (MVTestName == ucMVTests.AllRecordValue)
        {
            MVTestName = String.Empty;
        }
        else if (!String.IsNullOrEmpty(MVTestName))
        {
            listElem.Grid.WhereCondition = SqlHelperClass.AddWhereCondition(listElem.Grid.WhereCondition, "MVTestName='" + SqlHelperClass.GetSafeQueryString(MVTestName, false) + "'");
        }

        switch (ucGraphType.SelectedInterval)
        {
        case HitsIntervalEnum.Hour:
            listElem.Grid.Query = "om.mvtest.selectwithhitsHours";
            break;

        case HitsIntervalEnum.Day:
            listElem.Grid.Query = "om.mvtest.selectwithhitsDays";
            break;

        case HitsIntervalEnum.Week:
            listElem.Grid.Query = "om.mvtest.selectwithhitsWeeks";
            break;

        case HitsIntervalEnum.Month:
            listElem.Grid.Query = "om.mvtest.selectwithhitsMonths";
            break;

        case HitsIntervalEnum.Year:
            listElem.Grid.Query = "om.mvtest.selectwithhitsYears";
            break;
        }

        listElem.Grid.QueryParameters = new QueryDataParameters();
        listElem.Grid.QueryParameters.Add("@From", ucGraphType.From);
        listElem.Grid.QueryParameters.Add("@To", ucGraphType.To.AddSeconds(1));

        listElem.Grid.Columns = "MVTestDisplayName,MVTestID,MVTestCulture,MVTestPage,MVTestOpenFrom,MVTestOpenTo,MVTestEnabled,MVTestConversions,MVTestSiteID,HitsValue";

        parameters[3] = MVTestName;
        parameters[4] = String.Empty;

        dtp.Rows.Add(parameters);
        dtp.AcceptChanges();

        ucDisplayReport.ReportName        = reportName;
        ucTestValuesReport.ReportName     = valuesReportName;
        ucConversionRateReport.ReportName = conversionRateReportName;

        // Conversion count
        if (!ucDisplayReport.IsReportLoaded())
        {
            ShowError(String.Format(GetString("Analytics_Report.ReportDoesnotExist"), reportName));
        }
        else
        {
            ucDisplayReport.LoadFormParameters   = false;
            ucDisplayReport.DisplayFilter        = false;
            ucDisplayReport.ReportParameters     = dtp.Rows[0];
            ucDisplayReport.GraphImageWidth      = 100;
            ucDisplayReport.IgnoreWasInit        = true;
            ucDisplayReport.UseExternalReload    = true;
            ucDisplayReport.UseProgressIndicator = true;
            ucDisplayReport.SelectedInterval     = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval);
            ucDisplayReport.ReloadData(true);
        }

        // Conversion value
        if (!ucTestValuesReport.IsReportLoaded())
        {
            ShowError(String.Format(GetString("Analytics_Report.ReportDoesnotExist"), valuesReportName));
        }
        else
        {
            ucTestValuesReport.LoadFormParameters   = false;
            ucTestValuesReport.DisplayFilter        = false;
            ucTestValuesReport.ReportParameters     = dtp.Rows[0];
            ucTestValuesReport.GraphImageWidth      = 50;
            ucTestValuesReport.AreaMaxWidth         = ucDisplayReport.AreaMaxWidth;
            ucTestValuesReport.IgnoreWasInit        = true;
            ucTestValuesReport.UseExternalReload    = true;
            ucTestValuesReport.UseProgressIndicator = true;
            ucTestValuesReport.SelectedInterval     = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval);
            ucTestValuesReport.ReloadData(true);
        }

        // Conversion rate
        if (!ucConversionRateReport.IsReportLoaded())
        {
            ShowError(String.Format(GetString("Analytics_Report.ReportDoesnotExist"), conversionRateReportName));
        }
        else
        {
            ucConversionRateReport.LoadFormParameters = false;
            ucConversionRateReport.DisplayFilter      = false;
            ucConversionRateReport.ReportParameters   = dtp.Rows[0];
            ucConversionRateReport.GraphImageWidth    = 50;
            ucConversionRateReport.AreaMaxWidth       = ucDisplayReport.AreaMaxWidth;
            ucTestValuesReport.UseExternalReload      = true;
            ucTestValuesReport.UseProgressIndicator   = true;
            ucConversionRateReport.IgnoreWasInit      = true;
            ucConversionRateReport.SelectedInterval   = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval);
            ucConversionRateReport.ReloadData(true);
        }

        base.OnPreRender(e);
    }
    /// <summary>
    /// Display report with given criteria.
    /// </summary>
    public void DisplayReport(bool intervalChanged)
    {
        // If load form parameters are loaded display report calls reload on onInit (time charts not allowed)
        if (LoadFormParameters)
        {
            return;
        }

        if (mReportLoaded)
        {
            return;
        }

        if (mUcDisplayReport == null)
        {
            return;
        }

        ucGraphTypePeriod.ProcessChartSelectors(intervalChanged);

        if (pnlPeriodSelectors.Visible && !IsValidInterval())
        {
            ShowError(GetString("analt.invalidinterval"));
            return;
        }

        mUcDisplayReport.ReportName      = ucGraphTypePeriod.GetReportName(ReportsCodeName);
        mUcDisplayReport.GraphImageWidth = 100;
        mUcDisplayReport.IgnoreWasInit   = true;

        if (pnlPeriodSelectors.Visible)
        {
            // Prepare report parameters
            DataTable dtp = new DataTable();

            dtp.Columns.Add("FromDate", typeof(DateTime));
            dtp.Columns.Add("ToDate", typeof(DateTime));
            dtp.Columns.Add("CodeName", typeof(string));
            dtp.Columns.Add("FirstCategory", typeof(string));
            dtp.Columns.Add("SecondCategory", typeof(string));
            dtp.Columns.Add("Direct", typeof(string));
            dtp.Columns.Add("Search", typeof(string));
            dtp.Columns.Add("Referring", typeof(string));

            object[] parameters = new object[8];

            parameters[0] = ucGraphTypePeriod.From;
            parameters[1] = ucGraphTypePeriod.To;
            parameters[2] = DataName;
            parameters[3] = HitLogProvider.VISITORS_FIRST;
            parameters[4] = HitLogProvider.VISITORS_RETURNING;
            parameters[5] = HitLogProvider.REFERRINGSITE + "_direct";
            parameters[6] = HitLogProvider.REFERRINGSITE + "_search";
            parameters[7] = HitLogProvider.REFERRINGSITE + "_referring";

            dtp.Rows.Add(parameters);
            dtp.AcceptChanges();

            if (!mUcDisplayReport.IsReportLoaded())
            {
                ShowError(String.Format(GetString("Analytics_Report.ReportDoesnotExist"), mUcDisplayReport.ReportName));
            }
            else
            {
                mUcDisplayReport.LoadFormParameters   = false;
                mUcDisplayReport.DisplayFilter        = false;
                mUcDisplayReport.ReportParameters     = dtp.Rows[0];
                mUcDisplayReport.UseExternalReload    = true;
                mUcDisplayReport.UseProgressIndicator = true;
                mUcDisplayReport.SelectedInterval     = HitsIntervalEnumFunctions.HitsConversionToString(SelectedInterval);
            }
        }

        mUcDisplayReport.ReloadData(true);
        mReportLoaded = true;
    }
Example #11
0
    protected override void OnPreRender(EventArgs e)
    {
        string dataCodeName = string.IsNullOrEmpty(ManageDataCodeName) ? QueryHelper.GetString("dataCodeName", string.Empty) : ManageDataCodeName;

        string deleteScript = string.Format("modalDialog('{0}?statcodename={1}','AnalyticsManageData',{2},{3});",
                                            ResolveUrl("~/CMSModules/Reporting/WebAnalytics/Analytics_ManageData.aspx"),
                                            dataCodeName,
                                            AnalyticsHelper.MANAGE_WINDOW_WIDTH,
                                            AnalyticsHelper.MANAGE_WINDOW_HEIGHT);

        string printScript = string.Format("myModalDialog('{0}?reportname={1}&parameters={2}&UILang={3}','PrintReport {1}',800,700);return false",
                                           ResolveUrl(PrintPageURL),
                                           ReportName,
                                           AnalyticsHelper.GetQueryStringParameters(ReportParameters),
                                           CultureInfo.CurrentUICulture.IetfLanguageTag);

        string subscriptionScript = String.Format("modalDialog('{0}?reportname={1}&parameters={2}&interval={3}','Subscription',{4},{5});return false",
                                                  ResolveUrl("~/CMSModules/Reporting/Dialogs/EditSubscription.aspx"),
                                                  ReportName,
                                                  AnalyticsHelper.GetQueryStringParameters(ReportParameters),
                                                  HitsIntervalEnumFunctions.HitsConversionToString(SelectedInterval),
                                                  AnalyticsHelper.SUBSCRIPTION_WINDOW_WIDTH,
                                                  AnalyticsHelper.SUBSCRIPTION_WINDOW_HEIGHT);

        string refreshScript = "function RefreshPage() {" + ControlsHelper.GetPostBackEventReference(this, "") + "};";

        ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "RefreshScript", ScriptHelper.GetScript(refreshScript));

        // Register special script for print window
        ScriptHelper.RegisterPrintDialogScript(Page);

        headerActions.PanelCssClass = PanelCssClass;

        // Create header actions
        SaveAction save = new SaveAction(Page);

        headerActions.ActionsList.Add(save);

        // Print
        HeaderAction print = new HeaderAction
        {
            ControlType   = HeaderActionTypeEnum.LinkButton,
            Text          = GetString("Analytics_Report.Print"),
            SmallImageUrl = GetImageUrl("General/printSmall.png"),
            OnClientClick = printScript
        };

        headerActions.ActionsList.Add(print);

        CurrentUserInfo cui = CMSContext.CurrentUser;

        // Manage data
        if (cui.IsAuthorizedPerResource("CMS.WebAnalytics", "ManageData") && DisplayManageData)
        {
            HeaderAction delete = new HeaderAction
            {
                ControlType   = HeaderActionTypeEnum.LinkButton,
                Text          = GetString("Analytics_Report.ManageData"),
                SmallImageUrl = GetImageUrl("CMSModules/CMS_Reporting/managedataSmall.png"),
                OnClientClick = deleteScript
            };
            headerActions.ActionsList.Add(delete);
        }

        // Report subscription enabled test
        GeneralizedInfo ri = ModuleCommands.ReportingGetReportInfo(ReportName);

        if (ri != null)
        {
            bool enableSubscription = ValidationHelper.GetBoolean(ri.GetValue("ReportEnableSubscription"), true);

            // Show enable subscription only for users with subscribe or modify.
            enableSubscription &= (cui.IsAuthorizedPerResource("cms.reporting", "subscribe") || cui.IsAuthorizedPerResource("cms.reporting", "modify"));

            if (enableSubscription)
            {
                // Subscription
                HeaderAction subscription = new HeaderAction
                {
                    ControlType   = HeaderActionTypeEnum.LinkButton,
                    Text          = GetString("notifications.subscribe"),
                    SmallImageUrl = GetImageUrl("CMSModules/CMS_Reporting/Subscription.png"),
                    OnClientClick = subscriptionScript
                };
                headerActions.ActionsList.Add(subscription);
            }
        }

        base.OnPreRender(e);
    }
    protected override void OnPreRender(EventArgs e)
    {
        var ui = MembershipContext.AuthenticatedUser;

        if (!ui.IsAuthorizedPerUIElement("CMS.Content", "Reports"))
        {
            RedirectToUIElementAccessDenied("CMS.Content", "Reports");
        }

        // Check read for web analytics
        if (!ui.IsAuthorizedPerResource("cms.webanalytics", "Read"))
        {
            RedirectToAccessDenied(String.Format(GetString("general.permissionresource"), "Read", "Web analytics"));
        }

        // Set disabled module info
        ucDisabledModule.ParentPanel = pnlDisabled;

        mUcDisplayReport = (IDisplayReport)LoadUserControl("~/CMSModules/Reporting/Controls/DisplayReport.ascx");
        pnlContent.Controls.Add((Control)mUcDisplayReport);

        ucGraphType.ProcessChartSelectors(false);
        CurrentMaster.PanelContent.CssClass = String.Empty;
        UIHelper.AllowUpdateProgress        = false;

        // General report data
        if (IsFilePageType(Node.NodeClassName))
        {
            reportTypePnl.Visible       = false;
            mUcDisplayReport.ReportName = "pagereports.file";
        }
        else
        {
            mUcDisplayReport.ReportName = rbContent.Checked ? "pagereports.content" : "pagereports.Traffic";
        }

        mUcDisplayReport.LoadFormParameters    = false;
        mUcDisplayReport.DisplayFilter         = false;
        mUcDisplayReport.GraphImageWidth       = 100;
        mUcDisplayReport.IgnoreWasInit         = true;
        mUcDisplayReport.TableFirstColumnWidth = Unit.Percentage(30);
        mUcDisplayReport.UseExternalReload     = true;
        mUcDisplayReport.UseProgressIndicator  = true;

        mUcDisplayReport.SetDefaultDynamicMacros((int)ucGraphType.SelectedInterval);

        EditedObject = Node;

        // Resolve report macros
        DataTable dtp = new DataTable();

        dtp.Columns.Add("FromDate", typeof(DateTime));
        dtp.Columns.Add("ToDate", typeof(DateTime));
        dtp.Columns.Add("CodeName", typeof(string));
        dtp.Columns.Add("NodeID", typeof(int));
        dtp.Columns.Add("CultureCode", typeof(string));

        object[] parameters = new object[5];
        parameters[0] = ucGraphType.From;
        parameters[1] = ucGraphType.To;
        parameters[2] = "pageviews";
        parameters[3] = Node.NodeID;
        parameters[4] = Node.DocumentCulture;

        dtp.Rows.Add(parameters);
        dtp.AcceptChanges();
        mUcDisplayReport.ReportParameters = dtp.Rows[0];
        mUcDisplayReport.SelectedInterval = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval);

        mUcDisplayReport.ReloadData(true);

        DocumentManager.RegisterSaveChangesScript = false;

        base.OnPreRender(e);
    }
    protected override void OnPreRender(EventArgs e)
    {
        string dataCodeName = string.IsNullOrEmpty(ManageDataCodeName) ? QueryHelper.GetString("dataCodeName", string.Empty) : ManageDataCodeName;

        string deleteDialogUrl = ResolveUrl("~/CMSModules/Reporting/WebAnalytics/Analytics_ManageData.aspx");

        deleteDialogUrl = URLHelper.AddParameterToUrl(deleteDialogUrl, "statcodename", URLHelper.URLEncode(dataCodeName));
        deleteDialogUrl = URLHelper.AddParameterToUrl(deleteDialogUrl, "hash", QueryHelper.GetHash(deleteDialogUrl));

        string deleteScript = string.Format("modalDialog('{0}','AnalyticsManageData',{1},{2});", deleteDialogUrl, 680, 350);

        string printDialogUrl = string.Format("{0}?reportname={1}&parameters={2}",
                                              ResolveUrl(PrintPageURL),
                                              ReportName,
                                              AnalyticsHelper.GetQueryStringParameters(ReportParameters));

        string printScript = string.Format("myModalDialog('{0}&UILang={1}&hash={2}','PrintReport {3}',800,700);return false",
                                           printDialogUrl,
                                           CultureInfo.CurrentUICulture.IetfLanguageTag,
                                           QueryHelper.GetHash(printDialogUrl),
                                           ReportName);

        string subscriptionScript = String.Format("modalDialog('{0}?reportname={1}&parameters={2}&interval={3}','Subscription',{4},{5});return false",
                                                  ResolveUrl("~/CMSModules/Reporting/Dialogs/EditSubscription.aspx"),
                                                  ReportName,
                                                  AnalyticsHelper.GetQueryStringParameters(ReportParameters),
                                                  HitsIntervalEnumFunctions.HitsConversionToString(SelectedInterval),
                                                  AnalyticsHelper.SUBSCRIPTION_WINDOW_WIDTH,
                                                  AnalyticsHelper.SUBSCRIPTION_WINDOW_HEIGHT);

        string refreshScript = "function RefreshPage() {" + ControlsHelper.GetPostBackEventReference(this, "") + "};";

        ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "RefreshScript", ScriptHelper.GetScript(refreshScript));

        // Register special script for print window
        ScriptHelper.RegisterPrintDialogScript(Page);

        ScriptHelper.RegisterDialogScript(Page);

        headerActions.PanelCssClass = PanelCssClass;

        // Create header actions
        SaveAction save = new SaveAction(Page);

        headerActions.ActionsList.Add(save);

        // Print
        HeaderAction print = new HeaderAction
        {
            Text          = GetString("Analytics_Report.Print"),
            OnClientClick = printScript,
            Enabled       = PrintEnabled,
            ButtonStyle   = ButtonStyle.Default,
        };

        headerActions.ActionsList.Add(print);

        var cui = MembershipContext.AuthenticatedUser;

        // Manage data
        if (cui.IsAuthorizedPerResource("CMS.WebAnalytics", "ManageData") && DisplayManageData)
        {
            HeaderAction delete = new HeaderAction
            {
                Text          = GetString("Analytics_Report.ManageData"),
                OnClientClick = deleteScript,
                ButtonStyle   = ButtonStyle.Default,
            };
            headerActions.ActionsList.Add(delete);
        }

        // Report subscription enabled test
        GeneralizedInfo ri = BaseAbstractInfoProvider.GetInfoByName(PredefinedObjectType.REPORT, ReportName);

        if (ri != null)
        {
            bool enableSubscription = ValidationHelper.GetBoolean(ri.GetValue("ReportEnableSubscription"), true);

            // Show enable subscription only for users with subscribe or modify.
            enableSubscription &= (cui.IsAuthorizedPerResource("cms.reporting", "subscribe") || cui.IsAuthorizedPerResource("cms.reporting", "modify"));

            if (enableSubscription)
            {
                // Subscription
                HeaderAction subscription = new HeaderAction
                {
                    Text          = GetString("notifications.subscribe"),
                    OnClientClick = subscriptionScript,
                    ButtonStyle   = ButtonStyle.Default,
                };
                headerActions.ActionsList.Add(subscription);
            }
        }

        base.OnPreRender(e);
    }
Example #14
0
    protected override void OnPreRender(EventArgs e)
    {
        ucGraphType.ProcessChartSelectors(false);

        // Prepare report parameters
        DataTable dtp = new DataTable();

        dtp.Columns.Add("FromDate", typeof(DateTime));
        dtp.Columns.Add("ToDate", typeof(DateTime));
        dtp.Columns.Add("CodeName", typeof(string));
        dtp.Columns.Add("TestName", typeof(string));
        dtp.Columns.Add("ConversionName", typeof(string));

        object[] parameters = new object[5];

        parameters[0] = ucGraphType.From;
        parameters[1] = ucGraphType.To;
        parameters[2] = "abtests";
        parameters[3] = String.Empty;
        parameters[4] = String.Empty;

        String reportName = ucGraphType.GetReportName("abtests.yearreport;abtests.monthreport;abtests.weekreport;abtests.dayreport;abtests.hourreport");
        String conversionRateReportName = ucGraphType.GetReportName("abtestconversionrate.yearreport;abtestconversionrate.monthreport;abtestconversionrate.weekreport;abtestconversionrate.dayreport;abtestconversionrate.hourreport");
        String valuesReportName         = ucGraphType.GetReportName("abtestsvalue.yearreport;abtestsvalue.monthreport;abtestsvalue.weekreport;abtestsvalue.dayreport;abtestsvalue.hourreport");

        string ABTestName = ValidationHelper.GetString(ucABTests.Value, String.Empty);

        if ((ABTestName != ucABTests.AllRecordValue) && (!String.IsNullOrEmpty(ABTestName)))
        {
            parameters[3] = ABTestName;

            listElem.Grid.WhereCondition = SqlHelperClass.AddWhereCondition(listElem.Grid.WhereCondition, "ABTestName='" + SqlHelperClass.GetSafeQueryString(ABTestName, false) + "'");
            listElem.Grid.ReloadData();
        }

        dtp.Rows.Add(parameters);
        dtp.AcceptChanges();

        ucDisplayReport.ReportName        = reportName;
        ucTestValuesReport.ReportName     = valuesReportName;
        ucConversionRateReport.ReportName = conversionRateReportName;

        // Conversion count
        if (!ucDisplayReport.IsReportLoaded())
        {
            lblErrorConversions.Visible = true;
            lblErrorConversions.Text    = String.Format(GetString("Analytics_Report.ReportDoesnotExist"), reportName);
        }
        else
        {
            ucDisplayReport.LoadFormParameters   = false;
            ucDisplayReport.DisplayFilter        = false;
            ucDisplayReport.ReportParameters     = dtp.Rows[0];
            ucDisplayReport.GraphImageWidth      = 100;
            ucDisplayReport.IgnoreWasInit        = true;
            ucDisplayReport.UseExternalReload    = true;
            ucDisplayReport.UseProgressIndicator = true;
            ucDisplayReport.SelectedInterval     = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval);
            ucDisplayReport.ReloadData(true);
        }

        // Conversion value
        if (!ucTestValuesReport.IsReportLoaded())
        {
            lblErrorValues.Visible = true;
            lblErrorValues.Text    = String.Format(GetString("Analytics_Report.ReportDoesnotExist"), valuesReportName);
        }
        else
        {
            ucTestValuesReport.LoadFormParameters   = false;
            ucTestValuesReport.DisplayFilter        = false;
            ucTestValuesReport.ReportParameters     = dtp.Rows[0];
            ucTestValuesReport.GraphImageWidth      = 50;
            ucTestValuesReport.AreaMaxWidth         = ucDisplayReport.AreaMaxWidth;
            ucTestValuesReport.IgnoreWasInit        = true;
            ucTestValuesReport.UseExternalReload    = true;
            ucTestValuesReport.UseProgressIndicator = true;
            ucTestValuesReport.SelectedInterval     = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval);
            ucTestValuesReport.ReloadData(true);
        }

        // Conversion rate
        if (!ucConversionRateReport.IsReportLoaded())
        {
            lblErrorRate.Visible = true;
            lblErrorRate.Text    = String.Format(GetString("Analytics_Report.ReportDoesnotExist"), conversionRateReportName);
        }
        else
        {
            ucConversionRateReport.LoadFormParameters   = false;
            ucConversionRateReport.DisplayFilter        = false;
            ucConversionRateReport.ReportParameters     = dtp.Rows[0];
            ucConversionRateReport.GraphImageWidth      = 50;
            ucConversionRateReport.AreaMaxWidth         = ucDisplayReport.AreaMaxWidth;
            ucConversionRateReport.UseExternalReload    = true;
            ucConversionRateReport.UseProgressIndicator = true;
            ucConversionRateReport.IgnoreWasInit        = true;
            ucConversionRateReport.SelectedInterval     = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval);
            ucConversionRateReport.ReloadData(true);
        }

        base.OnPreRender(e);
    }
    /// <summary>
    /// Display report
    /// </summary>
    /// <param name="reload">If true, display report control is reloaded</param>
    private void DisplayReport(bool reload)
    {
        if (reportLoaded)
        {
            return;
        }

        String siteName = CMSContext.CurrentSiteName;

        // Set reports name
        String conversionCount       = "abtestconversioncount.yearreport;abtestconversioncount.monthreport;abtestconversioncount.weekreport;abtestconversioncount.dayreport;abtestconversioncount.hourreport";
        String conversionRate        = "abtestdetailconversionrate.yearreport;abtestdetailconversionrate.monthreport;abtestdetailconversionrate.weekreport;abtestdetailconversionrate.dayreport;abtestdetailconversionrate.hourreport";
        String conversionValue       = "abtestconversionvalue.yearreport;abtestconversionvalue.monthreport;abtestconversionvalue.weekreport;abtestconversionvalue.dayreport;abtestconversionvalue.hourreport";
        String conversionSourcePages = "abtestconversionsource.yearreport;abtestconversionsource.monthreport;abtestconversionsource.weekreport;abtestconversionsource.dayreport;abtestconversionsource.hourreport";
        String conversionVariant     = "abtestconversionsbyvariations.yearreport;abtestconversionsbyvariations.monthreport;abtestconversionsbyvariations.weekreport;abtestconversionsbyvariations.dayreport;abtestconversionsbyvariations.hourreport";

        pnlVariant.Visible = false;

        if (rbCount.Checked)
        {
            CheckWebAnalyticsUI("ABTest.ConversionsCount");
            ucDisplayReport.ReportName = ucGraphType.GetReportName(conversionCount);
        }

        if (rbRate.Checked)
        {
            CheckWebAnalyticsUI("ABTest.ConversionsRate");
            ucDisplayReport.ReportName = ucGraphType.GetReportName(conversionRate);
        }

        if (rbValue.Checked)
        {
            CheckWebAnalyticsUI("ABTest.ConversionsValue");
            ucDisplayReport.ReportName = ucGraphType.GetReportName(conversionValue);
        }

        if (rbSourcePages.Checked)
        {
            CheckWebAnalyticsUI("ABTest.ConversionsSourcePages");
            ucDisplayReport.ReportName = ucGraphType.GetReportName(conversionSourcePages);
        }

        if (rbVariants.Checked)
        {
            CheckWebAnalyticsUI("ABTest.ConversionsByVariations");
            pnlVariant.Visible         = true;
            ucDisplayReport.ReportName = ucGraphType.GetReportName(conversionVariant);
        }

        // Conversion
        ucConversions.PostbackOnDropDownChange = true;
        ucConversions.ABTestName = testName;
        ucConversions.ReloadData(true);

        String conversion = ValidationHelper.GetString(ucConversions.Value, String.Empty);

        if (conversion == ucConversions.AllRecordValue)
        {
            conversion = String.Empty;
        }

        // General report data
        ucDisplayReport.LoadFormParameters    = false;
        ucDisplayReport.DisplayFilter         = false;
        ucDisplayReport.GraphImageWidth       = 100;
        ucDisplayReport.IgnoreWasInit         = true;
        ucDisplayReport.TableFirstColumnWidth = Unit.Percentage(30);
        ucDisplayReport.UseExternalReload     = true;
        ucDisplayReport.UseProgressIndicator  = true;
        ucDisplayReport.SelectedInterval      = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval);

        // Resolve report macros
        DataTable dtp = new DataTable();

        dtp.Columns.Add("FromDate", typeof(DateTime));
        dtp.Columns.Add("ToDate", typeof(DateTime));
        dtp.Columns.Add("CodeName", typeof(string));
        dtp.Columns.Add("TestName", typeof(string));
        dtp.Columns.Add("ConversionName", typeof(string));
        dtp.Columns.Add("VariationName", typeof(string));

        object[] parameters = new object[6];
        parameters[0] = ucGraphType.From;
        parameters[1] = ucGraphType.To;
        parameters[2] = "pageviews";
        parameters[3] = testName;
        parameters[4] = conversion;
        parameters[5] = ValidationHelper.GetString(ucSelectVariation.Value, String.Empty);

        dtp.Rows.Add(parameters);
        dtp.AcceptChanges();
        ucDisplayReport.ReportParameters = dtp.Rows[0];

        if (reload)
        {
            ucDisplayReport.ReloadData(true);
        }

        reportLoaded = true;
    }
    /// <summary>
    /// Displays the report
    /// </summary>
    /// <param name="reload">If true display reload control is reloaded</param>
    private void DisplayReport(bool reload)
    {
        ucGraphType.ProcessChartSelectors(false);

        // Prepare report parameters
        DataTable dtp = new DataTable();

        dtp.Columns.Add("FromDate", typeof(DateTime));
        dtp.Columns.Add("ToDate", typeof(DateTime));
        dtp.Columns.Add("CodeName", typeof(string));
        dtp.Columns.Add("MVTestName", typeof(string));
        dtp.Columns.Add("ConversionName", typeof(string));
        dtp.Columns.Add("CombinationName", typeof(string));

        object[] parameters = new object[6];

        parameters[0] = ucGraphType.From;
        parameters[1] = ucGraphType.To;
        parameters[2] = "";
        parameters[3] = ValidationHelper.GetString(ucMVTests.Value, String.Empty);

        // Conversion
        String conversion = ValidationHelper.GetString(ucConversions.Value, String.Empty);

        if (conversion == ucConversions.AllRecordValue)
        {
            conversion = String.Empty;
        }

        parameters[4] = ValidationHelper.GetString(conversion, String.Empty);

        // Combination
        String combination = ValidationHelper.GetString(usCombination.Value, String.Empty);

        if (combination == usCombination.AllRecordValue)
        {
            combination = String.Empty;
        }

        parameters[5] = ValidationHelper.GetString(combination, String.Empty);

        dtp.Rows.Add(parameters);
        dtp.AcceptChanges();

        string reportName = ucGraphType.GetReportName(QueryHelper.GetString("reportCodeName", String.Empty));

        // Hide show selectors by report name
        if (reportName.Contains("mvtestconversionsbycombinations"))
        {
            pnlConversion.Visible = false;
        }
        else
        {
            pnlCultures.Visible    = false;
            pnlCombination.Visible = false;
        }

        // Load conversion by mvt code name
        if (pnlConversion.Visible)
        {
            ucConversions.MVTestName = ValidationHelper.GetString(ucMVTests.Value, String.Empty);
            ucConversions.PostbackOnDropDownChange = true;
            ucConversions.ReloadData(true);
        }

        // Load combination by mvt name
        if (pnlCombination.Visible)
        {
            string name = ValidationHelper.GetString(ucMVTests.Value, String.Empty);
            if ((name != String.Empty) && (name != ucMVTests.AllRecordValue))
            {
                string cultureWhere = String.Empty;
                string siteName     = CMSContext.CurrentSiteName;

                MVTestInfo mvt = MVTestInfoProvider.GetMVTestInfo(name, siteName);
                if (mvt != null)
                {
                    string culture = ValidationHelper.GetString(usCulture.Value, String.Empty);
                    if ((culture != String.Empty) && (culture != usCulture.AllRecordValue))
                    {
                        cultureWhere = " AND DocumentCulture = '" + culture.Replace("'", "''") + "'";
                    }

                    // Get the used page template column
                    string colName = "DocumentPageTemplateID";

                    PageInfo pi = PageInfoProvider.GetPageInfo(siteName, mvt.MVTestPage, culture, null, SiteInfoProvider.CombineWithDefaultCulture(siteName));
                    if (pi != null)
                    {
                        colName = pi.GetUsedPageTemplateIdColumn();
                    }

                    // Prepare where condition
                    string where = String.Format("MVTCombinationPageTemplateID IN (SELECT {0} FROM View_CMS_Tree_Joined WHERE NodeSiteID = {1} AND NodeAliasPath ='{2}'{3})", colName, CMSContext.CurrentSiteID, mvt.MVTestPage, cultureWhere);

                    usCombination.WhereCondition = SqlHelperClass.AddWhereCondition(usCombination.WhereCondition, where);
                    usCombination.ReloadData(true);
                }
            }
        }

        // Set report
        ucDisplayReport.ReportName = reportName;

        if (!ucDisplayReport.IsReportLoaded())
        {
            ShowError(String.Format(GetString("Analytics_Report.ReportDoesnotExist"), reportName));
        }
        else
        {
            ucDisplayReport.LoadFormParameters   = false;
            ucDisplayReport.DisplayFilter        = false;
            ucDisplayReport.ReportParameters     = dtp.Rows[0];
            ucDisplayReport.GraphImageWidth      = 100;
            ucDisplayReport.IgnoreWasInit        = true;
            ucDisplayReport.UseExternalReload    = true;
            ucDisplayReport.UseProgressIndicator = true;
            ucDisplayReport.SelectedInterval     = HitsIntervalEnumFunctions.HitsConversionToString(ucGraphType.SelectedInterval);

            // Reload data only if parameter is set
            if (reload)
            {
                ucDisplayReport.ReloadData(true);
            }
        }
    }