Подключение иерархического грида в ContainerList

Добрый день, Коллеги!

Получил задачу подключения иерархического отображения записей в гриде.

Однако столкнулся со следующей трудностью:

Контейнер, в котором отображается реестр представляет из себя:

"operation": "insert",
"name": "DataGrid",
"parentName": "gridContainer",
"propertyName": "items",
"values": {
		"itemType": Terrasoft.ViewItemType.CONTAINER,
		"className": "Terrasoft.ContainerList"
........
}

Судя по описанию класса сам по себе он не поддерживает иерархию

Однако, существует расширение класса "HierarchicalContainerList"

Возникают следующие вопросы:

1) Актуален ли класс HierarchicalContainerList на текущий момент. Если ли примеры его явного использования? Сможет ли он поддержать иерархическую структуру?

2) При попытке обращения к нему в виде:

"generator": "ConfigurationItemGenerator.generateHierarchicalContainerList"

Не совсем понимаю как именно задать нужные свойства

nestedItemsAttributeName и nestedItemsContainerId:

generateHierarchicalContainerList: function(config, generatorConfig) {
			var containerListConfig = this.generateContainerList(config, generatorConfig);
			containerListConfig.className = "Terrasoft.HierarchicalContainerList";
			Ext.merge(containerListConfig, {
				nestedItemsAttributeName: config.nestedItemsAttributeName,
				nestedItemsContainerId: config.nestedItemsContainerId
			});
			return containerListConfig;
		}

Могу предположить что в nestedItemsAttributeName должно быть наименование колонки, хранящей id родительской записи.

А вот nestedItemsContainerId, не совсем понятно. Похоже что этот атрибут должен принимать сам Id родительской записи.

 

Коллеги, буду благодарен за любую информацию, спасибо!

Нравится

6 комментариев
Лучший ответ

Титаев Александр Николаевич,

Насколько я понял, то вся суть проблемы именно в том, что подбор продуктов использует не Grid, а ContainerList.

 

Реализовывал такую же задачу, но не нашел, как сделать ContainerList иерархичестим. Я полностью менял контрол страницы подбора из ContainerList на Grid а точнее на HierarchialGrid.







Функционал рабочий, но есть некрасивые моменты, когда активна строка для изменения значений.







Поэтому, если найдете решение, как сделать красиво, то буду благодарен за совет, как сделать лучше.

 

Александр, судя по упоминаниям в коде, HierarchicalContainerList  используется для отображения параметров в карточке настройки элемента БП (например, вызова подпроцесса и веб-сервиса). Случаев его применения для реестра не вижу.

 

Для реализации древовидных реестров есть дополнение, но оно платное. Вот обсуждение с тех времён, когда ещё было бесплатным.

 

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

 

В «коробке» есть древовидная деталь структуры проекта, реализованная в схеме ProjectStructureDetailV2:

{
	"operation": "merge",
	"name": "DataGrid",
	"values": {
		"id": "StructureGrid",
		"type": "listed",
		"hierarchical": true,
		"sortColumnDirection": {"bindTo": "disableGridSorting"},
		"hierarchicalColumnName": "ParentId",
		"updateExpandHierarchyLevels": {
			"bindTo": "onExpandHierarchyLevels"
		},
		"expandHierarchyLevels": {
			"bindTo": "expandHierarchyLevels"
		},

Там же приведены функции onExpandHierarchyLevels, clearExpandHierarchyLevels, removeExpandHierarchyLevel и другие, реализующие логику древовидности.

Зверев Александр,

Спасибо за подсказку! Да, со схемами и сервисами детали ознакамливался в процессе анализа.

Однако вся суть в том, что иерархия должна ложиться на страницу продуктового каталога (подбор товаров), где используются как раз другие классы, да и друагя логика получения коллекции, подгружаемой в Grid.

Дополнение или очевидное задание иерархии при использовании "Terrasoft.ContainerList" на сколько я понял, не возможно (уже пробовал).

Буду думать как выходить из ситуации. Ещё раз спасибо!

 

Титаев Александр Николаевич,

Насколько я понял, то вся суть проблемы именно в том, что подбор продуктов использует не Grid, а ContainerList.

 

Реализовывал такую же задачу, но не нашел, как сделать ContainerList иерархичестим. Я полностью менял контрол страницы подбора из ContainerList на Grid а точнее на HierarchialGrid.







Функционал рабочий, но есть некрасивые моменты, когда активна строка для изменения значений.







Поэтому, если найдете решение, как сделать красиво, то буду благодарен за совет, как сделать лучше.

 

Не уверен, но если дело только в ширине выпирающей выделенной записи, это может быть задано в CSS этого элемента. Посмотрите, какие этому элементу страницы добавляются свойства и в какой схеме с CSS они записаны. Возможно, красивее получится путём их правки.

Зверев Александр,

Да. CSS поможет с этим.

Но мне не нравится чекбокс так же. В контейнерлисте были видны сразу все чекбоксы и отмечал, что мне нужно. А в гриде просто Да/Нет видно. И только при активации строки появляется чекбокс.

А это изначать было важной частью моего функционала, чтобы можно было быстро выбирать записи чекбоксами. 

То-есть сейчас нужно активировать запись и только потом выбрать галочкой.

Вроде незначительно, но для пользователя менее удобно

Владислав, галочки и да/нет в реестре обсуждались тут, также ранее заведена идея об этом.

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