Passa al contenuto principale

Export server

Build e deployment

Build

Per compilare l'export server puoi eseguire npm build (e, se necessario, npm install),
tuttavia la compilazione manuale dell'export server non è più necessaria, poiché una build
viene automaticamente distribuita e testata ad ogni commit sulla branch main. I file di output
verranno poi salvati qui

Deployment

Prima di tutto, assicurati di avere node installato nel sistema.
Qualsiasi versione recente di node andrà bene. L'unica versione "ufficialmente testata"
è la 22.14.0 LTS.

Successivamente, puoi scaricare una build dell'export server da qui,
installarla con script/installs.bat/sh e infine avviarla con scripts/start.bat/sh.

Problemi comuni e troubleshooting

  • Se stai facendo il deployment su Windows e stai cercando di installare l’exporter come servizio, potresti ricevere un errore se node è installato solo per l’utente (e non per il sistema).
    Per risolvere il problema, puoi eseguire il servizio come utente corrente (è facilmente fattibile usando nssm).

  • Nota che se chiudi un terminale con l'export server in esecuzione (senza prima premere ctrl+c), il server node potrebbe non chiudersi correttamente
    e potrebbe rimanere un processo node in background. In tal caso, puoi terminare il processo dal task manager e riavviare.

Spiegazione del codice

Questa è una breve spiegazione su come funziona l'export server, dato che il design interno è piuttosto controintuitivo...

Motivazione

Il problema principale alla base della complessità del codice è che l'export server di Highcharts non permette di passare codice JavaScript semplice come input, ma solo JSON semplice.
Questo è un problema poiché utilizziamo codice per il formatter dei numeri o per il formatter dei colori.

L'unico modo che l'export server offre per passare del codice è quello di inviare il codice JavaScript come stringa, che poi verrà parsato ed eseguito internamente.
Tuttavia, questo è un problema a sua volta, perché i nostri snippet di codice sono sparsi su più file, e trasporli tutti manualmente sarebbe complicato e difficile da mantenere.

Soluzione

La soluzione è la seguente:

  • Abbiamo racchiuso tutto il codice che analizza i dati grezzi e li inserisce nei formatter personalizzati di Highcharts in un’unica funzione, che si trova in get_generic_chart.js
  • Usiamo webpack per compilare tutto il codice contenuto in get_generic_chart.js in un unico file, chiamato get_generic_chart_compiled.js (che è ignorato da git)
  • All’inizio di exporter.js, importiamo l’intero contenuto di get_generic_chart_compiled come una singola stringa, che poi possiamo passare alla callback del codice di Highcharts