Witam.
Walczę z konfiguracją widoków w aplikacji. Chciałbym, aby filtry, sortowanie i tego typu informacje były trzymane w bazie. Zależy mi, aby konfiguracja widoków była taka sama na obojętnie jakiej maszynie. LocalStorage
niestety w tym momencie odpada, ponieważ to działa w obrębie jednej przeglądarki co jest jeszcze gorsze.
Problem zaczyna się gdy filtry dla poszczególnych typów danych są różne.
Wideo pokazujące możliwości filtracji
Towary oprócz filtrów mają też wybór widoku (kafelki, tabela). Każdy widok ma wybór z pośród swoich kolumn. Dokumenty mimo, iż to jest jeden "typ" to WZ nie ma kolumny informującej czy dokument został rozliczony.
Na tę chwilę opcje mam dwie:
- Stworzyć tabele dla każdej opcji, każdego typu -
ProductsFilters
,CustomersFilters
,ProductsColumns
,CustomersColumns
itp - Stworzyć jedną tabelę, a w kolumnach trzymać JSONa z konkretnym obiektem
class UserFilter
{
public int Id {get;set;}
public int UserId {get;set;}
public string Name {get;set;}
public string Type {get;set;}
public string JsonValue {get;set;}
}
Oczywiście filtry byłyby pobierane na podstawie UserId
. Jeśli nie ma takiego to wrzuci domyślny. W innych przypadkach z każdym zapytaniem filtr byłby aktualizowany w bazie. Tyczy się wszystko również paginacji, sortowania, wybranych kolumn oraz wybranego widoku. Wydajność mnie nie martwi, bo filtrując i tak odpytuje o dane. Wyjątki też jestem w stanie ogarnąć żeby nie przeszkadzało to w pracy. Lepiej jakby jakiegoś ustawienia nie zapisał niż jakby nie mógł pracować.
Macie jakieś swoje, lepsze rozwiązania?