2

Ich habe diese Daten in einer Google-Datentabelle:google.visualisation.DataTable() verschmelzenden Reihen

datatable1

Ich brauche Reihen zu fusionieren, die das gleiche Datum haben. So wäre das Ergebnis:

datatable2

Gibt es ein Build-in-Methode in der Datentabelle, dies zu erreichen oder kann mir jemand einen Tip geben, wie dies zu tun, ohne die Notwendigkeit von typischen Iterieren durch die Tabelle und den Vergleich auf jede Reihe.

HIER IST jsfiddle link, was ich jetzt versuche.

jsfiddle.net/Kwangsub_Ahn/ohh8397h/7/ 

HTML 
<script type="text/javascript" src="https://www.google.com/jsapi"></script> 
<div id="table_div"></div> 

JAVASCRIPT 
google.load("visualization", "1.1", { 
    packages: ["table"] 
}); 
google.setOnLoadCallback(drawTable); 

function drawTable() { 
    var data = new google.visualization.DataTable(); 
    data.addColumn('string', 'Date'); 
    data.addColumn('string', 'Project'); 
    data.addColumn('string', 'System'); 
    data.addColumn('number', 'No'); 
    data.addRows([ 
     ['7/31/2014', 'project1', 'system1', 5], 
     ['5/2/2014', 'project2', 'system2', 2], 
     ['5/2/2014', 'project1', 'system1', 5], 
     ['1/31/2014', 'project3', 'system4', 1] 
    ]); 

    var view = new google.visualization.DataView(data); 

    var id = document.getElementById('table_div'); 
    var table = new google.visualization.Table(id); 

    table.draw(view, { 
     allowHtml: true, 
     width: '100%', 
     height: '100%', 
     page: 'enable', 
     pageSize: 10 
    }); 
} 
+0

Sie besser Hilfe bekommen würde, wenn Sie zur Verfügung gestellt mit dem, was Sie in tun dies bisher versucht haben ... – Searching

Antwort

1

gibt es keine Standard-Optionen,

aber Sie können die Tabelle Diagramm manuell ändern,

sobald die 'ready' Ereignis ausgelöst wird,

siehe folgende Arbeits Schnipsel ...

google.charts.load('current', { 
 
    callback: drawTable, 
 
    packages: ['table'] 
 
}); 
 

 
function drawTable() { 
 
    var data = new google.visualization.DataTable(); 
 
    data.addColumn('string', 'Date'); 
 
    data.addColumn('string', 'Project'); 
 
    data.addColumn('string', 'System'); 
 
    data.addColumn('number', 'No'); 
 
    data.addRows([ 
 
     ['7/31/2014', 'project1', 'system1', 5], 
 
     ['5/2/2014', 'project2', 'system2', 2], 
 
     ['5/2/2014', 'project1', 'system1', 5], 
 
     ['1/31/2014', 'project3', 'system4', 1] 
 
    ]); 
 

 
    var view = new google.visualization.DataView(data); 
 

 
    var id = document.getElementById('table_div'); 
 
    var table = new google.visualization.Table(id); 
 

 
    google.visualization.events.addOneTimeListener(table, 'ready', function() { 
 
     var rowLabel = null; 
 
     var rowIndex; 
 
     var rowSpan; 
 
     var rows = id.getElementsByTagName('tr'); 
 
     Array.prototype.forEach.call(rows, function (row, index) { 
 
     if (rowLabel !== row.cells[0].innerHTML) { 
 
      rowLabel = row.cells[0].innerHTML; 
 
      rowIndex = index; 
 
      if (rowSpan > 1) { 
 
      rows[index - rowSpan].cells[0].rowSpan = rowSpan; 
 
      } 
 
      rowSpan = 1; 
 
     } else { 
 
      rowSpan++; 
 
      row.removeChild(row.cells[0]); 
 
     } 
 
     }); 
 
    }); 
 

 
    table.draw(view, { 
 
     allowHtml: true, 
 
     width: '100%', 
 
     height: '100%', 
 
     page: 'enable', 
 
     pageSize: 10 
 
    }); 
 
}
<script src="https://www.gstatic.com/charts/loader.js"></script> 
 
<div id="table_div"></div>

Anmerkung: Man denke nicht, dass es einen einfacheren Weg, ohne Iterieren jede Zeile

+0

Danke WhiteHat! Es funktioniert sehr gut. Ihre Antwort hat mir sehr geholfen :) – user3466549

0

Code versucht haben, es funktioniert gut, bis die 1o Reihe sind die anderen Zeilen nicht zusammengeführt und auf Art, auf Seite Ändern Sie die Zusammenführungsdaten, die nicht zusammengeführt werden, in die Originaldaten. Mein aktuelles Szenario besteht darin, Zeilen mit denselben Werten zusammenzuführen, möglicherweise aus mehreren Spalten.

Siehe meine Beispieldaten

enter image description here

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier einzubeziehen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/18955078) –

Verwandte Themen