Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Баги группировки Grid по полю (https://javascript.ru/forum/extjs/67198-bagi-gruppirovki-grid-po-polyu.html)

Sogl 03.02.2017 09:48

Баги группировки Grid по полю
 
Вложений: 1
Всем привет!

Обнаружил странную проблему при группировке по полю.
Прописываю поле в Store:
groupField: 'positionName'


Параметры базового Store, от которого все остальные наследуются:
autoLoad: true,
autoSync: true,
remoteSort: true,
remoteFilter: true,


Что получается в итоге можно посмотреть во вложении. Почему-то Ext по какому-то своему алгоритму отбирает строки для группировки, создавая кучу дублей.
Сначала грешил на сортировку, однако у меня есть проект на древнем ExtJS 2.3, в котором подобная ситуация отрабатывает корректно.

В чем может быть проблема?

Я еще использую нумератор строк (rownumberer), который в случае с группировкой становится бесполезен, т к начинает отсчет не внутри группы, а берет общий со страницы. В итоге каша. Это как-то меняется или нет?

Также все еще присутствует проблема, когда при перемещении по страницам нумерация идет с 1-цы:
https://www.sencha.com/forum/showthr...ouping-Feature

ExtJS 6.2.0.981

p.s. Надеюсь, что nohuhu не оставит данный пост без внимания :)

kolka 03.02.2017 11:52

Сделайте наглядный пример в Fiddle

nohuhu 04.02.2017 04:51

Цитата:

Сообщение от kolka (Сообщение 443061)
Сделайте наглядный пример в Fiddle

+1, гадание на кофейной гуще редко приносит полезные результаты.

Sogl 13.02.2017 03:06

Наконец сделал Fiddle.
https://fiddle.sencha.com/#view/editor&fiddle/1pu4

Какие есть проблемы:
  1. Строки таблицы не группируются нормально по столбцу, выбирая то по одному, то по два элемента. Похоже, оно работает в зависимости от порядка строк.
  2. Нумерация строк не работает внутри групп. Данное решение имеет гораздо более логичный вид, т к общее количество строк можно увидеть в pagingtoolbar.
  3. Указание в pageSize небольшого значения (например, 2) не работает. Мы получаем верное количество страниц, но количество элементов при этом остается тем же. Данный баг был принят на форуме Сенчи еще 10 октября 2015 и, видимо, так и не исправлен: https://www.sencha.com/forum/showthr...ouping-Feature

Sogl 28.02.2017 03:51

Неужели никто не сталкивался?

khusamov 06.03.2017 02:26

Вот так работает
https://fiddle.sencha.com/#view/editor&fiddle/1re5
Закомментировал 45-ю строку
//remoteSort: true,

Sogl 14.03.2017 09:45

Ну оно так работает, конечно, но все же мне нужна сортировка на сервере. Я отправляю на бекенд необходимые данные, а в ответ уже весь массив данных отсортированный приходит.
Уже не помню какой глюк был неудобный с сортировкой на клиенте, из-за чего оказалось проще использовать `remoteSort: true`.

khusamov 14.03.2017 10:56

1) по крайней мере видно, где скрыт баг. Посмотрите исходные коды. Сделайте патч.
2) возможно это проблема песочницы, надо проверить код вне песочницы

Sogl 20.03.2017 04:45

Цитата:

Сообщение от khusamov (Сообщение 447332)
2) возможно это проблема песочницы, надо проверить код вне песочницы

Баг изначально найден вне песочницы, т к я пишу все же не в ней. Далее уже тут мне предложили воспроизвести в Fiddle, что я и сделал. :)

khusamov 20.03.2017 10:10

Тогда надо копать код плагина features: [{ftype:'grouping'}],
Похоже будет жестко

khusamov 29.03.2017 16:04

Теперь я напоролся на эту проблему)))
У меня почему-то первая запись из json выделяется в отдельную группу.
В общем придется копать код плагина.
Если будет желание - присоединяйся. Попробуем в онлайн режиме это решить.

khusamov 01.04.2017 17:37

А сервер как должен обрабатывать запрос на группировку, кстати?

khusamov 01.04.2017 23:48

Он на сервер посылает параметр group
То есть сервер должен подготовить ответ, чтобы группировка нормально отработала на клиенте. Вот поэтому у тебя там пример не работает.

khusamov 01.04.2017 23:50

Кстати, если отключить remoteSort: true то группировка работает без сервера... о как.

Sogl 07.05.2017 14:26

Цитата:

Сообщение от khusamov (Сообщение 449039)
Он на сервер посылает параметр group
То есть сервер должен подготовить ответ, чтобы группировка нормально отработала на клиенте. Вот поэтому у тебя там пример не работает.

И снова мимо. Заметил, что вы любите строить предположения в духе "видать, ты эту банальную вещь забыл". Обычно прежде чем спрашивать совета на этом и официальном форуме, я несколько раз все проверяю.

Я корректно на бекенде обрабатываю параметр group, более того сравнил работу с версией ExtJS 2.3 и убедился, что в старой либе все ок, а в 6.2 какие-то множественные баги с группировкой.

Вам то удалось найти причину? Я пока тем проектом не занимаюсь, поэтому и на форум забыл заходить :)

p.s. nohuhu, вся надежда на вас. На официальном форуме как всегда ответа не дождаться.

khusamov 07.05.2017 18:41

Если сервер присылает отсортированный ответ, то группировка на клиенте работает нормально. Потому на сервер и отсылается параметр group, чтобы он знал как подготовить ответ. Но до конца доработать этот вариант не смог. Разработчики сервера решили вообще от группировок отказаться.

А так я заметил, что группировка начинает работать, если ответ сервера отсортирован по полю, по которому будет группировка включена. Вот и все что хотел сказать.


Часовой пояс GMT +3, время: 13:56.