Интеграция
Два способа установки: одна страница без сервера или встраивание в ваше приложение (плюс необязательное построение на сервере).
1. Одна страница — движок и «сервер» в браузере
Ничего не нужно поднимать: шаблон исполняется движком прямо на странице, просмотрщик показывает, экспорт и печать — тоже в браузере. Нужна только статическая раздача (ESM не работает с file://).
cd distro
python3 -m http.server 8000
# → http://localhost:8000/standalone/
2. Встраивание в приложение (клиентская сборка)
Один ESM-модуль без зависимостей — просмотрщик + движок. Работает в Vue, React, vanilla. Построение полностью в браузере — без отдельного серверного viewer-компонента.
import { AuViewer, renderTemplate, loadExecutionData } from './aurum-report.js'
const template = await (await fetch('/templates/protocol.json')).json()
const data = await (await fetch('/api/competition/data')).json()
const model = renderTemplate(template, loadExecutionData(data))
const viewer = new AuViewer()
viewer.setModel(model)
document.getElementById('viewer').append(viewer.html)
3. Построение на сервере (необязательно)
Тот же движок, но на сервере: POST /render — шаблон и данные → модель/выгрузка. Для тяжёлых отчётов и серверного PDF.
cd server
PORT=3100 bun run src/server.ts
curl http://localhost:3100/health
# → { "ok": true, "engine": "AuReport JS" }
# POST /render?format=model — body { template, data }
Переход на AurumReport
Интеграция через обычный ESM-import: без глобальных функций и ручного управления загрузкой скриптов.
// Typical integration via a global function:
const showReport = (window as any).showReport
showReport('viewerContent', template, data, isSuperAdmin)
// AurumReport:
const model = renderTemplate(template, loadExecutionData(data))
viewer.setModel(model)
host.innerHTML = viewer.html