Медленная работа детали "Взаимосвязи" раздела "Контрагенты" (режим графического отображения)
Симптомы
Медленная работа детали "Взаимосвязи" раздела "Контрагенты" (режим графического отображения)
Причина
Внутренняя реализация компонента diagram.js и механизма отображения элементов детали (RelationshipDiagramViewModel).
Решение
В версии 7.7.0 реализация компонента diagram.js существенно оптимизирована. Для переноса функционала на версию 7.6 можно загрузить в пакет Custom модуль из файла UsrDiagram.md, который полностью переопределяет базовый класс "Terrasoft.Diagram", а также добавить в конфигурацию замещающий клиентский модуль для детали AccountRelationshipDetailV2, в котором добавить связь с модулем UsrDiagram и переопределения некоторых методов из вью-модели диаграммы.
Пример кода:
define("AccountRelationshipDetailV2", ["UsrDiagram"], function() { return { methods: { getMinLevel: function(accounts) { return accounts[0].level; }, getMaxLevel: function(accounts) { return accounts[accounts.length - 1].level; }, buildDiagramNodes: function(accounts) { this.clearAllDiagramNodes(); var nodes = this.get("Nodes"); var accountConfigs = {}; accounts.forEach(function(account) { accountConfigs[account.id] = this.getNodeConfig(account); }, this); nodes.loadAll(accountConfigs); this.createNodeConnections(accounts); }, createNodeConnections: function(accounts) { var nodes = this.get("Nodes"); var connectionConfigs = {}; var maxLevel = this.getMaxLevel(accounts); var filteredAccounts = accounts.filter(function(item) { return item.level < maxLevel; }); filteredAccounts.forEach(function(account) { account.children.forEach(function(child) { connectionConfigs[account.id + "/" + child.id] = this.getConnectionConfig(child, account); }, this); }, this); nodes.loadAll(connectionConfigs); } }, diff: /**SCHEMA_DIFF*/ []/**SCHEMA_DIFF*/ }; } );
Для версий 7.7.0-7.8.0 достаточно переопределить методы вью-модели.
В следующих версиях планируются дополнительные работы по оптимизации данной детали.
Необходимые условия и возможные ограничения
При обновлении с версии 7.6.0 на 7.7.0 и выше, описанную выше схему UsrDiagram и ссылки на неё необходимо удалить.