Для оформления отображения таблицы в виде дерева необходимо содать в ней в строчной части поле с name
равным tree
с типом Селект-дерево.
Самый простой пример, когда дерево и его отображение строится по текущей таблице. Тогда в коде селект-дерева мы в качестве parent
используем это же поле tree
:
=: selectRowListForTree(table: $#ntn; field: 'title'; parent: $#nf)
Если name и тип заданы верно, то у поля будут доступны настройки:
Тип таблицы дерева (treeViewType) — это ключевая настройка, она должна быть включена для отображения таблицы в виде дерева!
См. следующий пункт документации.
Загрузить все (treeViewLoad) — загружает все значения дерева сразу. Если отключен, то значения загружаются в момент разворачивания папки.
Открыть все (treeViewOpen) — открыть все папки при загрузке таблицы.
name-поле родителя (treeViewParentField)
name-поле для bfield (treeBfield)
Является ключевым параметром — когда он включен, то строчная часть таблицы будет отображаться в виде дерева.
Для корректного отображения необходимо выбрать тип:
По текущей таблице
— выбирается, когда значения папок дерева и родительское поле находятся в текущей таблице. Пример выше.
Привязанный на фильтрацию префильтр НЕ СОВМЕСТИМ! с этим типом дерева — выборка всегда будет пустой!
По другой таблице
— выбирается, когда значения дерева и родительское поле дерева находится в другой таблице.
Вид дерева, когда поле tree
строится по другой таблице:
Пример кода:
=: selectRowListForTree(table: 'other_table'; field: 'title'; parent: 'tree')
Визуальное оформление поля tree
через код-форматирования остается на стороне специалиста тотум.
Например вы можете отключить отображение названия родительской категории:
f1=: setFormat(text: " ")
Или заменить по условиям иконку папки, например если нет дочерних то:
f2=: setFormat(condition: $ch = $#lc; icon: "folder-o")
ch: selectTreeChildren(table: $#ntn; id: #id; parent: $#nf)
Заблокировать разворачивание папки по условию при помощи параметра expand: false
функции setFormat:
f3=: setFormat(condition: $cond = 1; expand: false)
f4=: setFormat(tab: $count)
count: #l.tree * 22 + 26
Обращение
#l.name_field
может быть использовано для любого поля селект-дерево — возвращает уровень вложенности значения в поле.
В случае дерева по другой таблице, которое в текущем tree-view должно быть показано частично используется параметр roots:
функции selectRowListForTree.
В roots:
передается список из значний id
или bfield
тех папок, которые должны оказаться на верхнем уровне.
Все что будет выше этого уровня отображаться не будет.
При использовании roots:
порядок будет отображаться по сортировке корней!