Contents
Компонент для загрузки файлов. Позволяет загружать файлы в контент нод. Для дочерних ассоциаций поддерживается задание type/kind
.
При добавлении нового компонента Файл на форме достаточно указать правильный Имя свойства/Property Name (или оставить по умолчанию _content
, если подразумевается редактирование основного контента у документа). Все остальные настройки работают “из коробки”.
Выбор способа загрузки файлов осуществляется во вкладке :guilabel:`Файл` - поле Хранилище/Storage с значениями URL или Base64.
Для настройки компонента необходимо перейти во вкладку :guilabel:`Файл`, в поле Хранилище выбрать Url, в поле url прописать endpoint для загрузки файлов - /share/proxy/alfresco/eform/file
.
Привязка компонента к конкретному атрибуту выполняется стандартно, аналогично другим компонентам.
Для привязки type/kind
необходимо перейти на вкладку :guilabel:`Файл`, и заполнить Типы файлов. Название поля - заголовок для отображения, Значение - ключ type/kind
, который должен быть сформирован по следующему паттерну - node-uuid_type/node-uuid_kind
, при этом, возможно указание только type
- node-uuid_type
. Обратите внимание, что нужно использовать именно node_uuid, а не nodeRef полностью. Например - category-document-type/kind-d-scan-documents
.
На вкладке :guilabel:`Файл` добавлена возможность настраивать отображение названий файлов в списке - настройка Отображаемое имя значения. Поле принимает javascript-выражение, в котором необходимо присвоить переменной disp
строку, либо Promise.
Помимо стандартных переменных formio, доступных при написании javascript-выражений (data, instance, _ и т.д.) добавлены дополнительные:
- originalFileName - содержит название файла по-умолчанию
- file - объект, содержащий различную информацию о файле
- record - Promise, полученный путём вызова
Records.get(file.data.recordRef)
. Если файл не связан ни с каким recordRef, значение record будет равно null.
Примеры использования настройки Value display name:
// Пример 1. Статическое название disp = 'staticName.txt';
// Пример 2. Название, вычисленное асинхронно disp = new Promise(resolve => { // какие-то асинхронные действия // ... resolve('Асинхронное название файла') });
// Пример 3. Использование record disp = record ? record.load('.disp').then(result => `${result}.pdf`) : originalFileName;
На вкладку :guilabel:`Отображение` добавлена дополнительная настройка Элементы отображения, которая позволяет задавать условия отображения отдельных элементов (например, кнопка удаления файла, upload-зона с кнопкой для добавления нового файла).
Поле принимает javascript-выражение, в котором необходимо присвоить переменной value объект с необязательными свойствами upload, delete. Если какое-то из свойств не указано, то компонент сам будет решать, отображать элемент или скрывать, в зависимости от ситуации.
value = { upload: false, delete: false }
Для корректной работы контрола в режиме редактирования у значения “контент” должен быть реализован метод getAs
с аргументом “content-data”, который вернет структуру следующего содержания:
[ { “url“: “ссылка_которая откроется при клике на файл.“ “name“: “Имя файла“ “size“: размер_файла_в_байтах } ]
Для синхронизации с виджетом документов на форму нужно добавить поле docs:documents
с контролом file
:
На вкладке Файл указать тип(ы), с которыми следует загружать новые файлы (если файл загрузить без типа, то в виджете он не появится):