Медленная работа детали "Взаимосвязи" раздела "Контрагенты" (режим графического отображения)
Симптомы
Медленная работа детали "Взаимосвязи" раздела "Контрагенты" (режим графического отображения)
Причина
Внутренняя реализация компонента 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 и ссылки на неё необходимо удалить.