LINUX.ORG.RU

А что нынче модно использовать для отображения больших таблиц?

 ,


0

1

Имеется нужда написать приложение, работающее с базой данных. Сервер-сайд - все проще, хоть перл, хоть ява. А вот что делать с клиент-сайдом, когда надо отобразить овер10000 таблицу/выборку с возможностью редактировать все это дело? Какие библиотеки нынче используются для этих целей? Есть ли что-то для FRP? Может, кто делал такое на ReactScript? В общем, расскажите, как справлялись с такими задачами.

★★★★★

Ответ на: комментарий от TERRANZ

Да кто б спорил? только его что, ручками организовывать в век технологий и горы библиотек?

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

Datatables с пагинацией / бесконечным скроллом (через ajax)

kovrik ★★★★★
()

опиши подробнее задачу. начни с того что жиквери будет вставлять/сохранять рендеренные на сервере куски хмтл, с богатыми клиентами не спеши

trashymichael ★★★
()

Использую для этих целей фреймворк js/Dojo и модуль dgrid (изначально разработанный компанией SitePen)

Порог вхождения очень высокий, и попотеть придется изрядно. Зато это предельно гибкий и очень настраиваемый вариант. Есть пагинация, группировка и редактирование ячеек и многое другое. Ну и, само-собой, присущая всем дожовским модулям связка с API источников данных (REST, БД браузера, ин-лайн список и т.д) так же имеется.

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

это ты говоришь или твои сетеротипы? попробуй и так и сяк и скажи, положив руку на сердце, что удобней. браузер сам разберет что ему и как оптимальнее отрисовать, даже 100к не цифра для дом дерева

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

как ЭТО может быть удобным для пользователя? это грузится без сервера секунд 5-7. А если еще и с сервером... а если канал слабый?..

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

сто тысяч - это слишком много имхо.

ну да ладно, смотри сам.

если полный client-side, то поиграйся с createDocumentFragment и не юзай сторонние библиотеки.

смотри сюда: http://jsfiddle.net/2j4T8/2/

у меня справляется за 3с в отличие от варианта с jQuery (8 секунд).

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

а можете привести ссыль или хотя бы скрин с таким дизайном?

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

не юзай сторонние библиотеки

почему же? что в них плохого, если они дают готовый инструмент?

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

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

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

вот «бесконечная» таблица:

http://docs.sencha.com/extjs/4.2.2/#!/example/grid/infinite-scroll.html

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

Это что же должен быть за компьютер, чтобы не тормозить при 10000 записях в таблице?

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

у меня нет проблем со страницей по ссылке.

У меня повисло. Ноутбучный процессор не прощает твоих представлений о легковесности.

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

я почему-то не понял, как его юзать :( есть какие-нибудь хорошие маны, кроме доков?

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

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

Начни с этого:

http://docs.sencha.com/extjs/4.2.2/#!/guide/getting_started

Если начнешь с ним работать по-серьезному, то ничего кроме доков и чтения исходников не спасет. Инфа зачастую устаревшая, по версии 3. А четверка отличается от тройки довольно сильно.

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

да мне вот непонятно с его прекомпилляцией. Оно только для фронта или же на сервере тоже его код выполняется? просто бэк любой подойдет или нужно только этот ЭкстЖС юзать?

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

это только front-end.

если захочешь менять каскадные таблицы стилей, то понадобится ruby+compass (http://compass-style.org/).

бэк подойдет любой, но оно немножко вредное. :)

REST-запросы имеют слегка специфичный вид, тебе придется следовать соглашениям (можно поменять, но придется довольно долго поковыряться и разобраться с Ext.data.Store и с кучей вспомогательных классов).

noomorph
()

dojo из коробки умеет ленивую загрузку таблиц/деревьев. Но сам фреймворк достаточно тяжеловесен местами.

madcore ★★★★★
()

когда надо отобразить овер10000 таблицу/выборку с возможностью редактировать все это дело?

Вообще, плохо представляю, чтобы человеку было ок с такими объемами в виде таблицы. Возможно, следует переиначить представление данных.

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

Пока внешний вид не критичен. ЦСС не буду менять. Попробую разобраться.

Вы не против побыть сенсеем? Можно Ваш личный контакт для этих целей, чтоб по мелочам форум не терзать? Лучше скайп или жаббер. Можно не сюда, а на почту в профиле.

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

Ну... Вы себе представляете справочник товаров в той же 1С? У какой-нибудь средней торговой фирмы. Вот и будет этот овер10000

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

Ну... Вы себе представляете справочник товаров в той же 1С? У какой-нибудь средней торговой фирмы. Вот и будет этот овер10000

Никому перед глазами 10000 строк сразу не нужно. Поиск, фильтрация, категории.

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

Добавил в скайпе реквест.

Сенсеем быть против! Никакой ответственности за ваш успех в ExtJS не несу, но при желании+времени+возможности постараюсь ответить на вопросы.

И еще: если у вас модели вложенные друг в дружку или много ассоциаций, то фреймворк крови попьет много. Лучше юзать flat-модели (таблицы с большим количеством столбцов).

noomorph
()

У всех модных фреймворков (Angular, Knockout, ...) есть плагины для работы с большими таблицами. Это либо пагинация, либо отстраивание только видимой части.

Но 10К строк это перебор - такое просто по интерфейсу ни промотать ни наперелистывать. Пересмотрите логику.

Vit ★★★★★
()
Ответ на: комментарий от special-k

За второй линк спасибо, выглядит интересно.

Удивительно, что innerHTML оказался быстрее моего варианта с documentFragment. Правда, не 1 секунда, а 3.5-5с.

Удивительно это потому, что вот было сравнение: http://jsperf.com/appendchild-vs-documentfragment-vs-innerhtml/18

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

Что удивительного-то, он же не в 100000 раз медленнее. Кроме того, он пишет секунда, а подвисает на 5.

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

xml+xslt всегда был актуален (только в основном это server-side)

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

Мы, скорее всего, друг друга не поняли :) Я не собираюсь перекладывать свою ответственность на другого, на Вас. Нет. Проект мой, ответственность моя. Просто в случае затыка, полезней, иногда, спросить кого-то, если документация привела в тупик.

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

У нас вот эта байда http://datatables.net/ используется. Туевая документация и странный апи, но много плюшек и вроде бы нормальная поддержка. Но у нас не 1000 таблиц, а штук двадцать.

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