#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() в одну функцию и просто вызывать ее всякий раз, когда вы настраиваете свой перекрестный фильтр. Но, надеюсь, у кого-нибудь еще будет идея получше.