2016-06-20 11 views
0

Ich möchte meine Tabelle nach dem Zeitstempel absteigend sortieren, aber in diesem Feld meine Testfälle aufsteigend. Ich hoffe ich kann mein Problem erklären.Crossfilter/dc.table Sortierung nach Zeitstempel

//------------------------table------------------------------------ 
    var TestCaseDim2 = perfData.dimension(function (d) { 
     return d.TestCase; 
    }); 

    dc.dataTable('#data-table') 
    .dimension(TestCaseDim2) 
     .group(function (d) { 
      return d.Timestamp.bold().fontcolor("darkblue"); 
     }) 
    .columns([ 

     function (d) { return d.SerialNumber;}, 
     function (d) { return d.Result;}, 
     ]) 
     .width(get2ndWindowSize()) 
     .order(d3.descending) 
     .size(700) 
     .renderlet(function (table) { 
     table.selectAll('.dc-table-group').classed('info', true); 
     }); 

Ich hoffe, dass mir jemand helfen kann.

+0

können Sie mir vielleicht helfen? :/@Ethan Jewett – Addy1992

+0

Haben Sie auf der Mailingliste dc.js gefragt/gesucht? Ich denke, darüber gab es Diskussionen. Es gibt keine einfache Möglichkeit, die Sortierung von Gruppen und Zeilen, die mir bekannt sind, zu steuern. Wenn Sie ein funktionierendes Beispiel zusammenstellen, kann ich versuchen zu helfen. Diese JSFiddle enthält die notwendigen Bibliotheken: https://jsfiddle.net/esjewett/jusjkm8j/ –

+0

https://jsfiddle.net/tetut91e/26/ Dies ist meine js fiddle ... Die Sortierung des Timestamp ist richtig (Neueste ist auf der Oberseite), aber die Testscript sind nicht alphabetisch:/Wissen Sie, was ich meine. Wenn ich .order (d3.descending) verwende, dann ist der Text alphabetisch (perfekt), aber der älteste TimeStamp ist oben. – Addy1992

Antwort

1

In Ihrem JSFiddle-Beispiel glaube ich, bin aber nicht sicher, ob Ihre Testskripts in Ihren Gruppen nach Testfall sortiert sind, da dies die Dimension ist, die Sie in Ihrer Datentabelle verwendet haben.

Das eigentliche Problem ist, dass Sie in einer dc.js -Datentabelle nicht die Reihenfolge der Gruppen und die Reihenfolge innerhalb der Gruppen separat steuern können. Die Reihenfolge innerhalb von Gruppen basiert auf der Reihenfolge, die von der Dimension zurückgegeben wird, und die Reihenfolge der Gruppen wird durch den Text der Gruppe festgelegt. Beide sind entweder aufsteigend oder absteigend, je nachdem, was Sie in dataTable.order festgelegt haben.

Also, was machen wir? Ich würde empfehlen, Ihre Dimension auf dem Grundstück definieren Sie innerhalb der Gruppen sortieren möchten, und dann, wenn nötig, die Richtung der Dimension Art Umkehrung durch die oben/unten Funktionen auf der Dimension Spiegeln:

var perfData = crossfilter(data); 
var testScriptDim = perfData.dimension(function (d) { 
    return d.testscript; 
}); 
testScriptDim.top = testScriptDim.bottom; 

dc.dataTable('#data-table') 
    .dimension(testScriptDim) 
    .group(function (d) { 
     return d.date.bold().fontcolor("darkblue"); 
    }) 
    .columns([ 
     function (d) { return d.testscript; }, 
     function (d) { return d.duration; }, 
     function (d) { return d.clickcount; } 
    ]) 
    .size(100) 
    .order(d3.descending) 
    .renderlet(function (table) { 
     table.selectAll('.dc-table-group').classed('info', true); 
    }); 

Hier ist ein aktualisierte Version Ihrer JSFiddle, die ich denke, was Sie wollen: https://jsfiddle.net/esjewett/xzrp0ggv/1/

+0

Es funktioniert !!! Danke Ethan, du bist so hilfsbereit !!! Ich bin froh:) – Addy1992