Thursday, 7 February 2019

SharePoint: How to prepare group-by data for tree like w2ui grid?


var listData=[];

function loadTable()
{//start loadTable
var val,index,cval,cindex,TypeOne,TypeTwo,Unknown,TypeOneTotal=0,TypeTwoTotal=0,UnknownTotal=0,firstItem=true,rid=0;
$().SPServices({//sart service call
    operation: "GetListItems",
    async: false,
    listName: "List Name",
    CAMLViewFields: "<ViewFields Properties='True' />",
    CAMLQuery: "<Query><Where><Neq><FieldRef Name='ID' /><Value Type='Conter'>0</Value></Neq></Where></Query>",
    CAMLRowLimit: 0,
    completefunc: function (xData, Status) {
      $(xData.responseXML).SPFilterNode("z:row").each(function() {
   
        if($(this).attr("ows_Item_x0020_Type")==undefined)
        {
        TypeOne=0; TypeTwo=0; Unknown=1; UnknownTotal++;
        }
        else if($(this).attr("ows_Item_x0020_Type")=='TypeOne')
        {
        TypeOne=1; TypeTwo=0; Unknown=0; TypeOneTotal++;
        }
else if($(this).attr("ows_Item_x0020_Type")=='TypeTwo')
        {
        TypeOne=0; TypeTwo=1; Unknown=0; TypeTwoTotal++;
        }
        //First record
      if(firstItem==true)
      {
      listData.push({
      recid: ++rid,
      'Column 1': $(this).attr("ows_Column 1"),
      'Column 2': '...',
      'Unknown' : Unknown,
      'TypeOne' : TypeOne,
      'TypeTwo' : TypeTwo,
      'Total':1,
      w2ui: {
                    children: [
                        {
                        recid: ++rid,
                        'Column 1': '',
'Column 2': $(this).attr("ows_Column 2"),
'Unknown' : Unknown,
'TypeOne' : TypeOne,
'TypeTwo' : TypeTwo,
'Total':1,
      }
                    ]
                    }
      });
    firstItem=false;
    rid++;
      }
      else
      {

//Update Column 1 data
val = $(this).attr("ows_Column 1");
index=-1;
for (var i=0; i<listData.length; i++){
     if(listData[i].Column 1==val){
       index = i;
       break;
     }
   
  }

if(index==-1)
{
listData.push({
      recid: rid,
      'Column 1': $(this).attr("ows_Column 1"),
      'Column 2': '...',
      'Unknown' : Unknown,
      'TypeOne' : TypeOne,
      'TypeTwo' : TypeTwo,
      'Total':1,
      w2ui: {
                    children: [
                    {
                    recid: ++rid,
                        'Column 1': '',
      'Column 2': $(this).attr("ows_Column 2"),
      'Unknown' : Unknown,
      'TypeOne' : TypeOne,
      'TypeTwo' : TypeTwo,
      'Total':1,
      }
                    ]
                    }
      });
      rid++;
}
else
{
listData[index]['Unknown'] += Unknown;
listData[index]['TypeOne'] += TypeOne;
listData[index]['TypeTwo'] += TypeTwo;
listData[index]['Total'] += 1;


//Update Column 2 data
cval = $(this).attr("ows_Column 2");
cindex=-1;
for (var i=0; i<listData[index].w2ui.children.length; i++){
     if(listData[index].w2ui.children[i].Column 2==cval){
       cindex = i;
       break;
     }
   
  }

if(cindex==-1)
{
listData[index].w2ui.children.push({
      recid: rid,
      'Column 1': '',
      'Column 2': $(this).attr("ows_Column 2"),
      'Unknown' : Unknown,
      'TypeOne' : TypeOne,
      'TypeTwo' : TypeTwo,
      'Total':1,
      });
      rid++;
}
else
{
listData[index].w2ui.children[cindex]['Unknown'] += Unknown;
listData[index].w2ui.children[cindex]['TypeOne'] += TypeOne;
listData[index].w2ui.children[cindex]['TypeTwo'] += TypeTwo;
listData[index].w2ui.children[cindex]['Total'] += 1;
}

}
     
      }
     
      });
    }
  });//end service call

//summary row
listData.push({
      recid: rid,
      'Column 1': 'All',
      'Column 2': 'All',
      'Unknown' : UnknownTotal,
      'TypeOne' : TypeOneTotal,
      'TypeTwo' : TypeTwoTotal,
      'Total':UnknownTotal+TypeOneTotal+TypeTwoTotal,
      w2ui: { summary: true },
      });

  //someFunction();

}//end loadTable

No comments:

Post a Comment