2017-11-28 1 views
1

사용자 입력에 따라 rowcharts를 추가하고 필요한 div 요소를 추가 한 다음이 요소에 rowchart를 추가하지만이 차트를 검색하는 방법을 모르겠습니다. dc.rowChart ("# rowchart_"+ checkedValues ​​[i])를 사용할 때 레이블을 처리 할 때 작동하지만 치수에 대한 오류가 발생하고 차트의 재설정 링크를 설정할 수 없습니다. 내 질문은 : 차트 개체를 검색하는 개미 방법이 있습니까?dc.js에서 해당 id로 차트 개체를 검색 할 수있는 방법이 있습니까?

감사합니다. 감사!

for(var i = 0; i < checkedValues.length; i++){ 
    $(".rowCharts").append("<div id='rowchart_" + checkedValues[i] + "' class='col-sm-12 col-md-12 col-lg-5'></div>"); 
    dc.rowChart("#rowchart_" + checkedValues[i]) 
     .width(400) 
     .height(300) 
     .margins({ top: 20, left: 10, right: 10, bottom: 20 }) 
     .dimension(ndx.dimension(function (d) { return d[checkedValues[i]]; })) 
     .group(ndx.dimension(function (d) { return d[checkedValues[i]]; }).group()) 
     // .label(function (d) { 
     //  if (dc.rowChart("#rowchart_" + checkedValues[i]).hasFilter() && !dc.rowChart("#rowchart_" + checkedValues[i]).hasFilter(d.key)) { 
     //   return d.key + '(0%)'; 
     //  } 
     //  var label = d.key; 
     //  if (all.value()) { 
     //   label += '(' + (d.value/all.value() * 100).toFixed(2) + '%)'; 
     //  } 
     //  return label; 
     // }) 
     .title(function (d) { return d.value; }) 
     .on('filtered.monitor', chartFilteredCallback) 
     .elasticX(true) 
     .rowsCap(10) 
     .ordering(function (d) { return -d.value }) 
     .xAxis().ticks(5); 
} 

답변

1

답변을 찾았습니다. 차트를 저장하기위한 배열을 만들었습니다.

rowCharts = []; 
for(var i = 0; i < checkedValues.length; i++){ 
    var chartId = "rowchart_" + checkedValues[i]; 
    $(".rowCharts").append("<div id='" + chartId + "' class='col-sm-12 col-md-12 col-lg-5'></div>"); 
    var chart = dc.rowChart("#" + chartId); 
    var dimension = ndx.dimension(function (d) { return d[checkedValues[i]]; }); 
    var group = dimension.group(); 

    rowCharts.push(chart); 

    chart 
     .width(400) 
     .height(300) 
     .margins({ top: 20, left: 10, right: 10, bottom: 20 }) 
     .dimension(dimension) 
     .group(group) 
     .label(function (d) { 
      if (chart.hasFilter() && !chart.hasFilter(d.key)) { 
       return d.key + '(0%)'; 
      } 
      var label = d.key; 
      if (all.value()) { 
       label += '(' + (d.value/all.value() * 100).toFixed(2) + '%)'; 
      } 
      return label; 
     }) 
     .title(function (d) { return d.value; }) 
     .on('filtered.monitor', chartFilteredCallback) 
     .elasticX(true) 
     .rowsCap(10) 
     .ordering(function (d) { return -d.value }) 
     .xAxis().ticks(5);    
     $("#" + chartId).html('<strong>' + checkedValues[i] + '</strong><span class="reset" style="display: none;">Selected: <span class="filter"></span></span><a class="reset" href="javascript:redrawAll(rowCharts[' + i + ']);" style="display: none;"> reset</a>'); 
} 
+0

예. 너는 너 자신 그것을 추적해야한다; dc.js는 적어도 유용한 방식으로 차트를 저장하는 데 아무 것도 제공하지 않습니다. – Gordon

+0

도움에 감사드립니다! –

관련 문제