示例#1
0
        private static TagBuilder FormTdData(object o, ReportTableColumn reportTableColumn)
        {
            var td   = new TagBuilder("td");
            var val  = GetValue(o, reportTableColumn);
            var text = GetText(val, reportTableColumn);

            if (reportTableColumn.DataType == DataType.Amount || reportTableColumn.DataType == DataType.Percents || reportTableColumn.DataType == DataType.IntNumber || reportTableColumn.DataType == DataType.Time || reportTableColumn.DataType == DataType.TimeInSeconds)
            {
                td.AddCssClass("numberTd");
            }
            if (reportTableColumn.ImageProvider != null)
            {
                var imgPath = reportTableColumn.ImageProvider.GetImagePath(val);
                if (!string.IsNullOrEmpty(imgPath))
                {
                    var img = new TagBuilder("img");
                    img.Attributes.Add("src", imgPath);
                    img.Attributes.Add("width", "16px");
                    img.Attributes.Add("height", "16px");
                    td.InnerHtml += img;
                }
            }
            td.InnerHtml += text;
            return(td);
        }
示例#2
0
        private static void SetAdditonalFormat(Cell cell, ReportTableColumn column)
        {
            var style = cell.GetStyle();

            switch (column.DataType)
            {
            case DataType.Overall:
            case DataType.Amount:
            case DataType.Time:
            case DataType.TimeInSeconds:
                break;

            case DataType.IntNumber:
                style.Number = 0;
                break;

            case DataType.Percents:
                style.Number = 10;
                break;

            case DataType.Date:
                style.Number = 14;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            cell.SetStyle(style);
        }
示例#3
0
        private static TagBuilder CreateColumn(ReportTableColumn reportTableColumn)
        {
            var th = new TagBuilder("th");

            //th.AddCssClass("reportTableHeader");
            th.InnerHtml += reportTableColumn.Caption;
            return(th);
        }
示例#4
0
        private static object GetText(object val, ReportTableColumn reportTableColumn)
        {
            string text = "";

            if (val != null)
            {
                switch (reportTableColumn.DataType)
                {
                case DataType.Overall:
                    text = val.ToString();
                    break;

                case DataType.Time:
                    var dt = new TimeSpan((long)val);
                    text = string.Format("{0}:{1}", dt.TotalHours, dt.Minutes);
                    break;

                case DataType.TimeInSeconds:
                    var      seconds = (long)val;
                    TimeSpan ts      = TimeSpan.FromSeconds(seconds);
                    text = string.Format("{0:00}:{1:00}:{2:00}", (int)ts.TotalHours, ts.Minutes, ts.Seconds);
                    break;

                case DataType.Amount:
                    var format = "N2";
                    if (!string.IsNullOrEmpty(reportTableColumn.Format))
                    {
                        format = reportTableColumn.Format;
                    }
                    text = ((double)val).ToString(format, CultureInfo.InvariantCulture);
                    break;

                case DataType.IntNumber:
                    text = ((int)val).ToString(CultureInfo.InvariantCulture);
                    break;

                case DataType.Count:
                    if (!string.IsNullOrEmpty(reportTableColumn.Format))
                    {
                        format = reportTableColumn.Format;
                    }
                    text = ((int)val).ToString(CultureInfo.InvariantCulture);
                    break;

                case DataType.Percents:
                    text = string.Format("{0}%", ((decimal)val * 100).ToString("0.00"));
                    break;

                case DataType.Date:
                    text = ((DateTime)val).ToShortDateString();
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            return(text);
        }
示例#5
0
        private static object GetValue(object o, ReportTableColumn reportTableColumn)
        {
            if (reportTableColumn.FieldValue != null)
            {
                return(reportTableColumn.FieldValue(o));
            }
            var p = o.GetType().GetProperty(reportTableColumn.FieldName);

            return(p.GetValue(o, null));
        }
示例#6
0
        private static object GetExcelValue(object value, ReportTableColumn column)
        {
            switch (column.DataType)
            {
            case DataType.Time:
            case DataType.TimeInSeconds:
                return(GetText(value, column));

            case DataType.Overall:
            case DataType.Amount:
            case DataType.Percents:
            case DataType.Date:
            case DataType.IntNumber:
                return(value);

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
示例#7
0
    private void bindData()
    {
        gvDataTable.Visible = false;
        AnalyticsDetail.Visible = false;
        AnalyticsPieChart.Visible = false;
        if (null == _reports || 0 == _reports.Count) return;

        DisplayView view = this.View;

        string urlBreadcrumb = Request.Url.AbsolutePath;
        lnkBreadcrumbReport.Visible = false;
        lnkBreadcrumbFor.Visible = false;
        lnkBreadcrumbAnd.Visible = false;
        lnkBreadcrumbReport.InnerText = _reportTypeName;
        urlBreadcrumb += "?report=" + EkFunctions.UrlEncode(_reportType.ToString());
        lnkBreadcrumbReport.HRef = urlBreadcrumb + "&for=&and=&also=&view=";
        if (!String.IsNullOrEmpty(_forValue))
        {
            lnkBreadcrumbReport.Visible = true;
            AddUpdatePanelTrigger(lnkBreadcrumbReport);
            htmBreadcrumbSeparatorFor.Visible = true;
            lblBreadcrumbFor.Visible = true;
            lblBreadcrumbFor.Text = _forValue;
            lnkBreadcrumbFor.InnerText = lblBreadcrumbFor.Text;
            urlBreadcrumb += "&for=" + EkFunctions.UrlEncode(lnkBreadcrumbFor.InnerText);
            lnkBreadcrumbFor.HRef = urlBreadcrumb + "&and=&also=&view=";
        }
        if (!String.IsNullOrEmpty(_andValue))
        {
            lblBreadcrumbFor.Visible = false;
            lnkBreadcrumbFor.Visible = true;
            AddUpdatePanelTrigger(lnkBreadcrumbFor);
            htmBreadcrumbSeparatorAnd.Visible = true;
            lblBreadcrumbAnd.Visible = true;
            lblBreadcrumbAnd.Text = _andValue;
            lnkBreadcrumbAnd.InnerText = lblBreadcrumbAnd.Text;
            urlBreadcrumb += "&and=" + EkFunctions.UrlEncode(lnkBreadcrumbAnd.InnerText);
            lnkBreadcrumbAnd.HRef = urlBreadcrumb + "&also=&view=";
        }
        if (!String.IsNullOrEmpty(_alsoValue))
        {
            lblBreadcrumbAnd.Visible = false;
            lnkBreadcrumbAnd.Visible = true;
            AddUpdatePanelTrigger(lnkBreadcrumbAnd);
            htmBreadcrumbSeparatorAlso.Visible = true;
            lblBreadcrumbAlso.Visible = true;
            lblBreadcrumbAlso.Text = _alsoValue;
        }

        if (DisplayView.Detail == view)
        {
            AnalyticsDetail.Visible = true;
            AnalyticsDetail.ProviderSegments = this.ProviderSegments;
            AnalyticsDetail.StartDate = _startDate;
            AnalyticsDetail.EndDate = _endDate;

            switch (_reportDisplayData)
            {
                case ReportDisplayData.SiteData:
                    AnalyticsDetail.ShowVisits = true;
                    AnalyticsDetail.ShowPagesPerVisit = true;
                    AnalyticsDetail.ShowTimeOnSite = true;
                    AnalyticsDetail.ShowBounceRate = true;
                    this.htmReportSummary.Visible = false;
                    break;
                case ReportDisplayData.PageData:
                    AnalyticsDetail.ShowPageviews = true;
                    AnalyticsDetail.ShowUniqueViews = true;
                    AnalyticsDetail.ShowTimeOnPage = true;
                    AnalyticsDetail.ShowBounceRate = true;
                    AnalyticsDetail.ShowPercentExit = true;
                    break;
                case ReportDisplayData.LandingPageData:
                    AnalyticsDetail.ShowBounceRate = true;
                    this.htmReportSummary.Visible = false;
                    break;
                case ReportDisplayData.ExitPageData:
                    AnalyticsDetail.ShowPageviews = true;
                    AnalyticsDetail.ShowPercentExit = true;
                    this.htmReportSummary.Visible = false;
                    break;
                case ReportDisplayData.DynamicData:
                    this.htmReportSummary.Visible = false;
                    break;
                case ReportDisplayData.SiteMetricData:
                case ReportDisplayData.SiteContentData:
                case ReportDisplayData.InstancesData:
                case ReportDisplayData.MobileData:
                case ReportDisplayData.ReloadData:
                case ReportDisplayData.PageVisitorsData:
                case ReportDisplayData.PageVisitsData:
                case ReportDisplayData.VisitorsData:
                case ReportDisplayData.VisitsData:
                default:
                    if (this.htmReportSummary != null)
                    {
                        this.htmReportSummary.InnerText = "This report does not support the summary type.";
                        this.htmReportSummary.Visible = true;
                        break;
                    }
                    else
                    {
                        throw new ArgumentOutOfRangeException("_reportDisplayData", "Unknown ReportDisplayData: " + _reportDisplayData);
                    }
            }

            AnalyticsDetail.UpdateReport(_reports);
        }
        else if (_showTable)
        {
            gvDataTable.Visible = true;
            ReportTableColumn[] visibleColumns = new ReportTableColumn[] { ReportTableColumn.DimensionName };
            if (DisplayView.Table == view)
            {
                switch (_reportDisplayData)
                {
                    case ReportDisplayData.SiteData:
                        visibleColumns = new ReportTableColumn[]
                        {
                            ReportTableColumn.DimensionName,
                            ReportTableColumn.Visits,
                            ReportTableColumn.PagesPerVisit,
                            ReportTableColumn.AverageTimeSpanOnSite,
                            ReportTableColumn.PercentNewVisits,
                            ReportTableColumn.BounceRate
                        };
                        break;
                    case ReportDisplayData.PageData:
                        visibleColumns = new ReportTableColumn[]
                        {
                            ReportTableColumn.DimensionName,
                            ReportTableColumn.PageViews,
                            ReportTableColumn.UniqueViews,
                            ReportTableColumn.AverageTimeSpanOnPage,
                            ReportTableColumn.BounceRate,
                            ReportTableColumn.ExitRate
                        };
                        break;
                    case ReportDisplayData.LandingPageData:
                        visibleColumns = new ReportTableColumn[]
                        {
                            ReportTableColumn.DimensionName,
                            ReportTableColumn.Entrances,
                            ReportTableColumn.Bounces,
                            ReportTableColumn.BounceRate
                        };
                        break;
                    case ReportDisplayData.ExitPageData:
                        visibleColumns = new ReportTableColumn[]
                        {
                            ReportTableColumn.DimensionName,
                            ReportTableColumn.Exits,
                            ReportTableColumn.PageViews,
                            ReportTableColumn.ExitRate
                        };
                        break;
                    case ReportDisplayData.SiteMetricData:
                        visibleColumns = new ReportTableColumn[]
                        {
                            ReportTableColumn.DimensionName,
                            ReportTableColumn.Visits,
                            ReportTableColumn.PageViews
                        };
                        break;
                    case ReportDisplayData.SiteContentData:
                        visibleColumns = new ReportTableColumn[]
                        {
                            ReportTableColumn.DimensionName,
                            ReportTableColumn.PageViews
                        };
                        break;
                    case ReportDisplayData.InstancesData:
                        visibleColumns = new ReportTableColumn[]
                        {
                            ReportTableColumn.DimensionName,
                            ReportTableColumn.Instances
                        };
                        break;
                    case ReportDisplayData.MobileData:
                        visibleColumns = new ReportTableColumn[]
                        {
                            ReportTableColumn.DimensionName,
                            ReportTableColumn.MobileViews
                        };
                        break;
                    case ReportDisplayData.ReloadData:
                        visibleColumns = new ReportTableColumn[]
                        {
                            ReportTableColumn.DimensionName,
                            ReportTableColumn.Reloads
                        };
                        break;
                    case ReportDisplayData.PageVisitorsData:
                        visibleColumns = new ReportTableColumn[]
                        {
                            ReportTableColumn.DimensionName,
                            ReportTableColumn.PageViews,
                            ReportTableColumn.Visitors
                        };
                        break;
                    case ReportDisplayData.VisitorsData:
                        visibleColumns = new ReportTableColumn[]
                        {
                            ReportTableColumn.DimensionName,
                            ReportTableColumn.Visitors
                        };
                        break;
                    case ReportDisplayData.VisitsData:
                        visibleColumns = new ReportTableColumn[]
                        {
                            ReportTableColumn.DimensionName,
                            ReportTableColumn.Visits
                        };
                        break;
                    case ReportDisplayData.PageVisitsData:
                        visibleColumns = new ReportTableColumn[]
                        {
                            ReportTableColumn.DimensionName,
                            ReportTableColumn.PageViews,
                            ReportTableColumn.Visits
                        };
                        break;
                    case ReportDisplayData.DynamicData:
                        gvDataTable.Visible = false;
                        break;
                    default:
                        throw new ArgumentOutOfRangeException("_reportDisplayData", "Unknown ReportDisplayData: " + _reportDisplayData);
                }
            }
            else if (DisplayView.Percentage == view)
            {
                switch (_reportDisplayData)
                {
                    case ReportDisplayData.SiteData:
                    case ReportDisplayData.SiteMetricData:
                        visibleColumns = new ReportTableColumn[]
                        {
                            ReportTableColumn.DimensionName,
                            ReportTableColumn.Visits,
                            ReportTableColumn.PercentVisits
                        };
                        break;
                    case ReportDisplayData.PageData:
                        visibleColumns = new ReportTableColumn[]
                            {
                                ReportTableColumn.DimensionName,
                                ReportTableColumn.PageViews,
                                ReportTableColumn.PercentPageviews
                            };
                        break;
                    case ReportDisplayData.SiteContentData:
                        visibleColumns = new ReportTableColumn[]
                            {
                                ReportTableColumn.DimensionName,
                                ReportTableColumn.PageViews
                            };
                        break;
                    case ReportDisplayData.LandingPageData:
                        visibleColumns = new ReportTableColumn[]
                            {
                                ReportTableColumn.DimensionName,
                                ReportTableColumn.Entrances,
                                ReportTableColumn.BounceRate
                            };
                        break;
                    case ReportDisplayData.ExitPageData:
                        visibleColumns = new ReportTableColumn[]
                            {
                                ReportTableColumn.DimensionName,
                                ReportTableColumn.Exits,
                                ReportTableColumn.ExitRate
                            };
                        break;
                    case ReportDisplayData.InstancesData:
                        visibleColumns = new ReportTableColumn[]
                            {
                                ReportTableColumn.DimensionName,
                                ReportTableColumn.Instances
                            };
                        break;
                    case ReportDisplayData.MobileData:
                        visibleColumns = new ReportTableColumn[]
                        {
                            ReportTableColumn.DimensionName,
                            ReportTableColumn.MobileViews
                        };
                        break;
                    case ReportDisplayData.PageVisitorsData:
                    case ReportDisplayData.VisitorsData:
                        visibleColumns = new ReportTableColumn[]
                        {
                            ReportTableColumn.DimensionName,
                            ReportTableColumn.Visitors
                        };
                        break;
                    case ReportDisplayData.VisitsData:
                        visibleColumns = new ReportTableColumn[]
                        {
                            ReportTableColumn.DimensionName,
                            ReportTableColumn.Visits
                        };
                        break;
                    case ReportDisplayData.PageVisitsData:
                        visibleColumns = new ReportTableColumn[]
                        {
                            ReportTableColumn.DimensionName,
                            ReportTableColumn.PageViews,
                            ReportTableColumn.Visits
                        };
                        break;
                    case ReportDisplayData.SalesCycleData:
                    case ReportDisplayData.NewBuyerSalesCycleData:
                        visibleColumns = new ReportTableColumn[]
                        {
                            ReportTableColumn.DimensionName,
                            ReportTableColumn.Revenue
                        };
                        break;
                    case ReportDisplayData.ReloadData:
                        visibleColumns = new ReportTableColumn[]
                        {
                            ReportTableColumn.DimensionName,
                            ReportTableColumn.Reloads
                        };
                        break;
                    case ReportDisplayData.DynamicData:
                        gvDataTable.Visible = false;
                        break;
                    default:
                        throw new ArgumentOutOfRangeException("_reportDisplayData", "Unknown ReportDisplayData: " + _reportDisplayData);
                }
            }

            if (string.IsNullOrEmpty(this.ReportGUID))
            {
                GrdDynamic.Visible = false;
                for (int iGridCol = 0; iGridCol < gvDataTable.Columns.Count; iGridCol++)
                {
                    DataControlField column = gvDataTable.Columns[iGridCol];
                    column.Visible = false;
                    for (int iVisCol = 0; iVisCol < visibleColumns.Length; iVisCol++)
                    {
                        if (visibleColumns[iVisCol] == (ReportTableColumn)iGridCol)
                        {
                            if (iVisCol >= 0)
                            {
                                if (0 == iGridCol)
                                {
                                    column.HeaderText = _columnName;
                                }
                                else
                                {
                                    column.HeaderText = GetEnumDisplayText(visibleColumns[iVisCol]);
                                }
                                column.Visible = true;
                            }
                            break;
                        }
                    }
                }

                if (null == this.ProviderSegments || this.ProviderSegments.Count <= 1)
                {
                    gvDataTable.DataSource = _reports[0].ReportItems;
                }
                else
                {
                    this.gvDataTable.DataSource = CreateSegmentReportList();
                }
                gvDataTable.DataBind();
            }
            else
            {
                GrdDynamic.DataSource = null;
                GrdDynamic.DataBind();
                gvDataTable.Visible = false;
                if (_reports[0].ReportDataSet.ResponseDataSet != null)
                {
                    //dynamic table
                    GrdDynamic.Visible = true;
                    DataTable dt = new DataTable();
                    string tableName = "data";
                    if (!String.IsNullOrEmpty(_forValue))
                    {
                        tableName = _forValue;
                    }
                    dt = _reports[0].ReportDataSet.ResponseDataSet.Tables[tableName];
                    int maxColumns = dt.Columns.Count;
                    if (view != DisplayView.Table)
                    {
                        maxColumns = 4;
                    }
                    if (dt != null)
                    {
                        //Iterate through the columns of the datatable to set the data bound field dynamically.
                        int colCount = 0;
                        GrdDynamic.Columns.Clear();
                        foreach (DataColumn col in dt.Columns)
                        {
                            if (colCount >= maxColumns) break;
                            //Declare the bound field and allocate memory for the bound field.
                            BoundField bfield = new BoundField();

                            //Initalize the DataField value.
                            bfield.DataField = col.ColumnName;

                            //Initialize the HeaderText field value.
                            bfield.HeaderText = col.ColumnName;

                            //Add the newly created bound field to the GridView.
                            bfield.HeaderStyle.CssClass = "headerstyle";
                            GrdDynamic.Columns.Add(bfield);
                            colCount++;
                        }
                        GrdDynamic.AlternatingRowStyle.CssClass = "alternatingrowstyle";
                    }
                    GrdDynamic.DataSource = dt;
                    int visualIndex = Request.Form[drpVisualization.UniqueID] != null ? EkFunctions.ReadIntegerValue(Request.Form[drpVisualization.UniqueID]) : 0;
                    string onchange = "javascript" + @":setTimeout('__doPostBack(\'\',\'\')', 0)";
                    if (string.IsNullOrEmpty(drpVisualization.Attributes["onchange"]))
                        drpVisualization.Attributes.Add("onchange", onchange);

                    if (!Page.IsPostBack || drpVisualization.Items.Count == 0)
                    {
                        drpVisualization.Items.Add(new ListItem(GetMessage("lbl data table"), "0"));
                        drpVisualization.Items.Add(new ListItem(GetMessage("lbl bar chart"), "4"));
                        drpVisualization.Items.Add(new ListItem(GetMessage("lbl heat map"), "5"));
                        drpVisualization.Items.Add(new ListItem(GetMessage("lbl pie chart"), "1"));
                    }
                    drpVisualization.SelectedValue = visualIndex.ToString();
                    dvVisualSelect.Visible = true;
                    this.View = (DisplayView)Enum.Parse(typeof(DisplayView), visualIndex.ToString());
                    GrdDynamic.DataBind();
                }
            }
            lblNoRecords.Visible = false;
            pnlData.Visible = true;
        }
        else if (_showPieChart)
        {
            AnalyticsPieChart.Visible = true;
            UpdatePieChart(AnalyticsPieChart, _reports[0]);
        }
    }