Link to home
Start Free TrialLog in
Avatar of Isaac
IsaacFlag for United States of America

asked on

jquery increment

Hi All,

I have two lists called "Analyst" and "Log".
I am trying to find out how many times each analyst was assigned an assignment and represent the data in a google chart table like so "https://developers.google.com/chart/interactive/docs/gallery/table".
My actual production list contains 2000+ items.

I want to use jquery to accomplish the counting but I'm sort of stuck.

Here's what I have so far:

var anArray = new Array();
var anIndex=[];


//push names of analyst into an array to use later
$().SPServices({
    operation: "GetListItems",
    async: false,
    listName: "Analyst",
	CAMLViewFields: "<ViewFields><FieldRef Name='Title'></FieldRef></ViewFields>",
	CAMLQuery: "<Query><OrderBy><FieldRef Name='Title' /></OrderBy></Query>",
    completefunc: function (xData, Status) {
	//alert(xData.responseXML.xml);
      $(xData.responseXML).SPFilterNode("z:row").each(function() { 
			anArray.push($(this).attr("ows_Title"));			
      });
     }
	 //initialize "anIndex" array to zero
	 
  });

$().SPServices({
    operation: "GetListItems",
    async: false,
    listName: "Log",
	CAMLViewFields: "<ViewFields><FieldRef Name='Days'></FieldRef><FieldRef Name='Analyst'></FieldRef></ViewFields>",
	CAMLQuery: "<Query><OrderBy><FieldRef Name='Days' /></OrderBy></Query>",
    completefunc: function (xData, Status) {
	//alert(xData.responseXML.xml);
      $(xData.responseXML).SPFilterNode("z:row").each(function() { 		
		
//As you loop through the array, if 'Analyst' name equals what's in the array, then increment
		for (var x=0; x<anArray.length; x++)
		{
			if ($(this).attr("ows_Analyst") == anArray[x])
			{
				anArray[x] += 1;
			}
		}		
		
      });
     }
  });

Open in new window


Does what I have so far look right?  For some reason, it seems like it won't work because, anArray[x] is never initialized to zero.

Any ideas/suggestions/comments would be great.

My analyst list:
http://isaac.issharepoint.com/Lists/Analyst/AllItems.aspx

My log list:
http://isaac.issharepoint.com/Lists/Log/AllItems.aspx

Thanks!
ASKER CERTIFIED SOLUTION
Avatar of Rainer Jeschor
Rainer Jeschor
Flag of Germany image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Isaac

ASKER

Here's what I have but does not work.

http://isaac.issharepoint.com/Shared%20Documents/pieChart.aspx

Here's the code:
<!-- Step 1 - Load libraries -->
<script type="text/javascript" src="http://isaac.issharepoint.com/Script/jquery-1.8.2.min.js" language="javascript"></script>
<script type="text/javascript" src="http://isaac.issharepoint.com/Script/jquery.SPServices-0.7.2.min.js" language="javascript"></script>
<script type="text/javascript" src="http://isaac.issharepoint.com/Script/utilityFunctions.js" language="javascript"></script>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>


<script type="text/javascript">
_spBodyOnLoadFunctionNames.push("buildChartFunc");
//The Google Visualization library implements several classes and methods that you'll need to manipulate all charts
google.load("visualization", "1", {packages:["corechart"]});

//$(document).ready(function() { 
function buildChartFunc()
{

var Over30=0;
var Under30=0;

var anArray = new Array();

   // Initialize data object to hold chart data
    var dataAn = new google.visualization.DataTable();
    dataAn.addColumn('string', 'Month');
    dataAn.addColumn('string', 'Analyst');
    dataAn.addColumn('number', 'Correspondence Closed Over 30');
	
<!-- Step 2 - Prepare your data -->	
//push names of analyst into an array to use later
$().SPServices({
    operation: "GetListItems",
    async: false,
    listName: "Analyst",
	CAMLViewFields: "<ViewFields><FieldRef Name='Title'></FieldRef></ViewFields>",
	CAMLQuery: "<Query><OrderBy><FieldRef Name='Title' /></OrderBy></Query>",
    completefunc: function (xData, Status) {
	//alert(xData.responseXML.xml);
      $(xData.responseXML).SPFilterNode("z:row").each(function() { 
			anArray.push({
				Analyst: $(this).attr("ows_Title"),
				Count:	 0
				});			
      });
     }
  }); 
  
$().SPServices({
    operation: "GetListItems",
    async: false,
    listName: "Log",
	CAMLViewFields: "<ViewFields><FieldRef Name='Days'></FieldRef><FieldRef Name='Analyst'></FieldRef></ViewFields>",
	CAMLQuery: "<Query><OrderBy><FieldRef Name='Days' /></OrderBy></Query>",
    completefunc: function (xData, Status) {
	//alert(xData.responseXML.xml);
      $(xData.responseXML).SPFilterNode("z:row").each(function() { 		
//As you loop through the array, if 'Analyst' name equals what's in the array, then increment
		for (var x=0; x<anArray.length; x++)
		{
			if ($(this).attr("ows_Analyst") == anArray[x].Analyst)
			{
				anArray[x].Count += 1;
			}
		}				
      });
     }
  });
  
   $.each(anArray, function (index, value) {																													
        dataAn.addRow([anArray[index].Analyst,anArray[index].Count]);
    }); 

	  
	 // Create and draw the visualization.
        new google.visualization.ColumnChart(document.getElementById('visualization')).
            draw(dataAn,
                 {title:"Conformance Log",
                  width:900, height:400,
                  hAxis: {title: "Analyst"}}
            );	  

}
</script>
<table>
	<tr><td><div id="visualization" style="width: 650px; height: 400px;"></div></td></tr>
</table>

Open in new window