Использование группы перекрестных фильтров с rickshaw

#javascript #crossfilter #rickshaw

#javascript #перекрестный фильтр #rickshaw

Вопрос:

Я экспериментирую с использованием crossfilter с rickshaw, но я столкнулся с этой проблемой:

Rickshaw ожидает, что его массив последовательных данных будет состоять из объектов со свойствами x и y, где crossfilter выводит данные, используя свойства ключа и значения.

Итак, crossfilter выводит что-то вроде:

 console.log(usersByProduct.all()[0]) // => Object {key: 1390291200, value: 249}
  

Которая, очевидно, отклоняется rickshaw с ошибкой, подобной этой:

 Uncaught x and y properties of points should be numbers instead of undefined and undefined
  

Единственный способ, который я могу придумать, чтобы заставить это работать, это: при любом изменении базового перекрестного фильтра скопируйте результаты перекрестного фильтра в новый массив и сбросьте rickshaw с новыми данными, которые кажутся действительно уродливыми и ненужной копией.

У кого-нибудь есть способ получше?

Ответ №1:

Я не думаю, что Rickshaw позволяет вам устанавливать средства доступа на графике, такие как dc.js выполняет, поэтому вы должны предоставить ему данные в формате, который он ожидает. Я думаю, вам придется явно установить обновленные данные на графике Rickshaw, как вы описываете. Вам в любом случае придется вызывать метод render () для вашего графика Rickshaw при любом изменении перекрестного фильтра, не так ли? Таким образом, вы, вероятно, можете инкапсулировать сброс данных и вызов .render() в одну функцию и просто вызывать ее всякий раз, когда вы настраиваете свой перекрестный фильтр. Но, надеюсь, у кого-нибудь еще будет идея получше.