2014-02-04 3 views
4

Глядя на Crossfilter API, я не вижу упоминания о том, как изменять строки, уже добавленные в Crossfilter.Возможно ли изменение данных, уже вставленных в crossfilter?

Запрещается/невозможно изменить существующие строки? Скажем, добавив еще несколько полей или изменив значение поля в строке? Кажется, что удаление всех данных и считывание их на crossfilter является единственным способом, но это означало бы потерю всех текущих фильтров, размеров и т. Д.

+1

это верно, вы должны удалить и повторно добавить их, чтобы получить их обновление в индексах. В противном случае это будет непоследовательно. – Gordon

+0

@ Gordon. Правильно, я боялся этого. Другими словами, мне нужно сделать crossfilterInstance.remove(), за которым следует crossfilterInstance.add (newRecordsWithMoreFields). Я готов принять это в качестве ответа здесь. – amergin

ответ

2

Если вы создаете «уникальное измерение», которое возвращает уникальное значение для каждой записи в вашем наборе данных (например, колонку ID), вы можете иметь такую ​​функцию, чтобы вносить изменения в одну запись, не сбрасывая все:

function editEntry(id, changes) { 
    uniqueDimension.filter(id); // filter to the item you want to change 
    var selectedEntry = uniqueDimension.top(1)[0]; // get the item 
    _.extend(selectedEntry, changes); // apply changes to it 
    ndx.remove(); // remove all items that pass the current filter (which will just be the item we are changing 
    ndx.add([selectedEntry]); // re-add the item 
    uniqueDimension.filter(null); // clear the filter 
    dc.redrawAll(); // redraw the UI 
} 

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

  • Нет связанных вопросов^_^