⟵ сюдатуда ⟶
  • Учебный курс
  • Создание простых таблиц и полей
  • Коды базовый уровень
  • Селекты и связь между таблицами
  • Настройки таблиц базовый уровень
  • Префильтры базовый уровень
  • Условное форматирование базовый уровень
  • Коды действия базовый уровень
  • Использование всплывающих окон
  • Циклы базовый уровень
  • Роли и пользователи в web
  • Коды продвинутый уровень
  • Коды действий продвинутый уровень
  • Префильтры продвинутый уровень
  • Настройки полей и таблиц продвинутый уровень
  • Циклы продвинутый уровень
  • Форматирование продвинутый уровень
  • Селект-дерево
  • Тип поля Селект-дерево
  • Tree-вью на основе селект-дерева
  • Выполнения кода действия по расписанию
  • Печать и отправка email
  • Нотификации
  • Взаимодействие по API
  • Адаптивность и секции
  • Графики
  • Вид таблицы панелями и поворот строчной части
  • Анонимные таблицы для неавторизованного доступа
  • Внешние формы для сбора информации
  • Обновление и бэкапирование
  • Дублирование схем и перенос таблиц между базами
  • Консольная утилита bin/totum
  • Tree-вью на основе селект-дерева

    пример как оформить таблицу в виде дерева

    Tree-вью является одной из самых сложных тем в totum. Поэтому изучаем в два этапа.

    Первый — это папки и значения в одной таблице. Для того, что бы оформить таблицу как дерево нам нужно:

    1. Создать поле в строчной части типа Строка для названия папки/элемента.

    2. Создать поле тип Дерево с nametree.

    3. Заполнить код-селекта:


      =:
      selectRowListForTree(table: $#ntn; field: 'nazvanie'; parent: $#nf; order: 'nazvanie' asc)
    4. Убедиться, что включены параметры дерево строится по одной таблице и папки можно выбирать.

    На этом месте можно сохранить и посмотреть, что происходит. При добавлении мы заполняем название и в поле tree можем выбрать родителя для строки.

    Добавьте так несколько строк. Если tree остается пустым — то это означает, что эта строка будет на верхнем уровне.

    1. Дальше идем в настройки tree и включаем параметр тип таблицы-дерева в значении по этой таблице. А также ставим Загрузить все и Открыть все.

    2. Теперь нам нужно оформить форматирование поля tree. Скопируйте туда такой код и поставьте ширину полю 200:

      // Убираем пути и делаем заливку
      f1=: setFormat(text: " "; background: "whitesmoke"; editbutton: true)
      
      // Отключаем разворачивание пустым папкам и заменяем им иконку
      f2=: setFormat(condition: #id != $sel; icon: "folder-o";  expand: false)
          sel: selectList(table: $#ntn; field: 'tree')
      
      // Убираем поле tree из панели
      f3=: setFormat(hide: "extpanel" = true) 
      
      

    Какой name должно иметь поле, чтобы появилась возможность включить tree-вью?

    tree

    Какой параметр должен быть включен у поля tree, чтобы сработало отображение tree-вью?

    Тип таблицы-дерева.

    Что значит «По текущей таблице»?

    Это значит, что структура дерева и конечные значения находятся в одной таблице.

    Можно ли настроить отображение поля tree?

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

    Что значит по «Другой таблице»?

    Это значит, что дерево у нас хранится в одной таблице, а его значения в другой.

    пример формирования дерева «по другой таблице»

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

    1. Создаем еще одну таблицу.

    2. Создаем пару полей в строчной части в которых будут значения.

    3. Создаем поле с name = tree с типом Селект-дерево. В коде селекта пишем:

      =: selectRowListForTree(table: 'table_tree_1'; field: 'title'; parent: 'tree'; order: 'title' asc)
      
      

      Включаем настройки дерево строится по одной таблице и папки можно выбирать тк дерево в таблице table_tree_1 строится по ОДНОЙ! таблице.

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

    5. Включаем параметр тип таблицы-дерева в значении по другой таблице тк дерево из table_tree_1 находится в другой таблице. А также ставим Загрузить все и Открыть все.

    6. Сразу добавим форматирование поля tree и поставим ему ширину 80:


      f1=:
      setFormat(editbutton: true; text: " "; background: "whitesmoke")
    7. Сделаем автоматический отступ для значений в первом поле слева со значениями:


      f1=:
      setFormat(tab: $count) count: #l.tree * 22

    Как у варианта «По другой таблице» показать не все дерево, а только его часть?

    Если мы хотим показать не все дерево, а только его часть, то в код tree надо передать list из roots.

    Это основания (по умолчанию id) тех родительских элементов, которые должны быть на верхнем уровне.

    Как сделать так, что бы в варианте «По другой таблице» у папок тоже были строки со значениями?

    Для этого добавляется еще одно поле с name = tree_category.

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

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

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