Работа со строкой данных элемента управления "Список файлов" (fileList)
Пример взаимодействия со строками элемента управления "Список файлов" (fileList). Расширение добавляет к строке элемента управления красную обводку при скачивании файла.
Описание файлов проекта
-
copy-path.js— содержит константы с названием расширения и параметрами сборки; в данном файле указывается каталог, в который выгружаются файлы при сборке. -
gulpfile.js— файл конфигурации Gulp (используется для сборки стилей); -
package.json— файл конфигурации NPM с командами сборки и списком зависимостей. -
package-lock.json— служебный файл NPM. -
rollup.config.js— файл конфигурации Rollup. Используется для сборки скриптов в один файл — "бандл". -
tsconfig.json— файл конфигурации TypeScript. -
node_modules— служебная папка NPM, в которую при выполнении команды npminstallзагружаются npm-зависимости. -
src— папка для размещения исходных файлы расширения.
-
EventHandlers.tsx— пример файла с обработчиком события. -
Index.ts-- файл с обязательной функцией регистрации клиентского расширения. -
Template.scss— пример файла стилей.
Сборка и установка
-
Откройте консоль в папке
FileListHighlightRowи выполните последовательно команды:$ npm install $ npm update $ npm run build:prod
-
Скопируйте каталог
SamplesOutput\Site\Content\Modules\FileListHighlightRowв каталогПуть-к-установленному-Web-клиенту\Site\Content\Modules. -
Перезапустите IIS.
-
Добавьте скрипт
fileListHighlightRowв качестве обработчика события.On file version downloadedэлемента управленияfileListв конструкторе разметок.
Начальный код расширения должен импортировать прямо или косвенно все остальные строки, чтобы затем объединить код в один пакет.
import { extensionManager } from "@docsvision/webclient/System/ExtensionManager";
import * as EventHandler from "./EventHandlers/EventHandler";
extensionManager.registerExtension({ (1)
name: "FileListHighlightRow",
version: "1.0",
globalEventHandlers: [ EventHandler ]
})
| 1 | Регистрация расширения позволяет корректно установить все обработчики событий, сервисы и прочие сущности web-приложения. |
import { FileListControl } from "@docsvision/webclient/BackOffice/FileListControl";
import { IRowClickArgs } from "@docsvision/webclient/BackOffice/IRowClickArgs";
export async function fileListHighlightRow(sender: FileListControl, event) {
const fileItem = event.fileItem;
const customClass = "file-list-row_red-border";
if (!event.fileItem?.cssClasses?.includes(customClass)) {
sender.toggleRowClass(fileItem, customClass);
}
}