2010-11-03 2 views
1

Поскольку это огромный пост здесь краткое резюме (пожалуйста, прочитайте отверстие сообщение, если вы хотите, чтобы ответить хотя):Что JQuery сетки поддерживает непрерывный поток обновлений (JSon)

Реализовано Сейчас:

  • Сайт тянет много JSON (полный набор данных каждый раз ~ 30kb, уже архивированная)
  • Предоставляет данные в виде HTML таблицы стороне клиента
  • Слишком много трафика
  • Слишком длительное время рендеринга

Ссылка на одном из сайтов: Sample

Мы уже реализованного извлечение неполных данных, что нам нужно сейчас, чтобы найти решение, которое:

  • Только визуал для внесения изменений
  • Вспышка обновленных ячеек

Вопрос: Какая сетка или другие решения существуют, чтобы это произошло?

UPDATE: клиент хочет, чтобы увидеть все доступные данные сразу, не пейджинг.


Полное описание:

В нашем приложении мы должны отображать определенное количество строк (~ 300-1000) в сетке. Посетители могут сортировать (на стороне клиента), щелкая на заголовках. Кроме того, каждая строка содержит несколько ссылок, которые открывают iframe, используя colorbox.

Данные

  • обновляется каждые 30 секунд (JSON от сервера)
  • состоит из нескольких полей (строк, INTS и десятичные).
  • только десятичные разряды, хотя меняются, это означает, что ссылки (ColorBox) остаются такими же, как хорошо
  • не отображаются все данные, некоторые используются только для сортировки

стороны клиента В настоящее время мы используем сочетание jTemplates, tablesorter и colorbox, чтобы отобразить весь набор данных json в таблице html.В настоящее время поток:

  1. извлечь данные с сервера (полный набор данных)
  2. визуализации данных в HTML с использованием jTemplates
  3. Initialize Colorbox для таблицы
  4. Initialize TableSorter для таблицы
  5. Start снова из № 1

Решение выше работает, но есть некоторые проблемы:

  • Множество дубликатов данных получает переносной. Это добавляет довольно быстро (> 5Гб/день)
  • Визуализация данных занимает довольно некоторое время (~ 300мс), его хуже на мобильные телефоны
  • переинициализации ColorBox и TableSorter каждый раз, когда потребуется некоторое время, а также (~ 400мс), также хуже на мобильные телефоны

Таким образом, наша цель состоит в том, чтобы просто перенести обновленным и новые данные через JSON. Каждая строка имеет простой уникальный ключ (int), поэтому их можно легко идентифицировать.
Дополнительно мы хотим, чтобы flash контейнер обновленных или недавно вставленных данных, в качестве уведомления пользователя о произошедших изменениях.

Поток мы имеем в виду:

  1. Получить данные в формате JSON от сервера (полный комплект)
  2. Визуализировать сетку с сортировкой и инициализирует Colorbox ссылки
  3. Получить JSon данные с сервера (только обновленные значения и новые строки)
  4. Обновление сетки (только измененные значения и новые строки) < - также вспышки значение containter после обновления
  5. Start снова с # 3

Так сетками мы ищем потребность для поддержки ЗАГРУЗКИ данных в виде отверстия, а также загрузки только обновленным значения.

Полный набор данных будет выглядеть следующим образом:

{ 
    [ 
     { 
     "key":1, 
     "StaticProperty":"value3", 
     "PropertyOne":2.85 , 
     "PropertyTwo":1.99 
     }, 
     { 
     "key":2, 
     "StaticProperty":"value2", 
     "PropertyOne":5.66, 
     "PropertyTwo":7.36 
     }, 
     { 
     "key":3, 
     "StaticProperty":"value3", 
     "PropertyOne":1.78, 
     "PropertyTwo":9.31 
     }, 
     { 
     "key":4, 
     "StaticProperty":"value4", 
     "PropertyOne":1.78, 
     "PropertyTwo":9.31 
     }, 
     { 
     "key":5, 
     "StaticProperty":"value5", 
     "PropertyOne":1.78, 
     "PropertyTwo":9.31 
     } 
    ] 
}; 

