|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
Привет! Дошло дело до вэб, и встал вопрос "а как же правильно отображать 'табличные данные'?". Мне это видится так. Конечно же с фиксированным количеством строк на странице, ну или динамически отталкиваться от разрешения экрана и все равно фиксировать количество. Дальше интересней - как же загружать и отображать данные: 1) Грузить сразу всё, и существующими средствами javascript типа DataTables, Paginations или другими подобными, отображать. Такой вариант думаю подходит для данных, где не более 150-200 строк. Решения видел реально красивые и афигеновские, с различными сортировками, динамическим поиском, но требуют сразу все данные, а если их очень много???... 2) Грузить данные равные количеству строк одной страницы. А вот как формировать пагинацию на клиенте? Вручную можно, но нет желания изобретать велосипед. Попадались ранее варианты, которым не придал значения из-за тяжести реализации. Должно быть что-то крайне простое. Такое куда при создании в json передаешь значения типа: - всего записей - всего строк - всего страниц - текущая страница - и собственно сами данные Подскажите что есть из готовых лайт-вариантов? Куда смотреть и где копать. Или я в корне ошибаюсь? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2018, 23:20 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2018, 23:41 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2018, 02:33 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2018, 05:27 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
о, интересно, спасибо, буду смотреть. при первом приближении понравился вариант Petro123Imperous, брать готовое типа: https://demos.telerik.com/kendo-ui/grid/index ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2018, 11:50 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
Imperousо, интересно, спасибо, буду смотреть. при первом приближении понравился вариант Petro123Imperous, брать готовое типа: https://demos.telerik.com/kendo-ui/grid/index У меня есть подозрение (посмотрел в отладчике хрома), что он грузит данные целиком. Для современных браузеров это не страшно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2018, 11:59 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
am_sasa, На данном этапе тебе не нужно. А потом оптимизируешь или другую таблу возьмешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2018, 12:46 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
Пример разбивки на страницы в памяти: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
С уважением, Валентин ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2018, 13:10 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
Valentin KolesnikovПример разбивки на страницы в памяти: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
С уважением, Валентин Зачем велосипедить? https://google.github.io/guava/releases/15.0/api/docs/com/google/common/collect/Iterators.html#partition(java.util.Iterator, int) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2018, 13:25 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
Метод size() забыл добавить. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
С уважением, Валентин ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2018, 13:32 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
mad_nazgulImperous, Spring data jpa . Из коробки пагинация, фильтрация и REST-API ( HATEOAS )+ сортировка по указанному полю ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2018, 13:43 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
am_sasa....Для современных браузеров это не страшно. Когда 3-и года назад обсуждали пагинацию, разработчик системы при провел тест зугрузки > 100 000 записей из справочника в IE. IE даже не поперхнулся, компьютер даже не заметил (комп был не сильно мощный). ===> т.ч. разработчик принял решение, что пагинация даром не нужна, а будет нужна, тогда он ее и реализует ))) AFAIK Т.ч. такой вариант тоже имеет право на жизнь. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2018, 13:43 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
Valentin Kolesnikov Метод size() забыл добавить. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
С уважением, Валентин только этот iterator сначала надо посчитать = собрать в него ВСЕ возможные строки и почему то именно этот (основной) момент тут не обсуждается... допустим там 5 таблиц с миллионами записей и надо свести их вместе + сделать тяжёлый фильтр А потом, чтобы показать кол-во страниц, надо посчитать кол-во строк после этого сложного фильтра... ...которых там могут быть миллионы Конечно легко взять одну таблицу и вытащить из неё кол-во, а потом поделить на размер страницы. Очень интересно тут выводить этот невероятно сложный алгоритм... А вот как решают реальную проблему, из реального мира? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2021, 20:12 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
tip78, JPA 2.2 появился скроллируемый стрим getResultStream() В шарпе это уже несколько лет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2021, 21:39 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
Imperous Привет! Дошло дело до вэб, и встал вопрос "а как же правильно отображать 'табличные данные'?". Мне это видится так. Конечно же с фиксированным количеством строк на странице, ну или динамически отталкиваться от разрешения экрана и все равно фиксировать количество. Дальше интересней - как же загружать и отображать данные: 1) Грузить сразу всё, и существующими средствами javascript типа DataTables, Paginations или другими подобными, отображать. Такой вариант думаю подходит для данных, где не более 150-200 строк. Решения видел реально красивые и афигеновские, с различными сортировками, динамическим поиском, но требуют сразу все данные, а если их очень много???... 2) Грузить данные равные количеству строк одной страницы. А вот как формировать пагинацию на клиенте? Вручную можно, но нет желания изобретать велосипед. Попадались ранее варианты, которым не придал значения из-за тяжести реализации. Должно быть что-то крайне простое. Такое куда при создании в json передаешь значения типа: - всего записей - всего строк - всего страниц - текущая страница - и собственно сами данные Подскажите что есть из готовых лайт-вариантов? Куда смотреть и где копать. Или я в корне ошибаюсь? Есть метод для разбивки списка на страницы. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
Хорошего вам дня! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2021, 13:35 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
Вот вы чудаки-некроманты. Автор спрашивал еще в 2018 году. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2021, 20:01 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
а зачем темы плодить, если есть такая же ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2021, 21:39 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
Хорошо я еще подкину вопрос. Как известно база данных - это источник живой. Динамичный. И пока вы читали страницу №1, в определенном порядке, страница №1 успела обновится. В нее вставились или удалились строки. Далее вы нажали PageDown... Вопрос. Как вы отработаете эту ситуацию? Вариантов много. Но предложение - прогрузить всю таблицу в коллекцию - мы не будем расматривать. Это глупое предложение. Равно как и прогрузить всё на клиент я тоже не буду рассматривать. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2021, 22:04 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
mayton, Все придумано до нас. Показываете следующую пачку записей. Образец гугл поиск ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2021, 22:15 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
Этот вопрос вобщем-то затрагивает изоляцию транзакций. Как сделаете - так и будет. Но 99% пагинаций что я видел - делали на каждую новоу страницу - новый курсор и неявно BEGIN/END. Как следствие - либо потерянные records при PageDown либо фантомы. Вопрос как с этим работает хибернейт - это домашнее задание. Посмотрите сами. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2021, 00:32 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
mayton Как известно база данных - это источник живой. Динамичный. И пока вы читали страницу №1, в определенном порядке, страница №1 успела обновится. В нее вставились или удалились строки. Далее вы нажали PageDown... Вопрос. Как вы отработаете эту ситуацию? ну обычно через вебсокеты вылазит сообщение "появились новые сообщения. Обновите страницу" или вообще ничё не вылазит, как на форумах ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2021, 08:16 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
tip78 mayton Как известно база данных - это источник живой. Динамичный. И пока вы читали страницу №1, в определенном порядке, страница №1 успела обновится. В нее вставились или удалились строки. Далее вы нажали PageDown... Вопрос. Как вы отработаете эту ситуацию? ну обычно через вебсокеты вылазит сообщение "появились новые сообщения. Обновите страницу" или вообще ничё не вылазит, как на форумах Чтобы через вебсокет что-то вылезло - это еще надо запрограммировать. Тоесть то что вы сказали это работает. Но это просто часть стека. Самая мясная часть еще не обсуждалась. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2021, 11:41 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
ну, в зависимости от того, что надо, подход может быть разным, но при скроллинге вниз запросто вешается listener, который шлёт AJAX-запрос другой вариант с другой стороны - при изменениях на данном клиенте (например) вешается флаг об изменениях и шлётся всем, кто страницу эту смотрит а можно вообще страницу обновлять (или кусок её) но чаще всё это нецелесообразный гемор. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2021, 12:22 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
Блин... напиши на back как это сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2021, 12:32 |
|
Пагинация, как правильно, как выбрать середину и какие варианты есть?
|
|||
---|---|---|---|
#18+
tip78 другой вариант с другой стороны - при изменениях на данном клиенте (например) вешается флаг об изменениях и шлётся всем, кто страницу эту смотрит а можно вообще страницу обновлять (или кусок её) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2021, 12:50 |
|
|
start [/forum/topic.php?fid=59&msg=40033284&tid=2120560]: |
0ms |
get settings: |
7ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
53ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
518ms |
get tp. blocked users: |
0ms |
others: | 6ms |
total: | 596ms |
0 / 0 |