2017-03-15 19 views
6

私はD3コスチュームチャートのセレクタとして視覚化を使用しようとしています。私はSDKのドキュメンテーションに従っています。Microstrategy視覚化をセレクタとして使用するD3 costum chart

基本的に私は "私" varを宣言し、 "フィルタとして使用"オプションを有効にします。

var me = this; 
this.addUseAsFilterMenuItem(); 

デSVG要素を追加するときに、私ははっきりとエンドselecionメソッドを追加:私はhasSelection属性を使用し、データを取得するとき

var g = d3.select(this.domNode).append("svg") 
    .attr("width", width + margin.left + margin.right) 
    .attr("height", height + margin.top + margin.bottom) 
    .append("g") 
    .attr("transform", "translate(" + margin.left + "," + margin.top + ")") 
    .on("click", function(d) { 
     if (event.target.classList.contains('bar')) { 
      me.clearSelections(); 
      me.endSelections(); 
      return true; 
     } else { 
      return true; 
     } 
    }); 

を:

var data = this.dataInterface.getRawData(mstrmojo.models.template.DataInterface.ENUM_RAW_DATA_FORMAT.TREE, { 
    hasSelection: true 
}).children; 

そして追加バーの "applyselection"メソッド:

g.selectAll(".bar") 
.data(data) 
.enter() 
.append("rect") 
.attr("class", "bar") 
.attr("x", function(d) { 
    return x(d.name); 
}) 
.attr("y", function(d) { 
    return y(d.value); 
}) 
.attr("height", function(d) { 
    return height - y(d.value); 
}) 
.attr("width", x.rangeBand()) 
.style("fill", function(d) { 

}) 
.on("click", function(d) { 
    me.applySelection(d.selection); 
}); 

しかし、動作しません。私はbar clickイベントでd.selectionをコンソールに管理しています。

私はこれに手を差し伸べることができますか?

ありがとうございます。

答えて

2

多くの時間を費やして私のコードに何が間違っているかを知ることができました。選択方法は次のように呼び出さなければなりません:

.on("click", function(d, i) { 
    me.applySelection(data[i].attributeSelector); 
    return true; 
}); 
関連する問題