Руководтсво администратора/разработчика

Документация

Хранилище данных Buildbox

Типы полей


Что это?

Поля - это элементы, в которые пользователь вносит данные соответствующего типа и формата. 

Поля могут быть следующих типов:

  • Текстовые поля
  • Текст (без форматирования0
  • Редактированый текст


Загрузка файла

Позволяет создать/загрузить и просмотреть загруженный файл

Поле Загрузка файла позволяет создавать или загружать файлы на сервер с вашего компьютера.

Вы можете вручную указать путь к файлу в сети Интернет в формате http://путь_к_файлу. Также вы можете указать путь к файлу на сервере, если знаете его месторасположение.

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

Например:

 

Далее выберите загружаемый файл и нажмите Ок

При загрузке/создании файла будет создан объект файла в Шаблоне Файлы где вы сможете настраивать классифицировать файл через Файловый менеджер

Также есть возможность использовать @-фукнции для формирования имени файла.

Для этого при создании поля вы можете заранее сформировать шаблон пути к загружаемому файлу

Например:

/certs/@Obj(UID)/public - вставляет в путь к файлу идентификатор объекта

 


Кнопка

Тип поля предназначен для назначения событий на Форму.

Элемент поля Кнопка позволяет создавать произвольные кнопки внизу Формы и назначать им обработчики событий.

 

Управление видимостью

Все кнопки имеют параметр Режим показа, который определяет режим, в котором данная кнопка будет отображаться. Хочеться отметить, что если на форме не создано дополнительных Кнопок, то при создании объекта всегда внизу отображается системная кнопка Создать. Чтобы заменить её на собственную кнопку создания (для назначения собственного поведения) необходимо вызвать форму с указанием в запросе на вызов формы создания объекта режим отображения custom (&type=custom)

Например:

/buildbox/gui/obj/modal/_tpls/UID_шаблона_создаваемого_объекта?type=custom

В данном случае, системная кнопка Создать отображаться не будет.

Режимы вывода:

  1. Создание - кнопки, отображаются при создании объекта
  2. Изменение - при изменении
  3. Просмотр
  4. Ручный режим (см.выше)

 


Связь

Селективное поле для одиночного связывания объектов

Поле "Связь" применяется для создания одиночной связи между объетом (один к одному).

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

Более подробно о типах связй вы можете посмотреть здесь.

Post-события

Данный режим предназначен в тех случаях, когда после выбора элемента связи необходимо произвести либо обновления другого элемента интерфейса, либо произвести внешний запрос (аналог триггерной post-обработки)

Текущие опции:

  • Включить - активация режима post-обработки
  • Действие при выборе - выберите один из типов запросов (getURL - GET-запрос  с выводом результата по на указанное место, postURL - POST-запрос с выводом результата по на указанное место, loadModal - GET-запрос по указанному адресу с выводом результата во всплывающее окно)
  • Запрос - адрес запроса. Параметр (ID-выбранного объекта)  будет доступно через конструкцию %uid%.
    Например, запрос может быть таким http://внейший_сайт/?param=%uid%
  • Куда вывести ответ - селектор HTML-контейнера (#id_контейнера или .класс_контейнера), в который будет выведен полученный при запросе результат.

Настройка запросов:

Для настройки запросов можно использовать JS-фукнции, а также селекторы JQuery. 

Селекторами называют строчные выражения, с помощью которых задаются условия поиска элементов DOM на странице. Вы можете находить интересующие вас элементы, используя выражения в стиле CSS 1-3, в дополнении с некоторыми другими возможностями. Селекторы позволяют находить элементы по различным признакам: значению атрибутов, содержимому элементов, родительским элементам, дочерним элементам, порядковым номерам, ну и конечно по именам классов, идентификаторов и/или тегов.

 

Зачем это надо?

Возникают ситуации, когда в запрос отрисовки блока необходимо передавать выбранное значение в поле "Связь". Посколько страница уже сгенерирована, то единственный вариант - это использовать текущее состояние элементов формы по-средством JS-функций.

Пример:

Запрос:

"/ttk/gui/modal/block/ttk_servicelist?f1="+$("#point_sender_pointsrc").attr("value").split("||")[0]+"&f2="+$("#point_recipient_pointsrc").attr("value").split("||")[0];

В данном примере после выбора элемента поля "Связь" происходит обновление блока (в режиме modal - без повторной загрузки стилей) с добавлением выбранного значения поля в качестве передаваемого параметра f1.

  1. $("#point_sender_pointsrc").attr("value") - получаем выбранное значение (point_sender_pointsrc - id-поля "Связь")
  2.  операция .split("||")[0] - получаем только первый элемент значения этого поля (формат добавляемого значения при выборе: uid_элемента || uid_шаблона). Поскольку нам необходимо получить только UID-объекта, то мы преобразуем значение в массив и берем первое значение (0-вой элемент)

Важно! При обработке Post-запросов происходит преобразование строки в выполняемое выражение, поэтому в данном поле можно использовать фукнции JS (JQuery) как текстовый аргумент для преобразования функцией function в выполняемое выражение.

 


Формат полей конфигурации

Все переменные конфигурации имеют единый формат переменных: 

"name":{"type":"","source":...},

name - текстовое название переменной, по-который вы сможете обращаться к ней внутри html-шаблона;

type - тип переменной, определяет обработчик значения переменной;

source - настройка переменной/содержимое переменной (зависит от типа переменной)

 

Работа с переменными конфигурации

Основная задача переменных получение данных из запросов внутри html-шаблона. Для этого используется функция шаблонизатора output, работа которой зависит от типа переменной конфигурации.

 

Типы полей

В конфигурации могут использоваться три типа полей:

- текстовые (задают значения переменных внутри конфигурации)

- структура (позволяют задавать произвольные структуры данных конфигурации)

- элемент (позволяют принимать данные полученные из запроса данных и передавать их в html-шаблона блока)

 

Текстовые параметры (text) имеют следующий формат:

Например: 
"checkbox":{"type":"text","source":"Ехал Грека"}

В данном примере переменная checkbox будет содержать текстовое значение Ехал Грека.

 

Структурный параметр (structure) имеют следующий формат:

Например:
"fields":{"type":"structure","source":
[
 {"title":"Название ","field":"title","class":"editable"},
 {"title":"Путь ","field":"file","class":""},
 {"title":"Теги ","field":"tags","class":"editable"}
]}

В даннос примере переменная fields содержит произвольную структуру данных, а именно массив, где в качестве элементов хранятся структуры, содержащие поля title, field и class.

 

Параметр типа Элемент (element) имеет следующий формат:

Например:
"tags":{"type":"element","source":{"field":"tags","point":"value"}}

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

 

Структура данных запроса (dataset) имеет следующий формат:

Например:

"datasets":
 {"type":"dataset","source":[
{"name":"query1","uid":"2019-11-20T00-22-55Z-67ad2a"},
{"name":"query2","uid":"2019-12-02T08-56-16Z-99b07f"}
 ]
}
  • name - имя запроса, по которому будет осуществляться доступ к данным запроса. В данном примере в HTML-шаблоне данные полученные из нескольких запросов будут доступны по именам $.Data.query1.Data и $.Data.query2.Data.
  • uid - идентификаторы (UID) запросов, используемых в данном блоке.

 

 


Поля-семафоры

Пользовательский поля, объединяющие объекты разных шаблонов для запросов

Возникают случаи, когда нам необходимо выбрать объекты шаблонов, идентификаторы которых нам не известны заранее (могут быть импортированы или добавлены позже). В этих случаях можно создавать пользовательские поля-семафоры - это скрытые поля, которые имеют значение, по-которому мы будем осуществлять поиск.

Например, нам необходимо получить список всех приложений в текущем проекте, но поскольку приложения это объекты различных шаблонов, которые могут быть импортированы позже пользователем, мы в шаблоне создаем поле "_semafor_type" (название поля может быть любым, написание с _ сделано для удобства идентификации поля в дальнейшем) и указываем значение типа объектов как  "app".

В запросе мы будем искать объекты у которых поле "_semafor_type" равно значению "app", таким образом, без выбора непосредственного шаблона мы можем получить список всех объектов, объединенных общим свойством - они все являются объектами "Приложения".