// your code goes here
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', sharePointReady);
// Create an instance of the current context.
function sharePointReady() {
clientContext = SP.ClientContext.get_current();
website = clientContext.get_web();
clientContext.load(website);
clientContext.executeQueryAsync(onRequestSucceeded, onRequestFailed);
}
function onRequestSucceeded() {
getItemsFromView();
}
function onRequestFailed(sender, args) {
alert('Error: ' + args.get_message());
}
var collListItem; //ListItems
var chartX = []; //X-Axis Labels
var chartY = []; //Y-Axis Values
var chartJs = "https://h...content-available-to-author-only...t.com/teams/CCOD/Style%20Library/ChartLibrary/Chart.min.js";
var chartId = "myChart";//Chart Canvas Div
function getItemsFromView()
{
var listTitle="Trial";
var viewTitle="All Items";
var context = new SP.ClientContext.get_current();
var list = context.get_web().get_lists().getByTitle(listTitle);
var view = list.get_views().getByTitle(viewTitle);
context.load(view);
context.executeQueryAsync(
function(sender, args) {getItemsFromList(listTitle, "<View><Query><OrderBy><FieldRef Name=Status_x0020__x0028_Calculated_x' Ascending='FALSE' /></OrderBy></Query></View>")},
function(sender, args) {alert("error: " + args.get_message());}
);
}
function getItemsFromList(listTitle, queryText)
{
var context = new SP.ClientContext.get_current();
var list = context.get_web().get_lists().getByTitle(listTitle);
var query = new SP.CamlQuery();
query.set_viewXml(queryText);
var items = list.getItems(query);
context.load(items);
context.executeQueryAsync(
function()
{
var listEnumerator = items.getEnumerator();
var i = 0;
var highestValue=0;
var statuspending = "Pending";
var pendingcount = 0;
var statusOverDue = "OverDue";
var OverDuecount = 0;
while (listEnumerator.moveNext())
{
var item=listEnumerator.get_current();
var statusName = item.get_item("Status_x0020__x0028_Calculated_x");
if(statusName=="Pending")
{
pendingcount= pendingcount + 1;
}else if(statusName == "Over Due")
{
OverDuecount = OverDuecount +1;
}
i++;
}
chartX.push(statuspending);
chartY.push(pendingcount);
highestValue = pendingcount + 10;
chartX.push(statusOverDue);
chartY.push(OverDuecount);
highestValue = OverDuecount + 10;
//alert("items rtrieved: " + i);
console.log("items retrieved: " + i);
//Load Chart JS
loadJS(chartJs, function () {
//Generate Data
var barChartData = {
labels: this.chartX,
datasets: [
{
fillColor : "rgba(0, 39, 118, 1)",
strokeColor : "rgba(215, 120, 112, 1)",
data: this.chartY
}
]
};
//Display Chart
var ctx = document.getElementById(chartId).getContext("2d");
var barChart = new Chart(ctx).Bar(barChartData,{
scaleOverride: true,
scaleSteps: 10,
scaleStepWidth: 10,
scaleStartValue: 0,
barValueSpacing: 2,
scaleShowGridLines: false,
barDatasetSpacing: 1,
barStrokeWidth: 1,
scaleLineWidth: 1
});
});
},
function(sender, args) {alert("error in inner request: " + args.get_message());}
);
}
function loadJS(src, callback) {
var s = document.createElement('script');
s.src = src;
s.async = true;
s.onreadystatechange = s.onload = function () {
var state = s.readyState;
if (!callback.done && (!state || /loaded|complete/.test(state))) {
callback.done = true;
callback();
}
};
document.getElementsByTagName('myChart')[0].appendChild(s);
}