2016-07-19 3 views
2

FileSaver.js을 사용하여 필터링 된 테이블 데이터 dc.js를 내보내려고합니다.dc.js filesaver.js를 사용하여 테이블 내보내기 필터링

아래 코드를 사용하여 this을 기반으로 모든 필드를 내보내는 것만 제외하면 괜찮습니다. 그러나 필자는 테이블의 특정 필드가 필요하지만 반면 계산 된 필드는 소수에 불과합니다.

d3.select('#download') 
 
    .on('click', function() { 
 
     var blob = new Blob([d3.csv.format(dateDim.top(Infinity))], {type: "text/csv;charset=utf-8"}); 
 
     saveAs(blob, DateT + '.csv'); 
 
    });

내가 그 차원이 아니라 테이블을 가리킬 수있는 방법이 있나요?

감사합니다.

편집 :

d3.select('#download') 
    .on('click', function() { 
     var data = MYTABLEDIM.top(Infinity); 
     { 
      data = data.map(function(d) { 
       var row = {}; 
       MYTABLENAME.columns().forEach(function(c) { 
        row[MYTABLENAME._doColumnHeaderFormat(c)] = MYTABLENAME._doColumnValueFormat(c, d); 
       }); 
       return row; 
      }); 
     } 
     var blob = new Blob([d3.csv.format(data)], {type: "text/csv;charset=utf-8"}); 
     saveAs(blob, 'data.csv'); 
}); 

답변

1

좋은 질문 아래의 작업 코드입니다.

실제로 데이터 테이블의 문서화되지 않은 방법을 사용하여 열 정의에 따라 데이터의 서식을 지정할 수 있습니다.

the example에 라디오 버튼을 업데이트하여 다운로드 할 데이터를 선택했습니다. table 무선 선택할 때

기본적
d3.select('#download') 
    .on('click', function() { 
     var data = nameDim.top(Infinity); 
     data = data.map(function(d) { 
      var row = {}; 
      table.columns().forEach(function(c, i) { 
       // if you're using the "original method" for specifying columns, 
       // use i to index an array of names, instead of table._doColumnHeaderFormat(c) 
       row[table._doColumnHeaderFormat(c)] = table._doColumnValueFormat(c, d); 
      }); 
      return row; 
     }); 
     var blob = new Blob([d3.csv.format(data)], {type: "text/csv;charset=utf-8"}); 
     saveAs(blob, 'data.csv'); 
    }); 

, 우리가 사용하는 데이터 행 단위 변환 것이다 : 여기

가 변환되고 상기 테이블에서 인코딩 된 바와 같이 데이터를 다운로드 코드 테이블이 데이터를 포맷하는 데 사용하는 것과 동일한 함수.

행은 표와 같이 정렬되지 않은 원래 데이터 순서대로 표시됩니다. (그리고 엄밀히 말하면, the columns may not be in the same order either). 이는 더 큰 노력이 될 것이며 dc.js에 새로운 기능이 필요할 수도 있습니다. 그러나 이것은 아무런 변화없이 작동합니다. 희망이 도움이됩니다!

+0

감사합니다. Gordon, 정말 흥미로운 기능입니다. 시도했지만 두 옵션 모두 동일한 데이터를 내 보냅니다. '테이블'에 대한 4 개의 참조는 모두 일반적인 API 테이블 또는 일부/모두가 우리가 데이터를 가져 오려고하는 var '테이블'을 참조합니다. – stutray

+0

흠 당신에게 효과가 없었습니다. . 예제 페이지에서 기대하는 바를 수행합니까? 표는 여기에있는 dc 차트를 참조하지만 라디오 버튼 옵션 이름으로도 사용했습니다. 당신은 아마 그것 주위에'if'를 원하지 않을 것입니다, 그것은 예제를위한 것입니다. – Gordon

+0

이제 작동합니다. 문제는 제가 테이블에 대한 참조를 변경하지 않았다는 것입니다. 편집의 세부 사항. Header 이름을 지정하는 방법은 기본적으로 테이블 정의의 이름을 사용합니다. 다시 한번 감사드립니다. – stutray