transpose function

by forssux

HTML

<html>
  <head>
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">

    </script>
  </head>
  <body>
    <div id="chart_div" style="width: 900px; height: 500px;"></div>
	<div id="chart_transpose" style="width: 900px; height: 500px;"></div>
  </body>
</html>

JavaScript

google.load("visualization", "1", {packages:["corechart"]});
      google.setOnLoadCallback(drawChart);
	  
	  function transposeDataTable(dataTable) {
			//step 1: let us get what the columns would be
			var rows = [];//the row tip becomes the column header and the rest become
			for (var rowIdx=0; rowIdx < dataTable.getNumberOfRows(); rowIdx++) {
				var rowData = [];
				for( var colIdx = 0; colIdx < dataTable.getNumberOfColumns(); colIdx++) {
					rowData.push(dataTable.getValue(rowIdx, colIdx));
				}
				rows.push( rowData);
			}
			var newTB = new google.visualization.DataTable();
			newTB.addColumn('string', dataTable.getColumnLabel(0));
			newTB.addRows(dataTable.getNumberOfColumns()-1);
			var colIdx = 1;
			for(var idx=0; idx < (dataTable.getNumberOfColumns() -1);idx++) {
				var colLabel = dataTable.getColumnLabel(colIdx);
				newTB.setValue(idx, 0, colLabel);
				colIdx++;
			}
			for (var i=1; i< rows.length; i++) {
				var rowData = rows[i];
				console.log(rowData[0]);
				newTB.addColumn('number',rowData[0]); //assuming the first one is always a header
				var localRowIdx = 0;
				
				for(var j=1; j< rowData.length; j++) {
					newTB.setValue(localRowIdx, (i+1), rowData[j]);
					localRowIdx++;
				}
			}
			return newTB;
	  }
	  
      function drawChart() {
        var data = google.visualization.arrayToDataTable([
          ['Year', 'Sales', 'Expenses'],
          ['2004',  1000,      400],
          ['2005',  1170,      460],
          ['2006',  660,       1120],
          ['2007',  1030,      540]
        ]);

        var options = {
          title: 'Company Performance',
          hAxis: {title: 'Year', titleTextStyle: {color: 'red'}}
        };
		 
		
		var transposedData = transposeDataTable(data);
        var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
		var transposeChart = new google.visualization.ColumnChart(document.getElementById('chart_transpose'));
        chart.draw(data,...