Я создаю «компонент фильтра», который отображает все доступные фильтры для этого «типа продукта».
Довольно стандартный, почти просто подумайте о фильтре в стиле bestbuy, amazon, craiglist.
Сейчас я сосредоточен на том, как генерировать параметры фильтра (а не на том, как обращаться с ним, когда пользователь нажимает на параметр фильтра, а затем он должен отключиться и отфильтровать результаты вниз).
![enter image description here](https://i.stack.imgur.com/leTTV.png)
Итак, я создал объект json, который имеет что-то вроде этого,
, который будет создавать каждый раздел заголовка (HardDrive, размер оперативной памяти, количество ядер ЦП), какой это тип (флажки, текстовые поля),
если раздел будет открыт,
если в нем есть окно поиска.
{
type: "", // this is what type of filter it will be (textbox, checkboxes and etc)
header: "Filter Header",
property: "", // this maps it back to the column name in db used when filter is actually triggered.
hasSearchBox: false, // some filter options are long so search box can be shown.
isOpen: true, // controls if this filter should be in an open or closed state.
for: ["What Products this filter applies to. Some of these filters are common between all products"]
},
Теперь мне нужно выяснить, следует ли мне хранить вышеприведенное как есть или разбить его на столбец.
Т.е.
Filters Tbl
Id
ProductTypeId
type
header
property
hasSearchBox
isOpen
Это облегчает добавление нового фильтра в будущем, но я немного обеспокоен, если появится какая-то новая опция, которая может быть только для некоторых фильтров, а не для других (то есть, множество пустых столбцов) или если мне нужен более сложные объекты в будущем (например, установка имени заполнителя для текстового поля).
или, если я должен хранить это как это
ProductTypeTable
Id
FilterOptions <--- json from above gets store in here.