2014-02-19 4 views
2

dc.js를 사용하고 있습니다.dc.js 여러 값으로 필터 추가

확인란을 선택하여 필터를 추가하고 싶습니다. 나는 필터를 필요로하는 기반으로 체크 박스를 선택하면 여기 내 시나리오

enter image description here

입니다.

여기

 var ndx = crossfilter(readData); 

    var practiceDimension = ndx.dimension(function (d) { 
      return d.practice_name; 
     }); 

    $('#treeview input[name="practice_name[]"]:checked').each(function() { 
      if(searchPracticeArray.indexOf($(this).val()) == -1) 
       searchPracticeArray.push($(this).val()); 
       // If I added searchPracticeArray as filter parameter then it's not working 
       // searchPracticeArray value are ['LPS','Mercy'] 

practiceDimension = practiceDimension.filter($(this).val()); 
       bubbleChart.filter($(this).val());  

     }); 

은 현재 내가이 확인란을 가지고 있지만 더 두 개의 더해야 내 코드입니다.

답변

0

기능을 기준으로 차원을 필터링 할 수 있습니다. 당신의 경우에 이것을하는 것이 좋습니다. API documentation.

그러나이 기능은 데이터 집합의 모든 레코드를 통해 실행되므로 DOM 쿼리를 한 번 수행 한 다음 해당 범위의 배열에 저장하는 것이 좋습니다. 그 함수에 필터를 걸면됩니다.

+0

안녕하세요, 제가 몇 가지 논리를 발견했습니다. 확인해주세요.이 올바른 방법으로 여러 필드에서 필터를 수행 할 수 있는지 확인해주세요. –

0

안녕하세요 나는이

같은 몇 가지 솔루션을 찾을 수있는 것은 여기 searchPracticeArray는 선택에 따라 값을 저장 배열 값입니다.

if(searchPracticeArray.length > 0) 
{ 
var practiceDimensionFilterData; 
for(var d=0; d < searchPracticeArray.length; d++) 
{ 
    pract_name_search = searchPracticeArray[d].key;    
    practiceDimensionFilterData = readData.filter(function(d){ return(d.practice_name == pract_name_search)})    
    practiceDimension2[d] = practiceDimensionFilterData 
    if(d > 0) 
    { 
    practiceDimension6 = practiceDimension2[0].concat(practiceDimension2[d]) 
    } 
    else{ 
    practiceDimension6 = practiceDimension2[d]; 
    } 
    bubbleChart.filter(pract_name_search); 
} 
ndx = crossfilter(practiceDimension6); 

} 
+0

아니요, 정확하지 않거나 Crossfilter를 사용하지 않습니다. Crossfilter의 차원 및 필터 API를 사용해야합니다. –