using System; using System.Text; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; /// /// Summary description for PieGraph /// public class PieGraph { //private variables private DataTable dtGraphData =new DataTable(); private string GTitle; private string GColors; private string GWidth; private string GHeight; private string GTitleColor; private string GTitleSize; //Set the properties /// /// Grpah Title to be displayed above the Graph /// public string GraphTitle { set { GTitle = value; } } /// /// DataSet for Drawing the Graph Column:2 for Labels and Column:3 for Column Data /// public DataTable dtData { set { dtGraphData = value;} } /// /// Colors to be displayed in the graph one or n number of colors eg: A333EE or A333EE,A311EE,1133EE /// public string GraphColors { set { GColors = value; } } /// /// Graph Dimesions width (2:1 -|- width:height) /// public string GraphWidth { set { GWidth = value; } } /// /// Graph Dimesions Height (2:1 -|- width:height) /// public string GraphHeight { set { GHeight = value; } } /// /// Graph Title Color (Title Font Color eg:5533AA) /// public string GraphTitleColor { set { GTitleColor = value; } } /// /// Graph Title Size (Title Font Size in pixcels 1-20) /// public string GraphTitleSize { set { GTitleSize = value; } } //Method to find the max Data in the given Data public int GetMaxVal(DataTable dt) { int max = 0; int cval = 0; foreach (DataRow dr in dt.Rows) { cval = Convert.ToInt32(dr[2]); if (cval >= max) { max = cval; } } return max; } /// /// Method which returns the Url be placed in the image src tag /// /// URL String public string GenerateGraph() { //Get the Data to draw the graph DataTable dt = new DataTable(); dt = dtGraphData; //Get the max vals in the Data int maxval = GetMaxVal(dt); //SAMPLE: http://chart.apis.google.com/chart?cht=p3&chs=400x200&chd=s:asR&chl=A|B|C string GReqURL = "http://chart.apis.google.com/chart?chts="+GTitleColor+","+GTitleSize+"&chtt="+GTitle+"&chco="+GColors+"&cht=p3&chs="+GWidth+"x"+GHeight; //chts for Title Style : color,size //chtt for title text //chco for colors: one or many string simpleEncoding = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; string chartData = string.Empty; string chartLabels = string.Empty; StringBuilder strbchartData = new StringBuilder(); StringBuilder strbchartLabels = new StringBuilder(); strbchartData.Append("&chd=s:"); strbchartLabels.Append("&chl="); int strlen = simpleEncoding.Length - 1; foreach (DataRow dr in dt.Rows) { //Generate the chart DATA int arrVal = Convert.ToInt32(dr[2]); int len = strlen * arrVal / maxval; strbchartData.Append(simpleEncoding.Substring(len, 1)); //Generate the Chart Labels strbchartLabels.Append(dr[1] + "|"); } //Converting the string builder to string chartData = strbchartData.ToString(); chartLabels = strbchartLabels.ToString(); chartLabels = chartLabels.Substring(0, chartLabels.Length - 1); return GReqURL + chartData + chartLabels; } //End of the method }