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

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

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

Таким образом, кроссфильтр выводит что-то вроде:

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

Что, очевидно, отвергается рикшей с такой ошибкой:

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

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

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


person user1905083    schedule 03.07.2014    source источник


Ответы (1)


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

person Ethan Jewett    schedule 03.07.2014