2015-05-26 2 views
2

Так что некоторое время я боролся с тем, как фильтровать dataTable в dc.js, не затрагивая другие измерения. Это кажется противоречивым, поскольку это противоречит тому, что делает перекрестный фильтр (фильтр данных за dc.js), но я объясню, почему это может быть актуальным.Как фильтровать dataTable в dc.js, не влияя на другие измерения

Предположим, у меня есть набор данных для людей, которые называют возрастом и полом. В одном из моих данных я хочу показать только мужчин; используя один перекрестный фильтр, я был бы вынужден фильтровать все мои другие данные самцами.

Предположим, у меня также есть круговая диаграмма, в которой перечисляется первая буква имени каждого человека, и я хочу, чтобы иметь возможность фильтровать на «М». У меня есть стол для мужчин и стол для женщин. Я не хочу, чтобы эти таблицы влияли на распределение круговой диаграммы, но я хочу, чтобы иметь возможность нажимать на круговую диаграмму и фильтровать данные dc.js. Более или менее односторонний фильтр.

Каков способ достичь этого?

ответ

2

dc.js datatables принимает размеры перекрестного фильтра. Я столкнулся с проблемой, расширив измерение следующим образом.

function preFilter(dim,okey,oval){ 

    return{ 

     top:function(x){ 
      var a1 = dim.top(x).filter(function(v){ 
       return v[okey] === oval; 
      }); 
      return a1; 
     } 
    }; 
} 

Это хорошо работает для меня, я надеюсь, что это может помочь другим.

+0

Извините, я не мог понять, как эти '' x1'', '' x2'', ... '' x10'' относятся к вопросу. У вас был очень простой пример, и я предлагаю вам точно показать это решение. Текстовое объяснение было бы неплохим. –

+2

В частности, я уверен, что все, что вам нужно, это свойство «top» на возвращаемом объекте, чтобы делать то, что вы хотите сделать. –

+0

Я урезал свой ответ. Спасибо за совет. Если ваш дисплей нуждается в доступе к другим функциям измерения, просто добавьте их после вершины. –