5) Описать API слоя для работы с базой через интерфейс, чтобы не писать запросы под синтаксис твоего драйвера, а реализовать поток данных, например, на генераторах.
Драйверы даны скорее как пример того, как можно работать с базами в простых случаях.
Если есть генераторы или любые другие уровни абстракции над данными, то лучше сделать адаптер и в нём перегрузить функции:
- getDataAgg - для count'ов, общего кол-ва рядов
- getDataRows - для получения конкретной страницы с рядами
На практике масса примеров, когда грид, вместо базы, ходит в файлы, в API, в мемкеш, на какой-нибудь другой хост по SSH и т.п.
7) Интеграция с symfony/laravel/yii - без интеграции с фреймворком использовать либу не очень хочется.
Здесь ужас ситуации в том, что я совсем не пользуюсь популярными фреймворками. И даже неймспейсы не очень люблю. Упрощаю всё настолько, насколько позволяют другие участники проекта.
Но.. интеграция в любой фреймворк, в моём понимании, должна быть относительно простой. Шаги вижу следующие:
- В контроллерах вызываем render() для гридов, вставляем получившийся JS-код в нужное место на странице. Получаем грид.
- Создаём entry-point для обработки AJAX-запросов от гридов. В ней три строчки кода - подключение jqGridLoader и вызов autorun().
- Перегружаем getInput(), передаём в него "очищенные" входящие переменные от фреймворка вместо обычных $_GET, $_POST.
- Создаём "драйвер" для базы. В него заворачиваем обращения к драйверу фреймворка.
- Перегружаем функции для вывода JSON, если необходимо. Это если важно не мешать фреймворку свои header() посылать.
В классах конкретных гридов используем функции фреймворка на полную катушку. Там уже каких-то ограничений не должно быть.
Кстати, для Laravel и Yii есть готовые пакеты для jqGrid от других авторов. Там всё целиком сделано как компонент фреймворка. Не знаю, насколько легко там делать extend, но люди пользуются. Думаю, всё хорошо там
8) Перенести вики на github хотя бы ради подсветки синтаксиса.
Good point. На момент первичного релиза у гитхаба ещё не было функций wiki.
Ещё хотелось поддержать тот же стиль документации, что используется для jqGrid JS. Её всё равно придётся читать, а так вроде меньше переключений на другой стиль.