Перейти к основному содержимому
Версия: v3.3.2

Загрузка узлов

Медленная загрузка деревьев может свести на нет все усилия по облегчению работы с атрибутами. Поэтому, для дочерних узлов, таких как Шаблоны и Значения используется, так называемая, ленивая (lazy) загрузка. Эти узлы не загружаются в момент загрузки дерева, а подгружаются по мере обращения к ним, т.е. по запросу. Вот почему при двойном клике на узел Шаблоны или Значения прежде, чем откроется этот узел, приходится наблюдать индикатор загрузки loading.

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

Для открытия узлов используются ajax-запросы, каждый из которых вносит задержку до 1 секунды. Испытания на большом количестве атрибутов показали, что часто происходит зависание.

Начиная с версии 2.1.4 появилась возможность управлять режимом загрузки. Либо в настройках, либо через контекстное меню, можно включить или отключить режим ленивой загрузки. Если этот режим отключен, все узлы дерева загружаются полностью. Отпадает необходимость делать обход дерева и догружать узлы, что многократно ускоряет поиск.

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

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

FancytreeNode(#attribute_393, 'New attribute') scrollIntoView(): node is invisible

Это означает, что данные ajax запроса не успели загрузиться до начала их использования. Особенно это проявляется на медленных серверах. Ничего страшного, на результаты работы модуля это не влияет.