2017-11-28 15 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

ありがとうございました! –

関連する問題