Публикация

Медленная работа детали "Взаимосвязи" раздела "Контрагенты" (режим графического отображения)

Симптомы

Медленная работа детали "Взаимосвязи" раздела "Контрагенты" (режим графического отображения)

Причина

Внутренняя реализация компонента 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 и ссылки на неё необходимо удалить.

Прикрепленные файлы

Нравится

Поделиться

0 комментариев
Показать все комментарии