I am trying to crate a stacked bar chart using google charts.  It's supposed to 
look like this
 http://jsfiddle.net/GTpgA/1/

Here's my code and i'm pulling data from a sharepoint list.  After a lot of 
debugging and alerts, the error is somewhere here but it all looks right to me.
*
      data.addRow('FY12',dataValues[0][1], null, null);      
      data.addRow('FY12',null, dataValues[0][2], dataValues[0][3]);      
      data.addRow(null,null,null,null);
      data.addRow('FY13',dataValues[1][1], null, null);      
      data.addRow('FY13',null, dataValues[1][2], dataValues[1][3]);      *

Here's the full code.....


function buildPlannedActual(Charts) {

    var chartTitle = "";
    var projectName = "";
    var beginFY = "";
    var endFY = "";
        var LastFY = "";
        var LastFY = "";

    // get max min values
    var maxVAxis = 50;
    var minVAxis = 0;
    var step = 5;
    var countVAxis = (maxVAxis - minVAxis) / step + 1;

          var dataValues = [
          ['FY 12', 0, 0, 0],           
      ['FY 13', 0, 0, 0]     
     ]; 


    var sourceType = getSource(Charts);
        var varSource;
         
         switch (sourceType) {
                case "SAC":
                varSource = "SAC";
                break;
                case "JAC":
                varSource = "JAC";
                break;
                case "RAC":
                varSource = "RAC";
                break;
}
  
    $().SPServices({
        operation: "GetListItems",
        listName: "ChartConfigValues",
        async: false,
        CAMLQuery: "<Query><Where><Eq><FieldRef Name='Charts' /><Value 
Type='Lookup'>" + Charts + "</Value></Eq></Where></Query>",
        completefunc: function (xData, Status) {
            var numRecords = 
parseInt($(xData.responseXML).SPFilterNode('rs:data').attr('ItemCount'), 10);
            alert("numRecords: "+numRecords);
            if (numRecords > 0) {
                $(xData.responseXML).SPFilterNode('z:row').each(function () {
                    projectName = formatStr($(this).attr("ows_ProjectName"));
                    var fiscalYear = formatStr($(this).attr("ows_FiscalYear"));
                    chartTitle = $(this).attr("ows_Title") + fiscalYear;
                    var prevYear = fiscalYear - 1;
                    beginFY = prevYear + "-10-01"; 
                    endFY = fiscalYear + "-09-30"; 
                                        LastFY = prevYear -1 + "-10-01"; 
                    LastFY = fiscalYear -1 + "-09-30";
                });
            }

        }
    });

         $().SPServices({
                operation: "GetListItems",
                async: false,
                listName: "StartingSites",
                CAMLViewFields: "<ViewFields><FieldRef 
Name='"+varSource+"PlannedDate'></FieldRef></ViewFields>",     
                CAMLQuery: "<Query><Where><And><Eq><FieldRef Name='ProjectName' 
/><Value Type='Lookup'>"+ projectName + "</Value></Eq><And><Geq><FieldRef 
Name='"+varSource+"PlannedDate' /><Value Type='DateTime'>" + beginFY + 
"</Value></Geq><Leq><FieldRef Name='"+varSource+"PlannedDate' /><Value 
Type='DateTime'>" + endFY + "</Value></Leq></And></And></Where></Query>",
                completefunc: function (xData, Status) {                        
                        var numRecords = 
parseInt($(xData.responseXML).SPFilterNode('rs:data').attr('ItemCount'), 10);
                        alert("Planned: "+numRecords);
                        if (numRecords > 0)
                        {
                                // Loop through each item 
                                
$(xData.responseXML).SPFilterNode('z:row').each(function() {
                                        // Get Sum for Rc Projected Site Months
                                        dataValues[0][1] ++;
                                });
                        }

                }               
        });
        
         $().SPServices({
                operation: "GetListItems",
                async: false,
                listName: "CurrentSites",
                CAMLViewFields: "<ViewFields><FieldRef 
Name='"+varSource+"CertainDate'></FieldRef></ViewFields>",     
                CAMLQuery: "<Query><Where><And><Eq><FieldRef Name='ProjectName' 
/><Value Type='Lookup'>"+ projectName + "</Value></Eq><And><Geq><FieldRef 
Name='"+varSource+"CertainDate' /><Value Type='DateTime'>" + beginFY + 
"</Value></Geq><Leq><FieldRef Name='"+varSource+"CertainDate' /><Value 
Type='DateTime'>" + endFY + "</Value></Leq></And></And></Where></Query>",
                completefunc: function (xData, Status) {                        
                        var numRecords = 
parseInt($(xData.responseXML).SPFilterNode('rs:data').attr('ItemCount'), 10);
                        if (numRecords > 0)
                        {
                                
$(xData.responseXML).SPFilterNode('z:row').each(function() {
                                        dataValues[0][2] ++;                    
                                        
                                });
                        }

                }               
        });     
          
$().SPServices({
        operation: "GetListItems",
        async: false,
        listName: "CurrentSites",
        CAMLViewFields: "<ViewFields><FieldRef 
Name='"+varSource+"CertainDate'></FieldRef></ViewFields>",
        CAMLQuery: "<Query><Where><And><Eq><FieldRef Name='ProjectName' 
/><Value Type='Lookup'>" + projectName + "</Value></Eq><And><Geq><FieldRef 
Name='"+varSource+"CertainDate' /><Value Type='DateTime'>" + LastFY + 
"</Value></Geq><Leq><FieldRef Name='"+varSource+"CertainDate' /><Value 
Type='DateTime'>" + LastFY + "</Value></Leq><And><IsNull><FieldRef 
Name='"+varSource+"CertainDate' /></IsNull></And></And></And></Where></Query>",
        completefunc: function (xData, Status) {
                var numRecords = 
parseInt($(xData.responseXML).SPFilterNode('rs:data').attr('ItemCount'), 10);
                if (numRecords > 0) {
                        
$(xData.responseXML).SPFilterNode('z:row').each(function () {
                        dataValues[0][3] ++;    
                        });
                }
        }
});

         $().SPServices({
                operation: "GetListItems",
                async: false,
                listName: "StartingSites",
                CAMLViewFields: "<ViewFields><FieldRef 
Name='"+varSource+"PlannedDate'></FieldRef></ViewFields>",     
                CAMLQuery: "<Query><Where><And><Eq><FieldRef Name='ProjectName' 
/><Value Type='Lookup'>"+ projectName + "</Value></Eq><And><Geq><FieldRef 
Name='"+varSource+"PlannedDate' /><Value Type='DateTime'>" + LastFY + 
"</Value></Geq><Leq><FieldRef Name='"+varSource+"PlannedDate' /><Value 
Type='DateTime'>" + LastFY + "</Value></Leq></And></And></Where></Query>",
                completefunc: function (xData, Status) {                        
                        var numRecords = 
parseInt($(xData.responseXML).SPFilterNode('rs:data').attr('ItemCount'), 10);
                        alert("Planned: "+numRecords);
                        if (numRecords > 0)
                        {
                                // Loop through each item 
                                
$(xData.responseXML).SPFilterNode('z:row').each(function() {
                                        dataValues[1][1] ++;
                                });
                        }

                }               
        });
        
         $().SPServices({
                operation: "GetListItems",
                async: false,
                listName: "CurrentSites",
                CAMLViewFields: "<ViewFields><FieldRef 
Name='"+varSource+"CertainDate'></FieldRef></ViewFields>",     
                CAMLQuery: "<Query><Where><And><Eq><FieldRef Name='ProjectName' 
/><Value Type='Lookup'>"+ projectName + "</Value></Eq><And><Geq><FieldRef 
Name='"+varSource+"CertainDate' /><Value Type='DateTime'>" + LastFY + 
"</Value></Geq><Leq><FieldRef Name='"+varSource+"CertainDate' /><Value 
Type='DateTime'>" + LastFY + "</Value></Leq></And></And></Where></Query>",
                completefunc: function (xData, Status) {                        
                        var numRecords = 
parseInt($(xData.responseXML).SPFilterNode('rs:data').attr('ItemCount'), 10);
                        if (numRecords > 0)
                        {
                                // Loop through each item 
                                
$(xData.responseXML).SPFilterNode('z:row').each(function() {
                                        
                                        // Get Sum of Actual Site Months
                                        dataValues[1][2] ++;                    
                                        
                                });
                        }

                }               
        });     

                $().SPServices({
                operation: "GetListItems",
                async: false,
                listName: "CurrentSites",
                CAMLViewFields: "<ViewFields><FieldRef 
Name='"+varSource+"CertainDate'></FieldRef></ViewFields>",
                CAMLQuery: "<Query><Where><And><Eq><FieldRef Name='ProjectName' 
/><Value Type='Lookup'>" + projectName + "</Value></Eq><And><Geq><FieldRef 
Name='"+varSource+"CertainDate' /><Value Type='DateTime'>" + LastFY + 
"</Value></Geq><Leq><FieldRef Name='"+varSource+"CertainDate' /><Value 
Type='DateTime'>" + LastFY + "</Value></Leq><And><IsNull><FieldRef 
Name='"+varSource+"CertainDate' /></IsNull></And></And></And></Where></Query>",
                completefunc: function (xData, Status) {
                        var numRecords = 
parseInt($(xData.responseXML).SPFilterNode('rs:data').attr('ItemCount'), 10);
                        if (numRecords > 0) {
                                
$(xData.responseXML).SPFilterNode('z:row').each(function () {   
                                dataValues[1][3] ++;    
                                });
                        }
                }
        });             

 // Initialize data object to hold chart data
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Name');
    data.addColumn('number', 'Planned RIP');
    data.addColumn('number', 'Actual RIP');
    data.addColumn('number', 'Anticipated RIP');
    
//NOT TO SELF: CREATE QUERIES FOR FY13 ALSO             
        data.addRow('FY12',dataValues[0][1], null, null);       
        data.addRow('FY12',null, dataValues[0][2], dataValues[0][3]);   
        data.addRow{null,null,null,null);
        data.addRow('FY13',dataValues[1][1], null, null);       
        data.addRow('FY13',null, dataValues[1][3], dataValues[1][3]);   
                

   /* $.each(dataValues, function (index, value) {                              
                                                                                
                                                                                
                        
        data.addRow([dataValues[index][0], Number(dataValues[index][1]), 
Number(dataValues[index][2]), Number(dataValues[index][3])]);
    });    */

    var options = {
        title: chartTitle,
        titleTextStyle: { color: 'black', fontName: '"Arial"', fontSize: '15' },
        legend: { textStyle: { color: 'black', fontName: '"Arial"', fontSize: 
'12' } },
        tooltip: { textStyle: { fontName: '"Arial"' } },
        colors: ["#FFFF00", "green", "blue", "#FF8000", "Red"],
        backgroundColor: {
            fill: '#D8D8D8',
            strokeWidth: '0'
        },
        vAxis: {
            title: "Number of Sites", format: '#',
            titleTextStyle: { color: 'black', fontName: '"Arial"', fontSize: 
'16' },
            gridlines: { count: countVAxis, color: 'black' },
            minValue: minVAxis,
            maxValue: maxVAxis
        },
        hAxis: { title: "Month", titleTextStyle: { color: 'black', fontName: 
'"Arial"', fontSize: '16' } },
        seriesType: "bars",
        isStacked: true,    
    };
    var chart = new 
google.visualization.ComboChart(document.getElementById(Charts));
    chart.draw(data, options);

}

-- 
You received this message because you are subscribed to the Google Groups 
"Google Visualization API" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at 
http://groups.google.com/group/google-visualization-api?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to