public static void FillSnapshot( Snapshot ss ) { ss.Children.Add( CompileGeneralStats() ); ss.Children.Add( CompileStatChart() ); PersistableObject[] obs = CompileSkillReports(); for ( int i = 0; i < obs.Length; ++i ) ss.Children.Add( obs[i] ); }
public static void Generate() { Snapshot ss = new Snapshot(); ss.TimeStamp = DateTime.Now; FillSnapshot( ss ); m_History.Snapshots.Add( ss ); ThreadPool.QueueUserWorkItem( new WaitCallback( UpdateOutput ), ss ); }
public static void Generate() { var ss = new Snapshot(); ss.TimeStamp = DateTime.UtcNow; FillSnapshot(ss); m_StatsHistory.Snapshots.Add(ss); m_StaffHistory.QueueStats.Add(new QueueStatus(PageQueue.List.Count)); ThreadPool.QueueUserWorkItem(UpdateOutput, ss); }
public static void Generate() { Snapshot ss = new Snapshot(); ss.TimeStamp = DateTime.Now; FillSnapshot( ss ); m_StatsHistory.Snapshots.Add( ss ); m_StaffHistory.QueueStats.Add( new QueueStatus( Engines.Help.PageQueue.List.Count ) ); ThreadPool.QueueUserWorkItem( new WaitCallback( UpdateOutput ), ss ); }
public HtmlRenderer( string outputDirectory, Snapshot ss, SnapshotHistory history ) : this( outputDirectory ) { m_TimeStamp = ss.TimeStamp; m_Objects = new ObjectCollection(); for ( int i = 0; i < ss.Children.Count; ++i ) m_Objects.Add( ss.Children[i] ); m_Objects.Add( BarGraph.OverTime( history, "General Stats", "Clients", 1, 100, 6 ) ); m_Objects.Add( BarGraph.OverTime( history, "General Stats", "Items", 24, 9, 1 ) ); m_Objects.Add( BarGraph.OverTime( history, "General Stats", "Players", 24, 9, 1 ) ); m_Objects.Add( BarGraph.OverTime( history, "General Stats", "NPCs", 24, 9, 1 ) ); m_Objects.Add( BarGraph.DailyAverage( history, "General Stats", "Clients" ) ); m_Objects.Add( BarGraph.Growth( history, "General Stats", "Clients" ) ); }
public static void FillSnapshot( Snapshot ss ) { ss.Children.Add(CompileGeneralStats()); ss.Children.Add(CompilePCByDL()); ss.Children.Add(CompileTop15()); ss.Children.Add(CompileDislikedArenas()); ss.Children.Add(CompileStatChart()); PersistableObject[] obs = CompileSkillReports(); for ( int i = 0; i < obs.Length; ++i ) ss.Children.Add( obs[i] ); obs = CompileFactionReports(); for ( int i = 0; i < obs.Length; ++i ) ss.Children.Add( obs[i] ); }
public static BarGraph DailyAverage(SnapshotHistory history, string reportName, string valueName) { int[] totals = new int[24]; int[] counts = new int[24]; int min = history.Snapshots.Count - (7 * 24); // averages over one week if (min < 0) { min = 0; } for (int i = min; i < history.Snapshots.Count; ++i) { Snapshot ss = history.Snapshots[i]; int val = LookupReportValue(ss, reportName, valueName); if (val == -1) { continue; } int hour = ss.TimeStamp.TimeOfDay.Hours; totals[hour] += val; counts[hour]++; } BarGraph barGraph = new BarGraph("Hourly average " + valueName, "graphs_" + valueName.ToLower() + "_avg", 10, "Time", valueName, BarGraphRenderMode.Lines) { m_FontSize = 6 }; for (int i = 7; i <= totals.Length + 7; ++i) { int val; if (counts[i % totals.Length] == 0) { val = 0; } else { val = (totals[i % totals.Length] + (counts[i % totals.Length] / 2)) / counts[i % totals.Length]; } int realHours = i % totals.Length; int hours; if (realHours == 0) { hours = 12; } else if (realHours > 12) { hours = realHours - 12; } else { hours = realHours; } barGraph.Items.Add(hours + (realHours >= 12 ? " PM" : " AM"), val); } return(barGraph); }
/// <summary> /// Advances the enumerator to the next queue of the enumeration, if one is currently available. /// </summary> /// <returns>true, if the enumerator was succesfully advanced to the next queue; false, if the enumerator has reached the end of the enumeration.</returns> public bool MoveNext() { if ((_index < (_collection.Count - 1))) { _index = (_index + 1); _currentElement = _collection[_index]; return true; } _index = _collection.Count; return false; }
public static int LookupReportValue( Snapshot ss, string reportName, string valueName ) { for ( int j = 0; j < ss.Children.Count; ++j ) { Report report = ss.Children[j] as Report; if ( report == null || report.Name != reportName ) continue; for ( int k = 0; k < report.Items.Count; ++k ) { ReportItem item = report.Items[k]; if ( item.Values[0].Value == valueName ) return Utility.ToInt32( item.Values[1].Value ); } break; } return -1; }
public static BarGraph OverTime(SnapshotHistory history, string reportName, string valueName, int step, int max, int ival) { BarGraph barGraph = new BarGraph(valueName + " over time", "graphs_" + valueName.ToLower() + "_ot", 10, "Time", valueName, BarGraphRenderMode.Lines); TimeSpan ts = TimeSpan.FromHours((max * step) - 0.5); DateTime mostRecent = history.Snapshots[history.Snapshots.Count - 1].TimeStamp; DateTime minTime = mostRecent - ts; barGraph.FontSize = 6; barGraph.Interval = ival; ArrayList regions = new ArrayList(); for (int i = 0; i < history.Snapshots.Count; ++i) { Snapshot ss = history.Snapshots[i]; DateTime timeStamp = ss.TimeStamp; if (timeStamp < minTime) { continue; } if ((i % step) != 0) { continue; } int val = LookupReportValue(ss, reportName, valueName); if (val == -1) { continue; } int realHours = timeStamp.TimeOfDay.Hours; int hours; if (realHours == 0) { hours = 12; } else if (realHours > 12) { hours = realHours - 12; } else { hours = realHours; } string dayName = timeStamp.DayOfWeek.ToString(); if (regions.Count == 0) { regions.Add(new BarRegion(barGraph.Items.Count, barGraph.Items.Count, dayName)); } else { BarRegion region = (BarRegion)regions[regions.Count - 1]; if (region.m_Name == dayName) { region.m_RangeTo = barGraph.Items.Count; } else { regions.Add(new BarRegion(barGraph.Items.Count, barGraph.Items.Count, dayName)); } } barGraph.Items.Add(hours + (realHours >= 12 ? " PM" : " AM"), val); } barGraph.Regions = (BarRegion[])regions.ToArray(typeof(BarRegion)); return(barGraph); }
/// <summary> /// Reset the cursor, so it points to the beginning of the enumerator. /// </summary> public void Reset() { _index = -1; _currentElement = null; }
public static BarGraph Growth(SnapshotHistory history, string reportName, string valueName) { BarGraph barGraph = new BarGraph("Growth of " + valueName + " over time", "graphs_" + valueName.ToLower() + "_growth", 10, "Time", valueName, BarGraphRenderMode.Lines) { FontSize = 6, Interval = 7 }; DateTime startPeriod = history.Snapshots[0].TimeStamp.Date + TimeSpan.FromDays(1.0); DateTime endPeriod = history.Snapshots[history.Snapshots.Count - 1].TimeStamp.Date; ArrayList regions = new ArrayList(); DateTime curDate = DateTime.MinValue; int curPeak = -1; int curLow = 1000; int curTotl = 0; int curCont = 0; int curValu = 0; for (int i = 0; i < history.Snapshots.Count; ++i) { Snapshot ss = history.Snapshots[i]; DateTime timeStamp = ss.TimeStamp; if (timeStamp < startPeriod || timeStamp >= endPeriod) { continue; } int val = LookupReportValue(ss, reportName, valueName); if (val == -1) { continue; } DateTime thisDate = timeStamp.Date; if (curDate == DateTime.MinValue) { curDate = thisDate; } curCont++; curTotl += val; curValu = curTotl / curCont; if (curDate != thisDate && curValu >= 0) { string mnthName = thisDate.ToString("MMMM"); if (regions.Count == 0) { regions.Add(new BarRegion(barGraph.Items.Count, barGraph.Items.Count, mnthName)); } else { BarRegion region = (BarRegion)regions[regions.Count - 1]; if (region.m_Name == mnthName) { region.m_RangeTo = barGraph.Items.Count; } else { regions.Add(new BarRegion(barGraph.Items.Count, barGraph.Items.Count, mnthName)); } } barGraph.Items.Add(thisDate.Day.ToString(), curValu); curPeak = val; curLow = val; } else { if (val > curPeak) { curPeak = val; } if (val > 0 && val < curLow) { curLow = val; } } curDate = thisDate; } barGraph.Regions = (BarRegion[])regions.ToArray(typeof(BarRegion)); return(barGraph); }
/// <summary> /// Insert a Server.Engines.Reports.Snapshot instance into this collection at a specified index. /// </summary> /// <param name="index">Zero-based index.</param> /// <param name="value">The Server.Engines.Reports.Snapshot instance to insert.</param> public void Insert(int index, Snapshot value) { List.Insert(index, value); }
/// <summary> /// Removes a specified Server.Engines.Reports.Snapshot instance from this collection. /// </summary> /// <param name="value">The Server.Engines.Reports.Snapshot instance to remove.</param> public void Remove(Snapshot value) { List.Remove(value); }
/// <summary> /// Retrieve the index a specified Server.Engines.Reports.Snapshot instance is in this collection. /// </summary> /// <param name="value">Server.Engines.Reports.Snapshot instance to find.</param> /// <returns>The zero-based index of the specified Server.Engines.Reports.Snapshot instance. If the object is not found, the return value is -1.</returns> public int IndexOf(Snapshot value) { return List.IndexOf(value); }
/// <summary> /// Determines whether a specified Server.Engines.Reports.Snapshot instance is in this collection. /// </summary> /// <param name="value">Server.Engines.Reports.Snapshot instance to search for.</param> /// <returns>True if the Server.Engines.Reports.Snapshot instance is in the collection; otherwise false.</returns> public bool Contains(Snapshot value) { return List.Contains(value); }
/// <summary> /// Append a Server.Engines.Reports.Snapshot entry to this collection. /// </summary> /// <param name="value">Server.Engines.Reports.Snapshot instance.</param> /// <returns>The position into which the new element was inserted.</returns> public int Add(Snapshot value) { return List.Add(value); }