Интеграция

Два способа установки: одна страница без сервера или встраивание в ваше приложение (плюс необязательное построение на сервере).

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