- Главная [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
- Начало работы
- Работа с типами
- Глобальный контекст и изоляция
- Работа с приложениями
- Работа с внешними сервисами
- Скрипты в виджетах
- Веб компоненты
- Права доступа
- Начало работы с процессами
- Начало работы с подписями
- Начало работы с предпросмотром файлов
- Начало работы с организационной структурой
- Начало работы с пользователями и группами
- Начало работы с типом данных Таблица
- Как решить вашу задачу
- Как сделать пользовательское отображение элементов приложений
- Как сделать динамическое отображение полей/виджетов со сложным условием
- Как регистрировать документ
- Как рассчитывать интервал между датами
- Как создать замещение пользователя
- Как использовать пагинацию и сортировку при поиске элементов приложения
- API
- Типы объектов
- Типы данных
- Глобальные константы
- Работа с приложениями
- Веб-запросы
- Права доступа
- Документооборот
- Линии
- Виджет «Код»
- Подписи
- Интеграция с IP-телефонией
- Интеграция с сервисами рассылок
В этой статье
Начало работы с предпросмотром файлов
Для расширения возможностей, которые предоставляет пользователям Low-code, в системе существуют специальные расширения. Расширения позволяют интегрировать необходимый пользователю функционал в специальные точки, подготовленные для работы с пользовательскими виджетами.
Создание виджета
Работа с расширениями возможна из пользовательского модуля. Модуль возможно создать на странице администрирования. В созданном модуле необходимо создать виджет. Для предпросмотра файлов используется расширение Предпросмотр файлов — Страница предпросмотра. Пользовательский виджет, интегрированный в расширение, может принимать определенные точкой расширения данные в контекст для получения исходных данных. В созданном виджете можно использовать исходные данные в следующих форматах:
Представленные данные передаются в пользовательский виджет для предпросмотра файлов из системы в качестве входных параметров.
Сценарий работы
В пользовательском интерфейсе в модуле предпросмотра создается виджет, настроенный для отображения в данной точке расширения. На шаге инициализации выполняется специальная функция, определяющая, должен ли виджет отображаться в данных условиях. Далее выполняется отображение шаблона виджета и выполнение его сценариев. Во время отображения можно пользоваться виджетами, функциями шаблонизации и выполнения сценариев. За само отображение файла отвечает виджет.
Инициализация
При начале работы точки расширения у модуля вызывается функция проверки условий для отображения виджета, возвращающая в ответе результат, который позволяет определить необходимость отображения содержимого модуля в данной точке расширения. При рендере виджета предпросмотра можно проверить условия, требуемые бизнес-сущностями, и далее принять решение о необходимости отображения файла. Для примера мы можем отображать наш виджет только для пользователей, указавших номер телефона в настройках профиля:
async function onInit() { // Получение текущего пользователя const user = await System.users.getCurrentUser(); const userData = await user.fetch(); return userData.data.mobilePhone !== undefined; }
Шаблон в виджете
Рассмотрим, как вывести на форме предпросмотра ссылку на скачивание файла вместо превью. Для этого необходимо будет обратиться к полю контекста
file
. Ссылку на загрузку файла можно получить с помощью метода FileItem.getDownloadUrl. Для передачи самой ссылки в шаблон добавим полеlink
в контекст:При помощи данного поля, используя виджет Код, можно вывести ссылку, по которой пользователь сможет скачать файл:
<a href="<%= Context.data.link %>" id="link">Ссылка на загрузку</a>
При отображении шаблона можно использовать параметры контекста и сценариев, генерируемых шаблонизатором. В шаблоне к переменной
link
выполняется обращение через данные контекстаContext.data
. Остается только модифицировать пользовательский сценарий для получения ссылки на файл:async function onInit() { // Получение ссылки на текущего пользователя const user = await System.users.getCurrentUser(); // Получение данных пользователя const userData = await user.fetch(); if(userData.data.mobilePhone === undefined) { // Если телефон не задан, виджет не отображается return false; } // Получение ссылки await renderLink(); return true; } async function renderLink(): Promise<void> { if(!Context.data.file) { // Если файла нет, выводится ошибка throw new Error('no file'); } // Получение ссылки для загрузки файла Context.data.link = await Context.data.file.getDownloadUrl(); }
В данном сценарии выполняется работа в рамках функции инициализации, т. к. в нашем случае она позволяет подготовить данные для отображения виджета при инициализации расширения.