Задать вопрос
@i_want_to_know_everything

JS Замена строк таблицы?

Есть некая таблица, открытая на нескольких клиентах, каждый клиент работает с ней, все изменения пишутся в базу. Каждые 30 секунд каждый клиент отправляет запрос на сервер и получает все изменения, каким образом на клиенте заменить только те строки таблицы которые отличаются в ответе от сервера и на клиенте, в настоящее время каждый раз таблицу на клиенте меняю, но это не очень удобно для конечного пользователя
  • Вопрос задан
  • 416 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
Попробуйте воспользоваться готовым решением для таблиц, а именно datatables.
Там много фич, которые сильно упрощают жизнь и не придется придумывать набор велосипедов
https://www.datatables.net
Ответ написан
@rakro
В чем конкретно проблема? Если у вас с сервера приходит json, найдите разницу между тем что есть сейчас и что на сервере. Удаляйте лишнее и добавляйте новые строки. Если с сервера приходит html(ну а вдруг), то меняйте архитектуру.
Ответ написан
Комментировать
iCoderXXI
@iCoderXXI
React.JS/FrontEnd engineer
В самом запущенном случае у каждой строки должен быть уникальный айди, и в получаемых с сервера данных для строк тоже должны быть айди и признак. что данная строка была изменена с момента итерации Х. Так же с сервера приходит номер текущей итерации, который с каждой рассылкой увеличивается. Т.е. трем разным клиентам отправляется одинаковый номер текущей итерации, который инкрементируется только в момент изменения данных каким-либо из пользователей. Далее клиент обновляет все строки в диапазоне своего текущего номера итерации и нового, полученного с сервера, после чего присваивает своему локальному номеру итерации серверный.

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

Разумеется надо как-то каждое изменение сопрягать с номером итерации и хранить эти мета-данные.

Надеюсь не слишком сложно объяснил.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы