/// <summary> /// Loads summary box in the right upper corner. /// </summary> private void LoadSummaryBox() { lnkTest.HRef = DocumentURLProvider.GetUrl(ABTest.ABTestOriginalPage); lnkTest.InnerText = ShortenUrl(ABTest.ABTestOriginalPage, MAX_LINK_LENGTH); lnkTest.Target = "_blank"; // If Visitors conversion methodology selected, use "Visitors" instead of "Visits" if (drpCountingMethodology.SelectedValue == "absessionconversionfirst") { lblVisits.ResourceString = "abtesting.overview.summary.visitors"; } lblStatus.Text = ABTestStatusEvaluator.GetFormattedStatus(TestStatus).ToString(); int visits = VariantsStatisticsData.Sum(d => d.Value.Visits); int conversions = VariantsStatisticsData.Sum(d => d.Value.ConversionsCount); lblTotalVisitors.Text = String.Format("{0:N0}", visits); lblTotalConversions.Text = String.Format("{0:N0}", conversions); if (TestStatus == ABTestStatusEnum.Finished) { txtDuration.ResourceString = "abtesting.daysrun"; } DateTime start = ABTest.ABTestOpenFrom; DateTime finish = GetFinishDateOrToday(); lblDuration.Text = (finish - start).Days.ToString(); }
/// <summary> /// Loads summary box in the right upper corner. /// </summary> private void LoadSummaryBox() { var selectionParameters = new NodeSelectionParameters { AliasPath = ABTest.ABTestOriginalPage, CultureCode = ABTest.ABTestCulture, SiteName = SiteContext.CurrentSiteName, SelectOnlyPublished = true, CombineWithDefaultCulture = false }; var node = new TreeProvider().SelectSingleNode(selectionParameters); var shortUrl = ShortenUrl(ABTest.ABTestOriginalPage); var encodedShortUrl = HTMLHelper.HTMLEncode(shortUrl); if (node == null) { lblTest.Text = encodedShortUrl; lblTest.Visible = true; } else { lnkTest.HRef = DocumentURLProvider.GetAbsoluteLiveSiteURL(node); lnkTest.InnerText = encodedShortUrl; lnkTest.Target = "_blank"; lnkTest.Visible = true; } // If Visitors conversion methodology selected, use "Visitors" instead of "Visits" if (drpCountingMethodology.SelectedValue == ABTestConstants.ABSESSIONCONVERSION_FIRST) { lblVisits.ResourceString = "abtesting.overview.summary.visitors"; } lblStatus.Text = ABTestStatusEvaluator.GetFormattedStatus(TestStatus).ToString(); int visits = VariantsStatisticsData.Sum(d => d.Value.Visits); int conversions = VariantsStatisticsData.Sum(d => d.Value.ConversionsCount); lblTotalVisitors.Text = String.Format("{0:N0}", visits); lblTotalConversions.Text = String.Format("{0:N0}", conversions); if (TestStatus == ABTestStatusEnum.Finished) { txtDuration.ResourceString = "abtesting.daysrun"; } DateTime start = ABTest.ABTestOpenFrom; DateTime finish = GetFinishDate(); lblDuration.Text = (finish - start).Days.ToString(); }
private void InitializeGridAction(CMSAccessibleButtonBase action, Guid variantGuid) { if (action == null) { return; } var winner = GetTestWinner(); if (winner == null) { // Check permissions to select winner if (!UserHasPermissions) { action.Enabled = false; action.ToolTip = GetString("abtesting.selectwinner.permission.tooltip"); } else if (!ABTestStatusEvaluator.ABTestIsFinished(ABTest)) { action.Enabled = false; action.ToolTip = GetString("abtesting.selectwinner.testnotfinished.tooltip"); } else if (!DocumentManager.AllowSave) { action.Enabled = false; action.ToolTip = GetString("abtesting.selectwinner.underworkflow.tooltip"); } } else { if (variantGuid == winner.ABVariantGUID) { // Disable action image for the winning variant action.Enabled = false; action.Text = ResHelper.GetString("abtesting.winner"); action.ToolTip = ResHelper.GetString("abtesting.winningvariantselected.tooltip"); } else { // Hide action image for other variants action.Visible = false; } } }
/// <summary> /// Shows warning image on invalid filter combination. /// Invalid filter combination is "All conversion goals" and "Conversion rate". /// </summary> private void ShowInvalidFilterCombinationWarning() { // Do not show for not started test if (ABTestStatusEvaluator.ABTestNotStarted(TestStatus)) { return; } // Do not show on first load if (!RequestHelper.IsPostBack()) { return; } if ((ValidationHelper.GetString(drpConversions.SelectedValue, "") == "") && (drpSuccessMetric.SelectedValue == METRIC_CONVERSION_RATE)) { ShowWarning(GetString("abtesting.invalidfiltercombination")); } }
/// <summary> /// Loads data into Unigrid. /// </summary> private void LoadData() { var whereCondition = new WhereCondition(); if (!String.IsNullOrEmpty(AliasPath)) { whereCondition.WhereEquals("ABTestOriginalPage", AliasPath); } DataSet abTests = ABTestInfoProvider.GetABTests().OnSite(SiteContext.CurrentSiteID).Where(whereCondition); abTests.Tables[0].Columns.Add("ABTestStatus", typeof(int)); foreach (DataRow abTestDataRow in abTests.Tables[0].Rows) { abTestDataRow["ABTestStatus"] = (int)ABTestStatusEvaluator.GetStatus(new ABTestInfo(abTestDataRow)); } gridElem.DataSource = abTests; }
/// <summary> /// Handles Unigrid's OnExternalDataBound event. /// </summary> protected object gridElem_OnExternalDataBound(object sender, string sourceName, object parameter) { string param = parameter.ToString(); switch (sourceName.ToLowerCSafe()) { case "status": { ABTestStatusEnum status; if (Enum.TryParse(param, out status)) { return(ABTestStatusEvaluator.GetFormattedStatus(status)); } break; } case "page": return(new HyperLink { NavigateUrl = DocumentURLProvider.GetUrl(param), Text = HTMLHelper.HTMLEncode(param), Target = "_blank" }); case "visitors": case "conversions": { string statisticsCodeName = (sourceName.ToLowerCSafe() == "visitors" ? "abvisitfirst" : "absessionconversionfirst"); ABTestInfo abTestInfo = ABTestInfoProvider.GetABTestInfo(param, SiteContext.CurrentSiteName); if (abTestInfo != null) { return(ValidationHelper.GetInteger(HitsInfoProvider.GetAllHitsInfo(SiteContext.CurrentSiteID, HitsIntervalEnum.Year, statisticsCodeName + ";" + abTestInfo.ABTestName + ";%", "SUM(HitsCount)", abTestInfo.ABTestCulture).Tables[0].Rows[0][0], 0)); } return(0); } } return(null); }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); Controls.Add(DocumentManager as CMSDocumentManager); MessagesWriter.ShowABTestScheduleInformation(ABTest, TestStatus); MessagesWriter.ShowMissingVariantsTranslationsWarning(ABTest); RegisterScripts(); InitializeSelectors(); SetSelectorValues(); EnsureVariantsStatisticsData(); // Display test winner if there is one var winner = GetTestWinner(); if (winner != null) { DisplayWinnerInformation(winner); } else { ShowPromoteWinnerInfoMessage(); } // Hide summary and table if the test has not been started yet if (ABTestStatusEvaluator.ABTestNotStarted(TestStatus)) { Filter.Visible = false; Report.Visible = false; Summary.Visible = false; } else if (DataAvailable(VariantsStatisticsData.Values, drpSuccessMetric.SelectedValue)) { // Show all information after graph do postback if (RequestHelper.IsPostBack()) { Summary.Visible = true; Report.Visible = true; // Hide NoDataFound panel pnlNoData.Visible = false; } } else { // -> Test is executed, but no results are present // Hide summary Summary.Visible = false; // Show report and NoDataFound panel Report.Visible = true; pnlNoData.Visible = true; } LoadSummaryBox(); InitializeGraph(); InitializeGrid(); SetImprovementColumnCaption(); ShowInvalidFilterCombinationWarning(); }
/// <summary> /// Handles Unigrid's OnExternalDataBound event. /// </summary> protected object gridElem_OnExternalDataBound(object sender, string sourceName, object parameter) { switch (sourceName.ToLowerInvariant()) { case "status": { if (Enum.TryParse(parameter.ToString(), out ABTestStatusEnum status)) { return(ABTestStatusEvaluator.GetFormattedStatus(status)); } break; } case "page": { var dataRowView = parameter as DataRowView; if (dataRowView == null) { return(String.Empty); } var abTestInfo = new ABTestInfo(dataRowView.Row); var selectionParameters = new NodeSelectionParameters { AliasPath = abTestInfo.ABTestOriginalPage, CultureCode = abTestInfo.ABTestCulture, SiteName = SiteContext.CurrentSiteName, SelectOnlyPublished = true, CombineWithDefaultCulture = !SiteContext.CurrentSite.SiteIsContentOnly }; var node = new TreeProvider().SelectSingleNode(selectionParameters); var encodedTestPage = HTMLHelper.HTMLEncode(abTestInfo.ABTestOriginalPage); return(node == null ? (object)encodedTestPage : new HyperLink { NavigateUrl = DocumentURLProvider.GetAbsoluteLiveSiteURL(node), Text = encodedTestPage, Target = "_blank" }); } case "visitors": case "conversions": { string statisticsCodeName = (sourceName.ToLowerInvariant() == "visitors" ? "abvisitfirst" : "absessionconversionfirst"); var dataRowView = parameter as DataRowView; if (dataRowView == null) { return(0); } var abTestInfo = new ABTestInfo(dataRowView.Row); return(ValidationHelper.GetInteger(HitsInfoProvider.GetAllHitsInfo(SiteContext.CurrentSiteID, HitsIntervalEnum.Year, statisticsCodeName + ";" + abTestInfo.ABTestName + ";%", "SUM(HitsCount)", abTestInfo.ABTestCulture).Tables[0].Rows[0][0], 0)); } case "delete": CMSGridActionButton btn = (CMSGridActionButton)sender; btn.Enabled = IsAuthorizedToManage; if (!IsAuthorizedToManage) { btn.ToolTip = permissionsRequiredTooltip; } break; } return(null); }