⟵ сюдатуда ⟶
  • Установка
  • Конфигурация на Ubuntu
  • Обновления
  • Бэкапы
  • Multi/no-multi
  • Консольная утилита bin/totum
  • Основы для пользователей
  • Интерфейс и компоновка
  • Таблицы и их параметры
  • Префильтр
  • Поля и их параметры
  • Синтаксис
  • Код, действия, форматирование
  • Реляционные взаимосвязи
  • Порядок расчета и единицы пересчета
  • Сравнения
  • Функции
  • Отладка
  • Автозаполнение расчетных и временных
  • Дублирование строк и циклов
  • Деревья
  • Тип таблицы дерева
  • tree_category
  • Оформление поля tree
  • Отступ для последующего поля при помощи tab: и обращения #l.tree
  • Roots для вывода части дерева
  • Печать и CSV
  • API
  • Роли и пользователи
  • Нотификации
  • Действия по расписанию
  • Анонимные таблицы
  • Внешние формы
  • Экспорт и импорт таблиц
  • Системные таблицы
  • Подключение функций
  • Дополнительные интерфейсы
  • Структура файлов
  • Структура базы
  • Деревья

    Деревья

    Для оформления отображения таблицы в виде дерева необходимо содать в ней в строчной части поле с 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_category для указания к какой папке относится строка!

    tree_category

    Когда Тип таблицы дерева выбран как По другой таблице, то в таблице нет строк относящихся к папкам. Те папки являются виртуальными строками. Для того, что бы они имели значения, необходимо создать поле с name = tree_category. Использовать тип селект-дерево для этого поля необязательно.

    В поле кодом или вручную должно быть выбрано значение соответсвующее id или bfield папки, которой соответсвует строка.

    Обратите внимание, что в поле tree указана родительская категория, поэтому значение в tree и tree_category отличаются на один уровень.

    Tree_category справа. Обратите внимание, на различие отображения папок там где есть назначенные tree_category и где нет.

    Трее категори

    Для корректной работы поле tree_category должно быть видимым пользователю. Может быть скрытым по умолчанию.

    Оформление поля tree

    Визуальное оформление поля tree через код-форматирования остается на стороне специалиста тотум.

    Например вы можете отключить отображение названия родительской категории:

    f1=: setFormat(text: " ")
    

    Или заменить по условиям иконку папки, например если нет дочерних то:

    f2=: setFormat(condition: $ch = $#lc; icon: "folder-o")
    
    ch: selectTreeChildren()
    

    Заблокировать разворачивание папки по условию при помощи параметра expand: false функции setFormat:

    f3=: setFormat(condition: $cond = 1; expand: false)
    
    

    Отступ для последующего поля при помощи tab: и обращения #l.tree

    Отступ

    f4=: setFormat(tab: $count)
    
    count:  #l.tree * 22 + 26
    

    Обращение #l.name_field может быть использовано для любого поля селект-дерево — возвращает уровень вложенности значения в поле.

    Roots для вывода части дерева

    В случае дерева по другой таблице, которое в текущем tree-вью должно быть показано частично используется параметр roots: функции selectRowListForTree.

    В roots: передается список из значний id или bfield тех папок, которые должны оказаться на верхнем уровне.

    Все что будет выше этого уровня отображаться не будет.

    При использовании roots: порядок будет отображаться по сортировке корней!