Return to Snippet

Revision: 30006
at August 6, 2010 02:55 by d3developer


Initial Code
     // The step is the distance between each label on the y axis
     public Integer calculateStepSize(Integer highestVal)
     {
	     	//calculates the appropriate step to display on the y axis
		  List<Integer> possibleSteps = New Integer[]{1,2,5,10,20,50};  
		  for(Integer i= (possibleSteps.size() - 1);i >= 0; i--) {
		  	System.debug('HIGH DIV 6:' + (highestVAl / 6) + ' POSS STEP:' + possibleSteps[i]);  
		  	if ((highestVal / 6) > possibleSteps[i])  
		  		return possibleSteps[i];
		  }
		  return 1;            
     }
     
     public Integer roundUpToClosestStep(Integer highestVal, Integer step)
     {
     	  return highestVal + (step - (math.mod(highestVal,step)));   
     }	
     
     //The idea is that any parameter could be overwritten with a Map specifying a different value pair (hash)
    //Data integrity should also be insured (e.g. that the length of both the data and labels are the same)
    public String generateChartURL(String title, List<Integer> incomingData, List<String> incomingLabels, Map <String,String> valuePairs)
    {  
     	if (incomingData.size() == 0)
    		return '';
    	
    	String dataString = '';
    	Integer highest = 0;
    	for (Integer d : incomingData) {
    		if (d > highest)
    			highest = d;
    		dataString += d + ',';
    	}
    	 dataString = dataString.substring(0, dataString.length() - 1);
     
     	 Integer step = calculateStepSize(highest);
		 highest = roundUpToClosestStep(highest, step);
		//System.debug('STEP:' + step);  
		     
		 String chartType = 'cht=bvg'; //vertical bar chart
		 String colors = 'chco=4D89F9,C6D9FD';       
		 String spacing = 'chbh=20,4,20';    
		 String chartSize = 'chs=600x200';                          
		 
		 //y axis, start value, highest value, step	size
		 String YAxisRange = 'chxr=1,0,' + Highest + ',' + step;    
		 String scaling = 'chds=0,' + Highest;
		 String data = 'chd=t:' + dataString;        
		
		 String chartLabels = 'chxt=x,y&chxl=0:|';
		 
		 //System.debug('LABEL SIZE:' + incomingLabels.size());
		 for (String l: incomingLabels)
		 	chartLabels += l + '|';   
		 chartLabels = chartLabels.substring(0, chartLabels.length() - 1);
		 
		 //System.debug('CHART LABEL:'+chartlabels);
		 
		 String chartTitle = 'chtt=' + title.replaceAll(' ','+');  

	  
		 String chartPath = 'http://chart.apis.google.com/chart?';    
		 return  chartPath + chartType + '&' + ChartTitle + '&' + YAxisRange + '&' + colors + '&' + Scaling + '&' + chartLabels + '&' + spacing + '&'  + Data + '&' + chartSize;
    }

Initial URL


Initial Description


Initial Title
@fractastical Google Chart URL Gen

Initial Tags


Initial Language
Other