2016-06-20 2 views
0

내 테이블을 시간 소인 내림차순으로 정렬하려고하지만이 필드에는 내 테스트 케이스가 오름차순입니다. 내 문제를 설명 할 수 있기를 바랍니다.타임 스탬프 별 Crossfilter/dc.table 정렬

//------------------------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); 
     }); 

누군가가 나를 도울 수 있기를 바랍니다.

+0

나를 도와 줄 수 있습니까? :/@Ethan Jewett – Addy1992

+0

dc.js 메일 링리스트에서 질문/검색 한 적이 있습니까? 나는 이것에 관해 토론이 있었다고 생각한다. 내가 알고있는 그룹과 행의 정렬을 별도로 제어하는 ​​쉬운 방법은 없습니다. 만약 당신이 함께 노력한다면 나는 도울 수 있습니다. 이 JSFiddle에는 필요한 라이브러리가 포함되어 있습니다. https://jsfiddle.net/esjewett/jusjkm8j/ –

+0

https://jsfiddle.net/tetut91e/26/ 이것은 나의 js fiddle입니다 ... Timestamp의 정렬이 맞습니다 (Latestest 상단에있다.) 그러나 The Testscript는 알파벳이 아니다. :/내가 무슨 뜻인지 아십니까? .order (d3.descending)을 사용하는 경우 텍스트는 영문자 (완벽 함)이지만 가장 오래된 TimeStamp가 맨 위에 표시됩니다. – Addy1992

답변

1

JSFiddle 예제에서 데이터 테이블에 사용 된 차원이기 때문에 그룹 내에서 테스트 스크립트가 테스트 케이스별로 정렬되어 있는지 확신 할 수 없습니다.

실제 문제는 dc.js 데이터 테이블에서 그룹의 순서와 그룹 내의 순서를 별도로 제어 할 수 없다는 것입니다. 그룹 내의 순서는 차원에서 반환 된 순서를 기반으로하며 그룹의 순서는 그룹의 텍스트로 결정됩니다. dataTable.order에 설정 한 내용에 따라 둘 다 오름차순이거나 내림차순입니다.

그럼 어떻게해야합니까? 난 당신이 그룹 내에서 정렬 기준으로 사용할 특성에 차원을 정의 권하고 싶습니다, 그리고 차원에서 위/아래 기능을 틀지하여 차원 정렬의 방향을 반대로 다음 필요한 경우 : 여기

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); 
    }); 

는이다 내가 생각하는 JSFiddle의 업데이트 된 버전 : https://jsfiddle.net/esjewett/xzrp0ggv/1/

+0

그것은 작동합니다! Ethan에게 감사드립니다. 나는 행복하다 :) – Addy1992