Невозможно создать строку для каждой транзакции и сортировать в порядке возрастания в JavaScript - PullRequest
0 голосов
/ 16 октября 2018

У меня есть данные json, которые выглядят следующим образом:

{
"hits":{
"runid2":{
"RequestId":"SR0273",
"usecasedetails":[
{
"Responsetime":{
"U1_test_AddProduct_10_Menu":"348",
"U1_test_05_ClickAerin":"590",
"U1_test_AddProduct_06_SelectProduct":"1394",
"U1_test_AddProduct_08_OpenBasket":"3620"
},
"referenceid":17
},
{
"Responsetime":{
"App-Launch":"2047"
},
"referenceid":18
}
],
"DeviceName":"[Nexus 6P2]"
},
"runid1":{
"RequestId":"SR0271",
"usecasedetails":[
{
"Responsetime":{
"U1_test_AddProduct_10_Menu":"3480",
"U1_test_05_ClickAerin":"5900",
"U1_test_AddProduct_06_SelectProduct":"139",
"U1_test_AddProduct_08_OpenBasket":"362"
},
"referenceid":17
},
{
"Responsetime":{
"App-Launch":"2047"
},
"referenceid":18
}
],
"DeviceName":"[Nexus 6P1]"
}
}
}

Я использовал приведенный ниже код для анализа данных json:

$.getJSON("comparison.json", function(json) {

         var Hits= json.hits;
        var runIdArr =[];
          var runIdcount = Object.keys(Hits).length;


          var count = Object.keys(Hits).length;
  //alert("count = "+ count);
  var usecaseCount =Hits.runid1.usecasedetails.length;

var devicename,usecasedetails,responsetime,tablerow;




  for(var i = 0; i<usecaseCount ;i++)
  {

               var tableHeadingrow = document.createElement('tr');
      var tablerow = document.createElement('tr');
    var tablerow1= document.createElement('tr');
    var tablerow2= document.createElement('tr');
    var tablerowPara= document.createElement('tr');
    var tablerow3= document.createElement('tr');


    var tableHeadingheader=document.createElement('th');
    var tableheader=document.createElement('th');
    var tableheader1=document.createElement('th');
    var tableheader2=document.createElement('th');
    var tableheaderPara=document.createElement('th');



    tableHeadingheader.style.textAlign="center";
    tableheader.style.textAlign="center";

    var usecasedetails =  Hits.runid1.usecasedetails ;

        var usecasename = usecasedetails[i].usecasename;

   tableHeadingheader.setAttribute("style","font-weight: bold;color:#3c9adc");
    tableHeadingheader.innerHTML=usecasename+" ResponseTime Summary";
    tableheader.innerHTML="Report#";
    tableheader1.innerHTML="DeviceName";
    tableheader2.innerHTML="UseCase";
    tableheaderPara.innerHTML="Transaction Name";



    if(i==0)
    {
      tablerow.appendChild(tableheader);
      tablerow1.appendChild(tableheader1);
    }
    tableHeadingrow.appendChild(tableHeadingheader);
      tablerow2.appendChild(tableheader2);
    tablerowPara.appendChild(tableheaderPara);






    for(var j=1; j<=count; j++)
          {

        var RequestId = Hits["runid"+j].RequestId;

         var devicename = Hits["runid"+j].DeviceName;

        var usecasedetails =  Hits["runid"+j].usecasedetails ;

        var usecasename = usecasedetails[i].usecasename;

          var Responsetime=(usecasedetails[i].Responsetime);
        var resTimeLength = Object.keys(Responsetime).length;




          Object.keys(Responsetime).forEach(function(key)
          {
            if(j==1)
            {


              var tableheader3=document.createElement('tr');
              tableheader3.innerHTML=key;
            //alert("hi saket"+key);

              tablerow3.appendChild(tableheader3);
            }



          });



        var k=1;
        var ss = document.createElement('td');
        Object.keys(Responsetime).forEach(function(key)
          {

      //    alert("the value of k is "+ k)

          value = Responsetime[key];

          var tablecolum3=document.createElement('tr');  

          if(value<5000)
                {
               // document.getElementById('launchpanel2').className+= 'panel panel-green';
               tablecolum3.innerHTML=value;

                }
                else if((value>5000)&&(value<=6000))
                {
                  tablecolum3.setAttribute("style","color:#ffbf00;font-weight:bold");
                 tablecolum3.innerHTML=value;

            }
                else if(value>6000)
                {

                tablecolum3.setAttribute("style","color:#FF0000;font-weight:bold");
                 tablecolum3.innerHTML=value;
                }




      //    alert("hi saket 2nd time");
          ss.appendChild(tablecolum3);  
      //    tablerow3.appendChild(saket);
          k++;
        });
        tablerow3.appendChild(ss);

        var tableHeader=document.createElement('th');
        var tableHeader1=document.createElement('th');
        var tableSubHeader=document.createElement('th');


        tableHeader.innerHTML=RequestId;
            tableHeader1.innerHTML=devicename;
          tableSubHeader.innerHTML=usecasename;   


        if(i==0)
        {
          tablerow.appendChild(tableHeader);
          tablerow1.appendChild(tableHeader1);
        }
        tablerow2.appendChild(tableSubHeader);


      }

      document.getElementById("responseTableoady").appendChild(tableHeadingrow);
      document.getElementById("responseTableoady").appendChild(tablerow);
      document.getElementById("responseTableoady").appendChild(tablerow1);
  //    document.getElementById("responseTableoady").appendChild(tablerow2);
      document.getElementById("responseTableoady").appendChild(tablerowPara);
      document.getElementById("responseTableoady").appendChild(tablerow3);

           }         

        });

Все мои имена транзакций и значения добавляютсяв тот же ряд.Как показано на рисунке ниже:

enter image description here

В конечном счете, я хотел бы создать уникальную строку для каждой транзакции и соответствующее время отклика и отсортировать имя транзакции в порядке возрастания. Возможно, я делаю это неправильно, поэтому, если есть более простой способ достижения этой конечной цели, я открыт для идей.Заранее спасибо.

...