Fixes code according to modern code style. Fixes a few expression bugs.

This commit is contained in:
Kamron Batman 2018-09-15 09:58:51 -07:00
parent 89eea25e5f
commit 970fd563b2
3324 changed files with 441118 additions and 433755 deletions

View file

@ -3,299 +3,305 @@ using System.Collections;
namespace Server.Engines.Reports
{
public enum BarGraphRenderMode
{
Bars,
Lines
}
public enum BarGraphRenderMode
{
Bars,
Lines
}
public class BarGraph : Chart
{
#region Type Identification
public static readonly PersistableType ThisTypeID = new PersistableType( "bg", Construct );
public class BarGraph : Chart
{
public BarGraph(string name, string fileName, int ticks, string xTitle, string yTitle, BarGraphRenderMode rm)
{
m_Name = name;
m_FileName = fileName;
Ticks = ticks;
this.xTitle = xTitle;
this.yTitle = yTitle;
RenderMode = rm;
}
private static PersistableObject Construct()
{
return new BarGraph();
}
private BarGraph()
{
}
public override PersistableType TypeID => ThisTypeID;
#endregion
public int Ticks{ get; set; }
public int Ticks { get; set; }
public BarGraphRenderMode RenderMode{ get; set; }
public BarGraphRenderMode RenderMode { get; set; }
public string xTitle{ get; set; }
public string xTitle { get; set; }
public string yTitle{ get; set; }
public string yTitle { get; set; }
public int FontSize{ get; set; } = 7;
public int FontSize { get; set; } = 7;
public int Interval{ get; set; } = 1;
public int Interval { get; set; } = 1;
public BarRegion[] Regions{ get; set; }
public BarRegion[] Regions { get; set; }
public override void SerializeAttributes(PersistanceWriter op)
{
base.SerializeAttributes(op);
public BarGraph( string name, string fileName, int ticks, string xTitle, string yTitle, BarGraphRenderMode rm )
{
m_Name = name;
m_FileName = fileName;
Ticks = ticks;
this.xTitle = xTitle;
this.yTitle = yTitle;
RenderMode = rm;
}
op.SetInt32("t", Ticks);
op.SetInt32("r", (int)RenderMode);
private BarGraph()
{
}
op.SetString("x", xTitle);
op.SetString("y", yTitle);
public override void SerializeAttributes( PersistanceWriter op )
{
base.SerializeAttributes( op );
op.SetInt32("s", FontSize);
op.SetInt32("i", Interval);
}
op.SetInt32( "t", Ticks );
op.SetInt32( "r", (int) RenderMode );
public override void DeserializeAttributes(PersistanceReader ip)
{
base.DeserializeAttributes(ip);
op.SetString( "x", xTitle );
op.SetString( "y", yTitle );
Ticks = ip.GetInt32("t");
RenderMode = (BarGraphRenderMode)ip.GetInt32("r");
op.SetInt32( "s", FontSize );
op.SetInt32( "i", Interval );
}
xTitle = Utility.Intern(ip.GetString("x"));
yTitle = Utility.Intern(ip.GetString("y"));
public override void DeserializeAttributes( PersistanceReader ip )
{
base.DeserializeAttributes( ip );
FontSize = ip.GetInt32("s");
Interval = ip.GetInt32("i");
}
Ticks = ip.GetInt32( "t" );
RenderMode = (BarGraphRenderMode) ip.GetInt32( "r" );
public static int LookupReportValue(Snapshot ss, string reportName, string valueName)
{
for (int j = 0; j < ss.Children.Count; ++j)
{
if (!(ss.Children[j] is Report report) || report.Name != reportName)
continue;
xTitle = Utility.Intern( ip.GetString( "x" ) );
yTitle = Utility.Intern( ip.GetString( "y" ) );
for (int k = 0; k < report.Items.Count; ++k)
{
ReportItem item = report.Items[k];
FontSize = ip.GetInt32( "s" );
Interval = ip.GetInt32( "i" );
}
if (item.Values[0].Value == valueName)
return Utility.ToInt32(item.Values[1].Value);
}
public static int LookupReportValue( Snapshot ss, string reportName, string valueName )
{
for ( int j = 0; j < ss.Children.Count; ++j )
{
if ( !(ss.Children[j] is Report report) || report.Name != reportName )
continue;
break;
}
for ( int k = 0; k < report.Items.Count; ++k )
{
ReportItem item = report.Items[k];
return -1;
}
if ( item.Values[0].Value == valueName )
return Utility.ToInt32( item.Values[1].Value );
}
public static BarGraph DailyAverage(SnapshotHistory history, string reportName, string valueName)
{
int[] totals = new int[24];
int[] counts = new int[24];
break;
}
int min = history.Snapshots.Count - 7 * 24; // averages over one week
return -1;
}
if (min < 0)
min = 0;
public static BarGraph DailyAverage( SnapshotHistory history, string reportName, string valueName )
{
int[] totals = new int[24];
int[] counts = new int[24];
for (int i = min; i < history.Snapshots.Count; ++i)
{
Snapshot ss = history.Snapshots[i];
int min = history.Snapshots.Count - (7 * 24); // averages over one week
int val = LookupReportValue(ss, reportName, valueName);
if ( min < 0 )
min = 0;
if (val == -1)
continue;
for ( int i = min; i < history.Snapshots.Count; ++i )
{
Snapshot ss = history.Snapshots[i];
int hour = ss.TimeStamp.TimeOfDay.Hours;
int val = LookupReportValue( ss, reportName, valueName );
totals[hour] += val;
counts[hour]++;
}
if ( val == -1 )
continue;
BarGraph barGraph = new BarGraph("Hourly average " + valueName, "graphs_" + valueName.ToLower() + "_avg", 10,
"Time", valueName, BarGraphRenderMode.Lines);
int hour = ss.TimeStamp.TimeOfDay.Hours;
barGraph.FontSize = 6;
totals[hour] += val;
counts[hour]++;
}
for (int i = 7; i <= totals.Length + 7; ++i)
{
int val;
BarGraph barGraph = new BarGraph( "Hourly average " + valueName, "graphs_" + valueName.ToLower() + "_avg", 10, "Time", valueName, BarGraphRenderMode.Lines );
if (counts[i % totals.Length] == 0)
val = 0;
else
val = (totals[i % totals.Length] + counts[i % totals.Length] / 2) / counts[i % totals.Length];
barGraph.FontSize = 6;
int realHours = i % totals.Length;
int hours;
for ( int i = 7; i <= totals.Length+7; ++i )
{
int val;
if (realHours == 0)
hours = 12;
else if (realHours > 12)
hours = realHours - 12;
else
hours = realHours;
if ( counts[i%totals.Length] == 0 )
val = 0;
else
val = (totals[i%totals.Length] + (counts[i%totals.Length] / 2)) / counts[i%totals.Length];
barGraph.Items.Add(hours + (realHours >= 12 ? " PM" : " AM"), val);
}
int realHours = i%totals.Length;
int hours;
return barGraph;
}
if ( realHours == 0 )
hours = 12;
else if ( realHours > 12 )
hours = realHours - 12;
else
hours = realHours;
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);
barGraph.Items.Add( hours + (realHours >= 12 ? " PM" : " AM"), val );
}
barGraph.FontSize = 6;
barGraph.Interval = 7;
return barGraph;
}
DateTime startPeriod = history.Snapshots[0].TimeStamp.Date + TimeSpan.FromDays(1.0);
DateTime endPeriod = history.Snapshots[history.Snapshots.Count - 1].TimeStamp.Date;
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 );
ArrayList regions = new ArrayList();
barGraph.FontSize = 6;
barGraph.Interval = 7;
DateTime curDate = DateTime.MinValue;
int curPeak = -1;
int curLow = 1000;
int curTotl = 0;
int curCont = 0;
int curValu = 0;
DateTime startPeriod = history.Snapshots[0].TimeStamp.Date + TimeSpan.FromDays( 1.0 );
DateTime endPeriod = history.Snapshots[history.Snapshots.Count - 1].TimeStamp.Date;
for (int i = 0; i < history.Snapshots.Count; ++i)
{
Snapshot ss = history.Snapshots[i];
DateTime timeStamp = ss.TimeStamp;
ArrayList regions = new ArrayList();
if (timeStamp < startPeriod || timeStamp >= endPeriod)
continue;
DateTime curDate = DateTime.MinValue;
int curPeak = -1;
int curLow = 1000;
int curTotl = 0;
int curCont = 0;
int curValu = 0;
int val = LookupReportValue(ss, reportName, valueName);
for ( int i = 0; i < history.Snapshots.Count; ++i )
{
Snapshot ss = history.Snapshots[i];
DateTime timeStamp = ss.TimeStamp;
if (val == -1)
continue;
if ( timeStamp < startPeriod || timeStamp >= endPeriod )
continue;
DateTime thisDate = timeStamp.Date;
int val = LookupReportValue( ss, reportName, valueName );
if (curDate == DateTime.MinValue)
curDate = thisDate;
if ( val == -1 )
continue;
curCont++;
curTotl += val;
curValu = curTotl / curCont;
DateTime thisDate = timeStamp.Date;
if (curDate != thisDate && curValu >= 0)
{
string mnthName = thisDate.ToString("MMMM");
if ( curDate == DateTime.MinValue )
curDate = thisDate;
if (regions.Count == 0)
{
regions.Add(new BarRegion(barGraph.Items.Count, barGraph.Items.Count, mnthName));
}
else
{
BarRegion region = (BarRegion)regions[regions.Count - 1];
curCont++;
curTotl += val;
curValu = curTotl / curCont;
if (region.m_Name == mnthName)
region.m_RangeTo = barGraph.Items.Count;
else
regions.Add(new BarRegion(barGraph.Items.Count, barGraph.Items.Count, mnthName));
}
if ( curDate != thisDate && curValu >= 0 )
{
string mnthName = thisDate.ToString( "MMMM" );
barGraph.Items.Add(thisDate.Day.ToString(), curValu);
if ( regions.Count == 0 )
{
regions.Add( new BarRegion( barGraph.Items.Count, barGraph.Items.Count, mnthName ) );
}
else
{
BarRegion region = (BarRegion)regions[regions.Count - 1];
curPeak = val;
curLow = val;
}
else
{
if (val > curPeak)
curPeak = val;
if ( region.m_Name == mnthName )
region.m_RangeTo = barGraph.Items.Count;
else
regions.Add( new BarRegion( barGraph.Items.Count, barGraph.Items.Count, mnthName ) );
}
if (val > 0 && val < curLow)
curLow = val;
}
barGraph.Items.Add( thisDate.Day.ToString(), curValu );
curDate = thisDate;
}
curPeak = val;
curLow = val;
}
else
{
if ( val > curPeak )
curPeak = val;
barGraph.Regions = (BarRegion[])regions.ToArray(typeof(BarRegion));
if ( val > 0 && val < curLow )
curLow = val;
}
return barGraph;
}
curDate = thisDate;
}
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);
barGraph.Regions = (BarRegion[])regions.ToArray( typeof( BarRegion ) );
TimeSpan ts = TimeSpan.FromHours(max * step - 0.5);
return barGraph;
}
DateTime mostRecent = history.Snapshots[history.Snapshots.Count - 1].TimeStamp;
DateTime minTime = mostRecent - ts;
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 );
barGraph.FontSize = 6;
barGraph.Interval = ival;
TimeSpan ts = TimeSpan.FromHours( (max*step)-0.5 );
ArrayList regions = new ArrayList();
DateTime mostRecent = history.Snapshots[history.Snapshots.Count - 1].TimeStamp;
DateTime minTime = mostRecent - ts;
for (int i = 0; i < history.Snapshots.Count; ++i)
{
Snapshot ss = history.Snapshots[i];
DateTime timeStamp = ss.TimeStamp;
barGraph.FontSize = 6;
barGraph.Interval = ival;
if (timeStamp < minTime)
continue;
ArrayList regions = new ArrayList();
if (i % step != 0)
continue;
for ( int i = 0; i < history.Snapshots.Count; ++i )
{
Snapshot ss = history.Snapshots[i];
DateTime timeStamp = ss.TimeStamp;
int val = LookupReportValue(ss, reportName, valueName);
if ( timeStamp < minTime )
continue;
if (val == -1)
continue;
if ( (i % step) != 0 )
continue;
int realHours = timeStamp.TimeOfDay.Hours;
int hours;
int val = LookupReportValue( ss, reportName, valueName );
if (realHours == 0)
hours = 12;
else if (realHours > 12)
hours = realHours - 12;
else
hours = realHours;
if ( val == -1 )
continue;
string dayName = timeStamp.DayOfWeek.ToString();
int realHours = timeStamp.TimeOfDay.Hours;
int hours;
if (regions.Count == 0)
{
regions.Add(new BarRegion(barGraph.Items.Count, barGraph.Items.Count, dayName));
}
else
{
BarRegion region = (BarRegion)regions[regions.Count - 1];
if ( realHours == 0 )
hours = 12;
else if ( realHours > 12 )
hours = realHours - 12;
else
hours = realHours;
if (region.m_Name == dayName)
region.m_RangeTo = barGraph.Items.Count;
else
regions.Add(new BarRegion(barGraph.Items.Count, barGraph.Items.Count, dayName));
}
string dayName = timeStamp.DayOfWeek.ToString();
barGraph.Items.Add(hours + (realHours >= 12 ? " PM" : " AM"), val);
}
if ( regions.Count == 0 )
{
regions.Add( new BarRegion( barGraph.Items.Count, barGraph.Items.Count, dayName ) );
}
else
{
BarRegion region = (BarRegion) regions[regions.Count - 1];
barGraph.Regions = (BarRegion[])regions.ToArray(typeof(BarRegion));
if ( region.m_Name == dayName )
region.m_RangeTo = barGraph.Items.Count;
else
regions.Add( new BarRegion( barGraph.Items.Count, barGraph.Items.Count, dayName ) );
}
return barGraph;
}
barGraph.Items.Add( hours + (realHours >= 12 ? " PM" : " AM"), val );
}
#region Type Identification
barGraph.Regions = (BarRegion[])regions.ToArray( typeof( BarRegion ) );
public static readonly PersistableType ThisTypeID = new PersistableType("bg", Construct);
return barGraph;
}
}
}
private static PersistableObject Construct()
{
return new BarGraph();
}
public override PersistableType TypeID => ThisTypeID;
#endregion
}
}