LINUX.ORG.RU

Выбираем грид для админки

 ,


2

3

Обзоры для отбора:

Текущий остаток

Первый круг требований

Изменяемая ширина колонок (хотя я уже теперь думаю - а нужна ли она?), постраничный просмотр, поддержка AJAX, маркер текущей записи, хождение по записям стрелками, доступность исходника.

Не прошли первый круг: tui.grid, jsGrid, Quickgrid, jqGrid, jexcel, https://github.com/paulopmx/Flexigrid (нет указателя текущей записи), http://www.evolutility.org/demo/demo_ToDo.aspx (нет указателя текущей записи), https://datatables.net/ (то же),

Идём на второй круг

Теперь должно выполняться следующее:

  • при любой навигации, кроме прокрутки за скроллбар, текущая запись видна на экране
  • кнопки pgup-pgdn позволяют листать запись
  • ctrl-f ищет в гриде, если грид фокусирован, и на всей странице, включая грид, если грид не фокусирован. Вообще это требование спорное, т.к. требует загрузки всего контента в страницу. Т.е., либо нужно перешибить Ctrl-f и листать страницы программно, либо не нужен скроллбар, а нужно явно показать, что на странице присутствует лишь часть данных.
  • не тормозит при хождении стрелками

Не прошли второй круг: w2ui.

https://paramquery.com/demos/readonly_cells - ctrl-f не листает по строкам.

https://dhtmlx.com/docs/products/dhtmlxGrid/ - указатель уходит за границы экрана.

Третий круг

Здесь мы выкидываем те гриды, которые не поддерживают фильтрацию на сервере.

Не прошли: dynamic-table - казалось, что у него уникально хорошее хождение с клавиатуры, но slick grid победил. Поэтому dynamic-table исключается из дальнейшего рассмотрения. Остальные выжили.

Остаток требований:

  • грид находится в двух состояниях - фокусирован или нет. При щелчке вне грида грид не фокусирован
  • быстро показывает набор из 100 записей, находящихся в виде JSON на самой странице.

Итог Пока что выбрал SlickGrid, его хвалят за модульность и быстроту. У него сейчас одна основная ветка. Он используется в stackoverflow (data.stackexchange.com), pgAdmin4 (уж не знаю, хорошо это или наоборот), как модуль Drupal (500 сайтов).

★★★★★

Последнее исправление: den73 (всего исправлений: 18)

https://ru.wikipedia.org/wiki/CRUD

как правило, относится к бэк, полностью утопает в бизнес-операциях и фронту практически не виден и не нужен.

anonymous
()

я должен сделать фронтенд

Ты зачем полез опять туда, в чем не преуспеваешь от слова совсем?

anonymous
()

чем сгенерировать CRUD приложение?

Руками!

А вообще, в одном проекте была такая самописная штука для редактирования справочных данных. Описание модели хранилось в БД, как и сами данные. Был отдельный редактор модели и редактор данных, формирующий интерфейс автоматически. Это в конечном итоге вылилось в кучу таблиц типа info01, info02 с полями str01, str02, str50, etc. Работать с таким вручную, конечно, замучаешься, да и с производительностью проблемы.

orm-i-auga ★★★★★
()
Последнее исправление: orm-i-auga (всего исправлений: 1)

Какой инструмент подойдёт?

Голова.

Для начала договорись с бекендщиком о возвращаемом формате и составе данных.

Затем бери и делай кусок кода, который строит таблицу (один кусок на все таблицы) и позволяет фильтровать-сортировать полученные данные. Возможно с до-получением данных (постранично).

Теперь бери и делай кусок кода, который строит опшн списки и ищет по ним или запрашивает поиск у бекенда.

Или можешь поискать готовые решения с таблицами и автокомплитом поиска в списках.

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

deep-purple ★★★★★
()
Ответ на: комментарий от orm-i-auga

info01, info02 с полями str01, str02, str50

Жосткие вы ребятишки. Есть же жсон, который легко превращается в модель, а по имени таблицы (нет, лучше все же передавать тип объекта данных) можно подтянуть кусок расширяющий базовые фичи объекта.

