2017-03-28 9 views
0

グラフ作成メソッドに渡されるデータを使用して、Crossfilter.jsを使用してグラフを生成しようとしています。ここで私が使用しているコードは次のとおりです。crossfilter.jsで使用するオブジェクトのプロパティをパラメータ化するにはどうすればよいですか?

function makeChart(data) { 
    var dataCrossfilter = crossfilter(data); 
    var chartOrderDim = dataCrossfilter.dimension(function (d) { 
     return d.ChartOrder; 
    }); 
    var chartDataGroup = chartOrderDim.group(); 
    var barChart = dc.barChart("#chartExample2"); 
} 

私が持っている問題は、この例では、私はデータは、私は、このメソッドに送信してるということであるか知っているということですので、私は次元を作成するために行くとき、返信しています

d.ChartOrder 

私はChartOrderがデータのプロパティの1つであることを知っています。たとえば、データは:

var data = [ 
    {ChartId: 1, ChartOrder: 1, ChartName: "Test1"}, 
    {ChartId: 2, ChartOrder: 2, ChartName: "Test2"}, 
    {ChartId: 3, ChartOrder: 3, ChartName: "Test3"}, 
    {ChartId: 4, ChartOrder: 4, ChartName: "Test4"}, 
    {ChartId: 5, ChartOrder: 3, ChartName: "Test5"}, 
    {ChartId: 6, ChartOrder: 1, ChartName: "Test6"}, 
    {ChartId: 7, ChartOrder: 2, ChartName: "Test7"} 
    ]; 

私の問題は、d.ChartOrderをパラメータ化する方法はありますか?データをこれに送信していたとし、ディメンションに返すキーを教えたかったとします。したがって、たとえば:

function makeChart(data, dimensionProperty) { 
    var dataCrossfilter = crossfilter(data); 
    var chartOrderDim = dataCrossfilter.dimension(function (d) { 
     return d.dimensionProperty; 
    }); 
    var chartDataGroup = chartOrderDim.group(); 
    var barChart = dc.barChart("#chartExample2"); 
} 

どうすればこの作品を作成できますか? dimensionPropertyを "ChartOrder"値の文字列として送信すると、機能しません。ディメンションから返すデータのプロパティをこの関数に送る方法はありますか?

答えて

1

d[dimensionProperty]を使用すると、ドット表記を使用する代わりにdimensionPropertyにアクセスできます。

そうするとになり、あなたの関数の2番目の引数の文字列として「ChartOrder」を渡します。

function makeChart(data, dimensionProperty) { 
    var dataCrossfilter = crossfilter(data); 
    var chartOrderDim = dataCrossfilter.dimension(function (d) { 
     return d[dimensionProperty]; 
    }); 
    var chartDataGroup = chartOrderDim.group(); 
    var barChart = dc.barChart("#chartExample2"); 
} 
関連する問題