2014-02-19 2 views
1

У меня есть lineChart с несколько сложной функцией .valueAccessor. У меня также есть barChart с тем же размером и группой.lineChart не обновляется, даже если используется тот же размер

Существует несколько других графиков на веб-странице, но в других измерениях и группах.

При фильтрации с использованием одной из других диаграмм barChart обновляется правильно, но не lineChart. Может ли быть что-то, объясняющее это поведение?

Я хотел бы получить обратную связь, прежде чем настраивать jsFiddle, так как мои данные довольно тяжелые.

EDIT: здесь fiddle. Он извлекает 7 Мбайт данных при вызове ajax, поэтому требуется некоторое время для запуска. Ответ, приведенный ниже @DJMartin, должен быть исправлением для меня, но он не работает.

+0

Можете ли вы опубликовать, как вычисляется '.valueAccessor'? –

ответ

1

Из ссылки crossfilter API: https://github.com/square/crossfilter/wiki/API-Reference

«. Примечание: группировка пересекающей текущих фильтров в crossfilter, за фильтр ассоциированной размерности, за исключением Таким образом, групповые методы рассматривать только те записи, которые удовлетворяют каждый фильтр, кроме фильтра этой размерности так. , если перекрестный фильтр платежей фильтруется по типу и сумме, то groupAll по количеству наблюдает только фильтр по типу ».

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

Вот пример этого: http://jsfiddle.net/djmartin_umich/nw8EV/.

teamMemberChart 
     .width(270) 
     .height(220) 
     .dimension(teamMemberDimension) 
     .group(teamMemberGroup) 
     .valueAccessor(function (d) { 
     return d.value.projectCount; 
    }) 
     .elasticX(true); 

    teamMemberChart2 
     .width(270) 
     .height(220) 
     .dimension(teamMemberDimension) 
     .group(teamMemberGroup) 
     .valueAccessor(function (d) { 
     return d.value.projectCount; 
    }) 
     .elasticX(true); 

    teamMemberChart3 
     .width(270) 
     .height(220) 
     .dimension(teamMemberDimension2) 
     .group(teamMemberGroup2) 
     .valueAccessor(function (d) { 
     return d.value.projectCount; 
    }) 
     .elasticX(true); 

Первые две диаграммы используют одинаковое измерение - выбор одной опции не отражает другую. Третий график использует другое измерение в одном и том же свойстве - выбор опции на этой диаграмме обновляет две другие диаграммы.

+0

Спасибо за твою скрипку. Это именно то, что мне нужно. К сожалению, на моей веб-странице не работает так, как ожидалось. Я воссоздал для вас [скрипку] (http://jsfiddle.net/xZFx4/1/). Требуется немного времени для запуска, поскольку вызов Ajax вытаскивает 7 МБ данных. Я был бы очень благодарен, если бы вы могли посмотреть. – Chapo

+0

Попробуйте устранить проблему, упростив ваш прецедент. У вас есть такая же проблема без вашего пользовательского сокращения и без вашего пользовательского ValueAccessor? Можете ли вы воспроизвести проблему с более простым набором данных, чем 7 МБ данных? По моему опыту, изолирование проблемы часто приводит к самостоятельному поиску решения, но если бы не я был бы рад помочь, если бы вы могли сделать немного больше первоначальной работы. –

+0

Он работает с базовой функцией доступа, поэтому я посмотрю в этом направлении и, возможно, задаю здесь отдельный вопрос. Спасибо за вашу помощь. – Chapo

Смежные вопросы