Esempio n. 1
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="Period"></param>
        /// <param name="LoggerProviderName"></param>
        /// <param name="logLevel"></param>
        /// <param name="keyFormatString"></param>
        /// <param name="groupByClause"></param>
        /// <returns></returns>
        public JsonResult ChartDataByTimePeriod(string Period, string LoggerProviderName, string logLevel, string keyFormatString, Func<LogEvent, Object> groupByClause)
        {
            TimePeriod timePeriod = TimePeriodHelper.GetUtcTimePeriod(Period);

                // Grab ALL entries for the chart (DO NOT PAGE REPORTING DATA!!!)
                IPagedList<LogEvent> chartEntries = loggingRepository.GetByDateRangeAndType(0, Int32.MaxValue, timePeriod.Start, timePeriod.End, LoggerProviderName, logLevel);

                var groupedByDate = chartEntries.GroupBy(groupByClause).OrderBy(y => y.Key);

                var groupedByDateAndThenName = groupedByDate.Select(group => new { Key = group.Key, NestedGroup = group.ToLookup(result => result.LoggerProviderName, result => result.Id) });

                var LoggerNames = (from logEvent in chartEntries
                                   select new { Name = logEvent.LoggerProviderName }
                                   ).Distinct().OrderBy(item => item.Name);

                ChartData chartData = new ChartData();

                // Add columns
                chartData.AddColumn(new ChartColumn("0", "Period", "string"));
                int columnIndex = 1;
                foreach (var name in LoggerNames)
                {
                    chartData.AddColumn(new ChartColumn(columnIndex.ToString(), name.Name.ToString(), "number"));
                    columnIndex++;
                }

                // add row data
                foreach (var myDate in groupedByDateAndThenName)
                {
                    ChartRow row = new ChartRow();

                    string dateString = (myDate.Key is DateTime) ? ((DateTime)myDate.Key).ToString(keyFormatString) : myDate.Key.ToString();
                    row.AddCellItem(new ChartCellItem(dateString, ""));

                    foreach (var name in LoggerNames)
                    {
                        bool valueFound = false;
                        foreach (var myLogger in myDate.NestedGroup)
                        {
                            if (myLogger.Key == name.Name.ToString())
                            {
                                row.AddCellItem(new ChartCellItem(myLogger.Count(), ""));
                                valueFound = true;
                            }
                        }
                        if (!valueFound) row.AddCellItem(new ChartCellItem(0, ""));
                    }

                    chartData.AddRow(row);
                }

                return Json(chartData, "text/x-json", System.Text.Encoding.UTF8, JsonRequestBehavior.AllowGet);
        }
Esempio n. 2
0
 public void AddRow(ChartRow row)
 {
     _rows.Add(row);
 }
Esempio n. 3
0
 public void AddRow(ChartRow row)
 {
     _rows.Add(row);
 }