Click here to Skip to main content
15,881,559 members
Articles / Desktop Programming / Windows Forms

Reputationator - CP Narcissists Rejoice! Part 1 of 4

Rate me:
Please Sign up or sign in to vote.
4.93/5 (35 votes)
30 Aug 2011CPOL22 min read 58.3K   882   41  
Keep more detailed track of your Codeproject reputation points.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

using ReputationLib;

namespace RepWPF
{
	//////////////////////////////////////////////////////////////////////////////////////
	public class ChartAccumulated : RepChart2
	{
		int m_highestValue = 0;

		//--------------------------------------------------------------------------------
		public ChartAccumulated(string name) : base(name, ChartNames.AccumulatedSince)
		{
		}

		//--------------------------------------------------------------------------------
		public override void PopulateChart(string comboTimePeriod, DateTime dateFrom, DateTime dateTo, DisplayCategories categories)
		{
			this.ChartObj.Series.Clear();

			foreach (RepCategory category in categories)
			{
				List<RepItem> list = GetSeriesList(WpfGlobals.Scraper.Reputations, comboTimePeriod, category, dateFrom, dateTo);

				// This chart starts at 0 for all categories and shows accumulated points 
				// since the specified start date.  This means we have to adjust the values 
				// of the rep items, but since the main list still has a reference to them, 
				// we have to essentially clone them into a new list.
				List<RepItem> list2 = new List<RepItem>();
				int startingValue = 0;
				for (int j = 0; j < list.Count; j++)
				{
					int zeroedValue = 0;
					RepItem item = list[j];

					if (j > 0)
					{
						zeroedValue    = item.Value - startingValue;
						m_highestValue = Math.Max(m_highestValue, item.Value - startingValue);
					}
					else
					{
						startingValue = item.Value;
					}

					RepItem item2 = item.Clone();
					item2.Value = zeroedValue;
					list2.Add(item2);
				}

				if (ShowTrendLine)
				{
				    CalculateTrendLine(list2, categories.Count);
				}
				else
				{
				    MakeDataLine(list2, category.ToString(), "TimeScraped", "Value", Globals.CategoryColors[category]);
				}
			}
			FormatChartAxes();
		}
	}
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior) Paddedwall Software
United States United States
I've been paid as a programmer since 1982 with experience in Pascal, and C++ (both self-taught), and began writing Windows programs in 1991 using Visual C++ and MFC. In the 2nd half of 2007, I started writing C# Windows Forms and ASP.Net applications, and have since done WPF, Silverlight, WCF, web services, and Windows services.

My weakest point is that my moments of clarity are too brief to hold a meaningful conversation that requires more than 30 seconds to complete. Thankfully, grunts of agreement are all that is required to conduct most discussions without committing to any particular belief system.

Comments and Discussions