deep-purple ★★★★★
()

https://github.com/marshmallow-code/apispec или выбрать из этого https://www.codementor.io/sagaragarwal94/building-a-basic-restful-api-in-pyth... я через консоль браузера часто код генерирую (потому как js позволяет забыл как слово называется source.match(...).map(...).join('\n\n')). При грамотном наследовании копипасты много не надо.

tz4678 ★★
()
Ответ на: комментарий от deep-purple

Проект был действительно жосткий, очень старое legacy, до недавнего времени (лет 5 назад, наверное) сервер ещё работал на яве 1.4, со скрипом переехал на 1.6, на клиенте так вообще активиксы, аплеты, ie-only код, вот это вот всё.

orm-i-auga ★★★★★
()
Ответ на: комментарий от deep-purple

Всем спасибо за ответы. Немного почитал за это время, стало хуже.

Затем бери и делай кусок кода, который строит таблицу (один кусок на все таблицы) и позволяет фильтровать-сортировать полученные данные. Возможно с до-получением данных (постранично).

Теперь бери и делай кусок кода, который строит опшн списки и ищет по ним или запрашивает поиск у бекенда.

Или можешь поискать готовые решения с таблицами и автокомплитом поиска в списках.
Во. Ты зришь в корень. Я сосредоточился на последней фразе из процитированного фрагмента.

Вот пример. http://www.evolutility.org/demo/demo_ToDo.aspx

Здесь плохо то, что он для ASP. Но что тут есть? Тулбар с поиском, количество записей, заголовки, сортировка по каждому полю. Сделать это хорошо - это много работы. Я знаю. А стоит оно 50 долларов, т.е. эквивалентно паре часов работы по стоимости. Очевидно, такое не написать ни за два часа, ни за два дня. Может быть, за две недели, но и то не факт. Дальше оно будет постепенно меняться и создавать проблемы. Поэтому - где взять готовое? Инициатива пока на моей стороне, я могу говорить бекендщику, что мне нужно и он это будет делать.

den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

Не нашёл там возможности менять ширину колонок. Вот это увидел на тему расширяемости колонок:

http://www.bacubacu.com/colresizable/#samples

http://www.ita.es/jquery/jquery.kiketable.colsizable.htm

https://stackoverflow.com/questions/6156182/resizable-table-columns-with-jquery

А что, это какая-то сложная задача - менять ширину колонок? Почему нигде не реализовано? Или это «ненужно»?

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от den73

Херов веб!

Мне нужно очень мало - чтобы колонки можно было расширить, и чтобы можно было ходить по гриду стрелками. Т.е. если без этого, то совсем уж плохо. И вот пока нашлось всего два грида, которые это умеют - dhtmlx и w2ui. Остальные стрелками либо уходят на невидимую сторону луны, либо я дохожу до дна видимых записей и дальше начинает прокручиваться страница целиком (вместо прокрутки данных в гриде). Вот как в этом вебе можно без мата? Я сдержался уже раз 5.

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от den73

Ты дурак какой-то, чесслово. Тебе еще год назад советовали изучить базу веб-технологий, досконально. Нет, ты забил, пытаясь с наскока изучить фреймворки\библиотеки со своим подходом из других сфер. То, что ты ищешь сейчас, тщетно (сколько уже по времени?) запиливается ручками с нуля за полчаса. Но нет. Ты хочешь жрать говно. И уповать, что это веб плохой, а не ты идиот.

anonymous
()
Ответ на: комментарий от anonymous

Сам дурак, дальше не читал. Не мешай, я тут работаю. Иди пописай лучше.

den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

appendgrid.apphb.com - одна из многих, которая при одиночном щелчке переходит в режим редактирования - это странно! При этом стрелки вверх-вниз для навигации использовать не получается - это ещё более странно.

den73 ★★★★★
() автор топика
Ответ на: комментарий от e1nste1n

