Używam dc.js do renderowania ładnego wykresu bąbelkowego zestawu danych. Undercision dc.js to crossfilter.Wymień dane filtru krzyżowego, przywróć wymiary i grupy.
Chciałbym płynnie odświeżyć moją kartę z nowymi danymi z serwera. This issue on Github jasno wynika, że możliwe jest, aby zrobić to poprzez:
- usunięcie wszystkich danych z crossfilter
- dodając w nowych danych
- zawijających
dc.redrawAll()
.
Mam to działa, ale aby usunąć wszystkie dane, musisz najpierw wyczyścić wszystkie filtry (ponieważ crossfilter.remove
usuwa jedynie rekordy pasujące do bieżącego filtra).
Chciałbym "zapamiętać", jak moje dane były filtrowane wcześniej, więc mogę zrekonstruować filtr ponownie po wymianie wszystkich danych. Jestem gotów dostać się do odwagi kodu crossfilter
, ale pomocne będą wszelkie wskazówki.
Dodatkowo: jeśli ktoś zna sposób aktualizacji danych filtra krzyżowego na podstawie unikalnego klucza, to byłby to złoty pył!
Czy dodajesz tylko dane? Wtedy użyłbym crossfilter.add ([data]). Jeśli chcesz usunąć również dane, nie mam wiele do zaoferowania, ale możesz rzucić okiem na ten problem i skomentować, jeśli brzmi to jak właściwy kierunek: https://github.com/square/crossfilter/issues/109 –
@EthanJewitt Nie dodajemy * ani * usuwania danych. Aktualizuję istniejące dane, każdy wiersz jest unikalnie kluczowany. Czy też "dodaj" ma możliwość aktualizacji na podstawie klucza? – LondonRob
Gotcha - musisz usunąć stare dane i dodać nowe dane (brak możliwości aktualizacji istniejących kluczy, o ile wiem). Ta możliwość w rzeczywistości nie istnieje, ponieważ będziesz musiał usunąć wszystkie filtry, aby usunąć swoje dane. Osobiście uważam, że jest to coś, na co należy się zająć w Crossfilter, i jest dyskusja na ten temat, jak rozwiązać ten problem, ale nie sądzę, by ktokolwiek miał czas na rozwiązanie tego problemu. –