Набор данных обновления будет выглядеть (Remeber он будет содержать только измененные значения):

{ 
    "updates" : [ 
     { 
     "key":1, 
     "PropertyOne":4.88 
     }, 
     { 
     "key":2, 
     "PropertyOne":2.77, 
     "PropertyTwo":3.88 
     }, 
     { 
     "key":6, 
     "StaticProperty":"value6", 
     "PropertyOne":7.23, 
     "PropertyTwo":8.42 
     } 
    ], 
    "deletes" : [ 4, 5 ] 
}; 

Как вы можете видеть обновление может содержать:

  • частичные обновления (ID # 1)
  • несколько обновлений в строку (ID # 2)
  • нет обновлений для существующих строк (ID # 3)
  • идентификаторов удаленных строк, как простой массив (ID # 4, # 5)
  • новых строк (ID # 6)

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

Все данные с благодарностью.

ответ

0

Задать вопрос:
NO, такой сетки нет. Нам придется строить его с нуля.
Я обновлю этот вопрос/ответ с помощью URL-адреса для завершенной сетки, как только он появится на месте, чтобы дать другим начало.

0

просто мысль ... вы уже используете jquery и json ... считаете ли вы ajax? поскольку вы только обновляете, вы сможете найти идентификатор в таблице для обновлений с помощью json из jquery и обновить только эти строки.

Это поможет вам сделать рендеринг и трафик огромным количеством. установите jquery для запуска ajax на таймере с установленным фоновым объектом, который вытягивает только обновленные строки.

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

+0

Thx для наконечника.Это на самом деле уже происходит, мы используем функцию ajax jquery, проблема заключается в том, чтобы больше обновлять значения в ui и скорость рендеринга. я предпочел бы использовать существующий компонент, чем это делать пешком;) – ntziolis

+0

У меня есть часть приложения, над которым я работаю, что полностью возвращает repearter, а затем я возвращаюсь (функция щелчка) и должен обновлять определенные разделы из Интернета источник сервиса ... он берет навсегда, если я пытаюсь сделать все сразу, вот почему я поднял ajax ... я люблю материал. – Patrick

+0

Привет, sry для более позднего ответа, как я уже говорил, прежде чем мы уже используем запросы ajax, чтобы вытащить данные с сервера. Чего мы хотим избежать, это вручную обновление значений в DOM. По-видимому, похоже, что такого компонента нет :( – ntziolis

0

Мой личный фаворит плагин Grid на основе jQuery - это jQuery flexigrid plugin.

Это довольно многофункциональный объект. Вы можете указать, следует ли загружать записи таблицы при загрузке страницы или указывать хорошую функцию, которая возвращает XML/JSON, которая будет автоматически выводиться. Я лично использовал его много раз с приложениями ASP .Net, чтобы вызывать поддержку веб-сервисов, а затем каждый раз выводить результаты.

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

+0

Насколько мне известно, он не поддерживает только обновление на основе изменений, но ему нужен весь набор данных, который нужно инициализировать (только первый запрос json вернет весь набор данных, а затем просто изменит). Я пропустил что-то? – ntziolis

+0

Несомненно, бросание всего набора данных всегда будет дороговато в первую очередь? Почему бы просто не позволить запускать Flexigrid при загрузке страницы, а затем запросить текущую ценность данных «страницы» через быстрый ajax/json.Это будет довольно недорогим, поскольку вы показываете результаты только для своего текущего подмножества просмотров. –

+0

Вы правы, но клиент не хочет этого. Вся идея сайта - дать обзор из всех доступных данных без пейджинга, я должен обновить вопрос, чтобы отразить это. – ntziolis

Смежные вопросы