Спасибо за ссылочку! Демо не нашёл. Я не знаю, как оно связано с http://www.trirand.com/blog/jqgrid/jqgrid.html - название вроде совпадает.

но то, что по моей ссылке - не годнота. При ходьбе стрелками и достижении нижней строчки последующее нажатие на стрелку вниз должно приводить к прокрутке грида, а не всей страницы. Возможно, я неправ, но мне это кажется единственно осмысленным поведением при управлении с клавиатуры. А управлять с клавиатуры я определённо хочу :)

В общем, на сегодня явно пора закругляться. Возможно, всё не так уж и безнадёжно, т.к. по двум минимальным критериям нашлось достаточно много вариантов. Потом надо будет досмотреть вот это https://www.jqueryscript.net/tags.php?/data grid/ и вот это https://jspreadsheets.com и сужать выбор дальше.

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 2)
Ответ на: комментарий от den73

Свободный форк того, в readme подробности. Навигация стрелками там точно была. Самый широкий функционал предоставлял на тот момент когда я его использовал (как раз в момент форка). Документация у него страдает, да.

e1nste1n ★★★★★
()
Ответ на: комментарий от e1nste1n

Спасибо! Там навигация есть, просто она плохо себя ведёт, когда доходит до нижней видимой строчки.

den73 ★★★★★
() автор топика
Ответ на: комментарий от tz4678

Спасибо! Я вижу, у тебя период восторженности насчёт vue. Ангуляром пользоваться не собираюсь, не бойсь :) Но табличка, тобой предложенная, очень уж убогая на фоне других. По фичастости плетётся где-то даааалеко в хвосте того, что сделано для jQuery. Но спасибо, что напомнил про marko.js - посмотрю, как у него с табличками обстоят дела.

den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

А обстоят они просто-напросто никак или почти никак.

den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

(общая)
http://www.trirand.com/jqgridwiki/doku.php?id=wiki:jqgriddocs
(форк)
https://github.com/free-jqgrid/jqGrid/wiki
https://free-jqgrid.github.io/
(коммерч. продолжение оригинала)
http://www.guriddo.net/documentation/guriddo/javascript/
как я уже говорил документация страдает

e1nste1n ★★★★★
()
Ответ на: комментарий от tz4678

Поиск, фильтрация, в т.ч. выполняемые на серверной стороне, изменение ширины колонок мышью, слияние ячеек в заголовке и теле таблицы, подвалы с итогами, навигация клавиатурой, выделение галочками и действия над выделенным. Это для примера. Excel - это тоже грид (формулы, выделение диапазонов произвольной формы и операции над ними). Реальные варианты гридов могут ещё что-то, что я не перечислил. Просто посмотри ссылки в посте, там всё видно.

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от e1nste1n

Спасибо, погляжу завтра. Вики как-то не заметил :(

den73 ★★★★★
() автор топика

Посмотрел исходники SlickGrid, попытавшись исправить косяк с дрейфующим PgDn. Похоже, что расчёт прокрутки с учётом горизонтального скроллбара сделан неаккуратно - где-то наличие скроллбара учитывается, а где-то - нет. Ещё немного покопаюсь и посмотрю на jqGrid. Хотя его размазанность мне совсем не нравится.

den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

Всем спасибо, пока выбрал SlickGrid, а там посмотрим.

den73 ★★★★★
() автор топика

"https://fancygrid.com/samples/form/grid - нет PG_UP, PG_DOWN,
при слишком маленьком окне указатель уходит за границы экрана"
Благодарим что попробовали наш продукт.
Данный функционал уже добавили, станет доступным при следующем
релизе в эти выходные.

mtatsky
()
Ответ на: комментарий от den73

Только что сделали релиз.
Очистите кэш,чтобы загрузилась новая версия(у нас кэш на 24 часа).
Если будут вопросы пишите support@fancygrid.com

mtatsky
()
Ответ на: комментарий от mtatsky

Извините, пока что выбрали datatables.net по причинам, не связанным со сравнением гридов.

den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

Ничего страшного ;)
Зато улучшили продукт и получили feedback.

mtatsky
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.