-
Notifications
You must be signed in to change notification settings - Fork 0
Konfigurace
Klient používá injection token METACHECK_API_BASE_URL. Hodnota se skládá při startu aplikace z globální konfigurace v prohlížeči:
var METACHECK_GLOBAL = {
apiUrl: '/api',
};Soubor je načítaný z:
assets/shared/globals.js
Klient z hodnoty apiUrl odstraní případné koncové lomítko a automaticky přidá /rest/v1. Výchozí hodnota je tedy:
/api/rest/v1
Pokud window.METACHECK_GLOBAL.apiUrl není nastavené, použije se výchozí hodnota /api.
Příklady:
apiUrl v globals.js
|
Výsledná base URL klienta |
|---|---|
/api |
/api/rest/v1 |
https://metacheck.example.org/api |
https://metacheck.example.org/api/rest/v1 |
https://metacheck.example.org/metacheck |
https://metacheck.example.org/metacheck/rest/v1 |
Lokální vývojový server se spouští příkazem:
npm run startSkript používá Angular proxy konfiguraci:
{
"/api": {
"target": "https://metacheck.inovatika.dev",
"secure": false,
"logLevel": "debug",
"changeOrigin": true
}
}Lokální volání klienta na /api/rest/v1/... se tedy při vývoji přepošlou na:
https://metacheck.inovatika.dev/api/rest/v1/...
Pokud má vývoj používat jiný backend, upravuje se target v proxy.conf.json. globals.js může zůstat s hodnotou /api.
Doporučené produkční nasazení je vystavit klienta i API pod stejnou doménou a API schovat za reverse proxy. Klient potom zůstává nakonfigurovaný na relativní hodnotu:
var METACHECK_GLOBAL = {
apiUrl: '/api',
};Web server musí přeposílat /api/ na backend MetacheckAPI tak, aby výsledná cesta na backendu odpovídala /api/rest/v1/... nebo byla podle potřeby přemapovaná na kontext backendové aplikace.
Příklad pro Nginx:
server {
listen 80;
server_name metacheck.example.org;
root /var/www/metacheck-client;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://127.0.0.1:8080/api/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}Pokud backend běží pod jiným kontextem, nastaví se proxy_pass podle skutečného nasazení, například:
location /api/ {
proxy_pass http://127.0.0.1:8080/metacheck/api/;
}Příklad pro Apache:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+)$ - [S=1]
RewriteRule ^(.+)$ /index.html
ProxyPass /api/ http://127.0.0.1:8080/api/
ProxyPassReverse /api/ http://127.0.0.1:8080/api/Klient při startu volá:
GET /application/clientConfig
Vzhledem k base URL jde při výchozí konfiguraci o:
GET /api/rest/v1/application/clientConfig
MetacheckAPI může klientskou konfiguraci načítat ze souboru nastaveného v metacheck.cfg:
metacheck.client.configPath=./metacheckClient.jsonRelativní cesta se vyhodnocuje vůči METACHECK_HOME.
Aktuálně klient používá z odpovědi hlavně přepínač standaloneApp:
{
"standaloneApp": true
}standaloneApp řídí, zda klient běží jako samostatná aplikace pro zakládání dávek, nebo jako klient napojený na externí systém ProArc.
| Hodnota | Záložka Import | Sloupec ProArc ID |
|---|---|---|
true |
zobrazí se | skryje se |
false |
skryje se | zobrazí se |
Výchozí stav v klientovi je:
{
"standaloneApp": true
}Pokud endpoint /application/clientConfig není dostupný nebo vrátí chybu, klient zůstane ve výchozím standalone režimu. To znamená, že záložka Import bude viditelná a sloupec ProArc ID bude skrytý.
Pro nasazení, kde dávky vznikají v ProArcu a uživatel nemá v klientovi zakládat importy, nastavte:
{
"standaloneApp": false
}Tím se v horní navigaci skryje záložka Import a v přehledu dávek se zobrazí sloupec ProArc ID (proarcBatchId).
Klient používá @ngx-translate/core.
Překlady jsou uložené v:
src/assets/i18n/cs.json
src/assets/i18n/en.json
Výchozí a fallback jazyk je čeština:
fallbackLang: 'cs'
lang: 'cs'Soubory lokalizace jsou součástí buildu a nasazují se pod:
assets/i18n/
Klient pracuje se stavy:
EMPTY
PLANNED
GENERATING
GENERATED
EDITING
EDITED
STOPPED
FAILED
Detail dávky lze otevřít pouze pro editovatelné stavy:
GENERATED
EDITING
EDITED
Pro ostatní stavy klient zobrazí uživatelskou hlášku a detail neotevře.
Klient nezná přímo cesty k obrazům ani ALTO souborům. Vše získává přes MetacheckAPI:
GET /object/image
GET /object/alto
Přípony a fyzické umístění souborů proto zůstávají v konfiguraci backendu:
file.imageExtension=.full.jpg
file.previewExtension=.preview.jpg
file.thumbnailExtension=.thumb.jpg
file.altoExtension=.xml
file.ocrExtension=.txtProtože jde o single page aplikaci, web server musí přesměrovat neexistující routy na index.html.
Typické routy klienta:
/
/batches
/batches/{batchId}
/import
Bez rewrite pravidla přestane fungovat přímé otevření detailu dávky nebo refresh prohlížeče na vnořené route.
Pokud klient a MetacheckAPI běží na rozdílných doménách, musí backend povolit CORS pro doménu klienta. Jednodušší provozní varianta je nasadit klienta i API pod stejnou doménu a API schovat za reverse proxy.