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

    Поля Селект и Селект-дерево.

    В видео на 14:00 допущена ОШИБКА!
    В видео параметр id: удаляется — это неправильно.
    ПРАВИЛЬНО: подставить в id: значение текущего поля через # или $#.
    ПРИМЕР: id: $#nfv;
    

    Селект

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

    Поле Селект

    Значение — Отображение

    Особенностю поля является то, что оно хранит строковое значение являющееся id строки в таблице источнике. В терминологии Тотум — значение или основание.

    Пользователь же видит в поле не значение, а рассчитанное по формуле отображение.

    Значение - Отображение

    Код Селекта

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

    = : selectRowListForSelect(table: 'products'; field: 'product'; order: 'product' asc;  preview: 'price'; preview: 'available')
    
    

    Код селекта должен возвращать либо результат работы функций selectRowListForSelect и selectRowListForTree, либо сформированный другими способами список ассоциированных массивов.

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

    Формат массива:

    [
    {"value": 1, "title":"Alexey", "is_del": false},
    {"value": 3, "title":"Boris", "is_del": false,}
    {"value": 2, "title":"Pavel", "is_del": false,}
    ]
    
    • valueзначение поля.

    • titleотображение поля.

    • is_del — признак удаленности значения при активном параметре таблицы скрывать при удалении.

    Можно сформировать необходимый массив вручную функцией rowListCreate.

    Индивидуальный расчет селекта

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

    Параметр поля индивидуальный расчет селекта.

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

    ex: selectRowListForSelect(table: 'products'; field: 'product'; where: 'price' > #min_price)
    
    

    Будте внимательны — это сильно нагружает сервер и замедляет показ таблицы пользователю.

    Гарантированный показ отображения выбранного значения

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

    Нет отображения

    Если вы хотите, что бы выбранное значение по прежнему имело отображение выполните выборку через отдельный select и добавьте текущее значение:

    //так будет зачеркнутое
    ex_1: selectRowListForSelect(table: 'select_table'; field: 'select_field'; where: 'id' > 3)
    
    //так будет дополнятся текущим
    ex_2: selectRowListForSelect(table: 'select_table'; field: 'select_field'; where: 'id' = $id)
        id: listAdd(list: $listId; item: $#nfv)
            listId: selectList(table: 'select_table'; field: 'id'; where: 'id' > 3)
    

    Берем значение через # или select

    Когда мы берем значение Селекта через #, @ или select, то мы берем значение.

    Если вам необходимо взять отображение то используется #s.select_field, а для select параметр sfield вместо field. Если это индивидуальный селект то в параметры tfield необходимо указать поля от которых зависит расчет.

    Обращения через #s.fieldname и sfield сильно нагружают сервер тк при каждом использовании рассчитывают отображения вызываемых селектов.

    Множественные Селекты

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

    Множественные значения

    Вы можете настроить отображение множественного селекта и показывать только количество значений — параметр поля Отображение множественного селекта в ячейке.

    Обратите внимание: если вы создали одинарный селект, а потом перевели его в множественный вам необходимо пересчитать все строки таблицы.

    Аналогично для изменения множественный — одинарный. В этом случае при наличии выбранных в поле значениях часть из них будет утеряна.

    Редактирование источника из Селекта

    Параметр поля таблица селекта для изменения. Если выбрана таблица, то если у пользователя есть возможность ее изменять — он будет видеть дополнительные клавиши управления.

    Таблица для изменения

    Обращения к источнику через linkToPanel

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

    Параметр поля панель селекта для изменения.

    Другой basefield

    По умолчания основанием (значением) является id в таблице источнике. Но вы можете указать другое строковое поле задав параметр bfield:

    base

    ex_3: selectRowListForSelect(table: 'select_table'; field: 'select_field'; bfield: 'select_base')
    

    Селект-дерево

    Тип поля Селект-дерево — позволяет оформить выбор значения в виде дерева.

    Дерево

    Ожидает результат работы функции selectRowListForTree.

    Основным отличием функции является наличие параметра parent в таблице источнике, по которому определяется родительский элемент.

    Варианты построения дерева

    Тотум поддерживает два варианта дерева:

    Первый: когда поле parent в таблице источнике берет значения из этой же таблицы (источника). В этом случае будет возможно разрешить выбирать папки папки можно выбирать.

    По одной таблице

    Код селекта поля Родительская категория:

    =: selectRowListForTree(table: $#ntn; field: 'category'; parent: $#nf)
    

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

    Второй: когда поле parent является селектом из третей таблицы. В этом случае папки выбирать нельзя.

    В обеих случаях должен быть выбран соответсвующий вариант в параметре поля дерево строится по одной таблице.

    Мультизначения в Селект-дерево

    Параметр поля множественные значения.

    Мультидерево