#javascript #jquery #comet #datatables #cometd
#javascript #jquery #comet #таблицы данных #cometd
Вопрос:
Я занимаюсь веб-проектом по наблюдению за рынком / акциями.
На стороне сервера у меня есть сервлет и служба в реализации cometd-jetty.
Служба (издатель клиента CometD) отправляет опубликованные данные в формате JSON. т.е. [{«Стандартный код»:»ABC»},{«Стандартный код»:»DEF»}]. Временной интервал публикуемых данных составляет почти каждую секунду или даже меньше.
Во внешнем интерфейсе я использую реализацию cometd javascript для извлечения данных и отображения их в html-таблице с помощью jquery.
Вопросы:
1.) Каков наилучший способ отображения данных в таблице (с использованием плагина datatables) с очень быстрым получением данных с сервера publisher / cometd (менее секунды на каждое сообщение)?
2.) Как я могу указать изменение цены через ячейку таблицы hi-lighting при изменении цены акций? Я пытаюсь разобраться в этом, используя js или jquery?
Ваша помощь очень ценится!
Ответ №1:
1) Плагин DataTables может использовать массив JavaScript в качестве источника данных. У вас будет какой-то метод, который обрабатывает входящие данные; поместите это в массив JS, а затем вызовите .DataTable() с этим в качестве источника.
2) Внутри объекта инициализации DataTables вы можете устанавливать функции обратного вызова на различных этапах. Одним из них является fnRowCallback, который позволяет изменять строку и ячейки внутри нее на основе доступных данных. Возьмите данные, запустите функцию сравнения и, когда условия будут выполнены, измените ячейку.
Для обоих вопросов должен быть образец кода, доступный по адресу DataTables.net .
Комментарии:
1. Согласно 1-му ответу, я уже это сделал. Во-вторых, я понимаю, что вы сказали, что я могу получить предыдущее и новое значение ячейки. Это правильно? Если это так, я могу реализовать желаемую функцию hi-lighting. Спасибо за ответ, Грег!
2. Хм, я думаю, у меня сложилось неправильное впечатление. К моменту запуска fnRowCallback предыдущее значение исчезает. Вы запустите функцию сравнения из fnRowCallback, но «предыдущие» данные должны быть доступны где-то еще. Каждый раз, когда данные поступают в таблицы данных, вы должны сохранять их копию в переменной с правильной областью действия.