|
|
|
multiple filter
|
|||
|---|---|---|---|
|
#18+
Всем привет! Есть страница, на ней таблица, с сервера приходят ~11к записей(nested tree), в таблице они изначально не рендерятся. Над каждым столбцом таблицы есть фильтр(multiple select), соответственно можно фильтровать этот большущий массив. Мне бы хотелось узнать, есть ли какие-нибудь best practise как такое реализовывать. Я использую для биндинга нокаут, первое в голову приходит биндить отфильтрованный массив, но здесь нужно как то думать над сохранением стэйтов узлов(данные отображаются в виде дерева), т.е. например выбрали фильтр 1, отфильтровались данные, забиндились, юзер по дереву потыкал и потом ему вздумалось еще фильтр добавить по какой-нибудь колонке и с таким подходом, исходные данные фильтруется опять и все рендериться заново, получается нужно как то мапить прошлые стэйты. Как вариант, можно сделать все дочерние узлы observableArray и "прикреплять" к дереву только не существующие сейчас узлы(после фильтра), в этом случае не нужно париться над стэйтами... но хороший ли это подход... Может кто-нибудь сталкивался, как вообще лучше реализовывать подобные задачи, минус еще в том, что массив большой и при биндинге нокаут подвисает(если выбрано много фильтров)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2015, 01:42 |
|
||
|
multiple filter
|
|||
|---|---|---|---|
|
#18+
Manonia, я понимаю, что клиентские машины счас не то что раньше, но на серверах есть базы, предназначенные не только для занимания места на дисках. и сетети счас тоже не ранишнии. базы фильтрую, сортируют и прочее делают намного лучше, они под это заточены на клиенте лучше заниматься только форматированием вывода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2015, 07:44 |
|
||
|
multiple filter
|
|||
|---|---|---|---|
|
#18+
да и для отобржения данных счас совершенно не надо обновлять всю страницу, достаточно только изменённые данные. а отображать даже на начальном этапе клиенту 11к данных - это полная бессмыслица, никто не будет на них даже смотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2015, 07:49 |
|
||
|
multiple filter
|
|||
|---|---|---|---|
|
#18+
11 к записей достаются один раз и кладутся в массив и дальше уже вся работа идет с этим массивом. Мне кажется это лучше, чем за каждым чихом бежать в базу... Т.е. Данные-это дерево, при рендеринга страницы юзеру выводится только первый уровень этого дерева, а это 10 записей. Дальше он отфильтровал например по первой колонке, второй и вместо того, чтобы лезть в базу, фильтруется исходный массив ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2015, 10:27 |
|
||
|
multiple filter
|
|||
|---|---|---|---|
|
#18+
ManoniaМне кажется это лучше, чем за каждым чихом бежать в базу... когда как))) Гугл же лазит при вводе каждого символа в строку поиска). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2015, 10:37 |
|
||
|
multiple filter
|
|||
|---|---|---|---|
|
#18+
Manonia, база это сделает быстрее , иправильнее для неё 11к мелочь. для клиента это объём. и не надо бояться обращаться к базе. она для того и существует. клиент будет только отображать одним алгоритмом приходящие (разные) данные это намного проще и быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2015, 10:44 |
|
||
|
multiple filter
|
|||
|---|---|---|---|
|
#18+
вадя, спасибо, но мне подход с базой не нравится. Какие бенефиты от этого, мне не понятно. На js массив отфильтровать не проблема, даже древовидную структуру, делается это влёт даже с 11к записей, вся проблема в том, что когда нокаут биндит массив на темлейт, страница подвисает, а тут откуда мы их взяли - из базы или массива, какая разница. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2015, 11:55 |
|
||
|
multiple filter
|
|||
|---|---|---|---|
|
#18+
Manonia, в смысле привет земеля :) https://blog.safaribooksonline.com/2014/02/28/lazy-loading-knockout-js/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2015, 12:02 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=38973918&tid=1445975]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
142ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 441ms |

| 0 / 0 |
