2014-06-17 4 views
2

dc.js 및 crossfilter와 함께 쉬운 문제에 봉착했습니다.dc.js 데이터 테이블에 표시 할 요소를 제어하십시오.

치수에 데이터 테이블이 있으며 데이터가 올바르게 표시됩니다. 문제는 '가장 나쁜'데이터 항목을 표시하려고하지만 데이터 테이블은 필터에서 '가장 좋은'항목을 선택한다는 것입니다.

다음은 현재 테이블 코드의 스케치입니다.

var alertnessDim = ndx.dimension(function(d) {return d.alertness1;}); 

dc.dataTable(".dc-data-table") 
    .dimension(alertness1) 
    .group(function (d) { 
     return d.DATE.getYear(); 
    }) 
    .columns([ 
     function (d) { 
      return d.DATE; 
     }, 
     function (d) { 
      return d['FLEET']; 
     }, 
     function (d) { 
      return d.alertness1; 
     } 

    ]) 
    .sortBy(function (d) { 
     return d.alertness1; 
    }) 
    .order(d3.ascending); 

이 제대로 crossfilter에 연결이 올바른 순서로 항목을 정렬하지만,이 표시되어 25 개 항목이 가장 높은 경계 값이 아닌 가장 낮은 그들이다.

누구든지이 문제를 해결하는 방법에 대해 아이디어를 갖고 있습니다. 다른 차원을 만들지는 않은 것이 어떻습니까?

답변

2

여기에 혼동을 일으킬 수 있습니다. 당신은 이것이 지원되는 유스 케이스라고 생각 하겠지만, 말할 수있는 한 그것이 아닙니다. 데이터 테이블은 dimension.top을 사용하므로 항상 가장 높은 값을 사용합니다.

그래서 반대 주문/키가있는 특수 치수를 사용하는 방법은 없다고 생각합니다. 다른 차트의 경우 group.order을 사용하여 가장 낮은 값을 반환하도록 할 수 있습니다 (heh). 그러나 데이터 테이블은 값을 줄이지 않기 때문에 그룹을 사용하지 않습니다.

데이터 테이블에도 여기에 도움이되지 않는 order 매개 변수가 있다는 것은 혼란 스럽습니다.

희망 하시겠습니까? 그렇지 않으면 코드에서 주위를 둘러 봐야 할 것 같아요. 당겨 요청 항상 환영합니다! (바람직하게 테스트하여)

+0

충분합니다. 시간이 좀 있으면 코드를 확인해보십시오. 주문이 오름차순으로 설정된 경우 dimension.bottom을 사용하는 것이 좋습니다. – monostop

+0

좋은 생각입니다. 고마워요. [제안 사항과 관련된 문제 열기] (https://github.com/dc-js/dc.js/issues/new)도 자유롭게 이용하십시오. 표가 훨씬 더 일반적 일 수 있다는 데는 의문의 여지가 없습니다. – Gordon

0

특정 열에 정렬 내림차순 달성 한 빠르게, 그 음의 값으로 정렬하는 것이다 .sortBy (함수 (d) {- d.ALARM_OCCURRENCE를 반환}); // 가장 높은 알람 횟수를 먼저 표시합니다.