2017-03-28 4 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"); 
} 

내가 가진 문제는이 예에서, 내가 데이터 나는이 방법을 보내고있다하는 것이 무엇인지 알고, 그래서 나는 차원을 만들 갈 때, 나는 ChartOrder가 데이터의 속성 중 하나라는 것을 알고 있기 때문에

d.ChartOrder 

을 반환하기 때문에 반환합니다. 그래서 예를 들어, 데이터는 다음과 같습니다

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

도트 표기법을 사용하는 대신 dimensionProperty에 액세스하려면 d[dimensionProperty]을 사용하십시오.

그런 다음 될 함수의 두 번째 인수에 문자열로 "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"); 
}