Сейчас поток данных организован так, что обновление одной позиции в одном из списков триггерит обновление всей таблицы.
Angular это сглаживает, но при добавлении большого числа новых записей (разворачивание секций) все равно тормоза очень ощутимые. Можно, конечно, поправить стрим даты, но есть ощущение, что ng-table все равно будет тормозить т.к таблица подразумевает отображение статических данных, а тут больше кол-во динамических. Кроме того приходится "бороться" с фичами ng-table. Например, сейчас в таблице включен virtual scrolling исключительно для того, чтобы был автоскролл при перемещении записей между секциями.
Для примера на tradingview.com watchlist сделан обычными div и при том они утверждают, что поддерживают до 1000 инструментов. у нас же отрисовка 200+ сильно тормозит и заставлеяет лагать весь терминал
Очень желательно сделать отдельный WS эндпоинт для watchlist на стороне бэка. Сейчас чтобы собрать данные для таблицы для КАЖДОЙ записи мы делаем:
-Http запрос для получения данных по инструменту
-Http запрос для получения последних 2 свечей (дневных), чтобы отобразить closePrice и openPrice, minPrice и maxPrice, volume
-Http запрос для получения последней свечки для выбранного таймфрейма (отображение priceChange и priceChangeRatio)
-WS подписка на свечи чтобы только отобразить priceChange и priceChangeRatio
-WS подписка на котировки.
Итого на каждый инструмент по 3 http запроса и 2 WS подписки. И если http запросы оказывают влияние (значительное) при загрузке виджета и переключения списков, то 2 WS заставлют обновлять интерфейс дважды, причем на списке 200+ обновления приходят каждые 2-5 мсек !!! В итоге WS канал забит этими сообщениями
Для пример TV устанавливает всего 1 подписку
Логичнее запросы 2-5 реализовать и аггрегироватмь на бэке
https://github.com/user-attachments/assets/2a7a409a-e2c4-4efb-92f8-f9b9e3d61758
Сейчас поток данных организован так, что обновление одной позиции в одном из списков триггерит обновление всей таблицы. Angular это сглаживает, но при добавлении большого числа новых записей (разворачивание секций) все равно тормоза очень ощутимые. Можно, конечно, поправить стрим даты, но есть ощущение, что ng-table все равно будет тормозить т.к таблица подразумевает отображение статических данных, а тут больше кол-во динамических. Кроме того приходится "бороться" с фичами ng-table. Например, сейчас в таблице включен virtual scrolling исключительно для того, чтобы был автоскролл при перемещении записей между секциями. Для примера на tradingview.com watchlist сделан обычными div и при том они утверждают, что поддерживают до 1000 инструментов. у нас же отрисовка 200+ сильно тормозит и заставлеяет лагать весь терминал
https://github.com/user-attachments/assets/a5766102-e6e2-4ebd-af71-d59f49f89c1a
-Http запрос для получения данных по инструменту -Http запрос для получения последних 2 свечей (дневных), чтобы отобразить closePrice и openPrice, minPrice и maxPrice, volume -Http запрос для получения последней свечки для выбранного таймфрейма (отображение priceChange и priceChangeRatio) -WS подписка на свечи чтобы только отобразить priceChange и priceChangeRatio -WS подписка на котировки.
Итого на каждый инструмент по 3 http запроса и 2 WS подписки. И если http запросы оказывают влияние (значительное) при загрузке виджета и переключения списков, то 2 WS заставлют обновлять интерфейс дважды, причем на списке 200+ обновления приходят каждые 2-5 мсек !!! В итоге WS канал забит этими сообщениями
Для пример TV устанавливает всего 1 подписку Логичнее запросы 2-5 реализовать и аггрегироватмь на бэке