ARPA-SIMC / meteotiles

Visualizzatore web di prodotti meteorologici georeferenziati
0 stars 0 forks source link

Configurazione interfaccia e riuso #64

Open edigiacomo opened 1 year ago

edigiacomo commented 1 year ago

Al momento, la configurazione globale per tutte le interfacce è definita in https://github.com/ARPA-SIMC/meteotiles/blob/ef204399507dbf50acb8da5ffb4aaaa2bbe97f40/src/settings.js e in parte nello script principale di ogni applicazione.

Quando si vuole testare l'applicazione, può essere necessario modificare il file settings.js. Stessa cosa può essere necessaria se, ad esempio, si vuole modificare l'URL del tile server (TILE_SERVER_URL).

Per migliorare il deploy e il riuso, si potrebbe pensare ad un sistema di sovrascrittura dei parametri di configurazione (e lasciare in settings.js i default) e/o passare i parametri all'interfaccia.

Il passaggio dei parametri può essere fatto

  1. Da parametro GET (come fatto per i parametri reftime, configURL e configString dell'interfaccia "fixed")
  2. All'interno del tag <script> (come parametri di una funzione/costruttore)
  3. Usando un attributo data-* in un tag predefinito.
  4. Provando a fare il fetch di un file JSON dal nome predefinito (e.g. conf.json) che, se presente, sovrascrive i default.

La soluzione (1) delega al client la definizione dei parametri (con tutti i pro e contro) ma si può anche fissare nel backend e.g. attraverso mod_rewrite.

Le soluzioni (2) e (3) prevedono comunque la modifica dell'HTML - oppure si deve esternalizzare l'HTML da meteotiles e rendere quest'ultimo una libreria: l'utente crea il suo file HTML e importa la libreria.

La soluzione (4) sarebbe quella meno onerosa ma è la meno flessibile.

Tutte le soluzioni sono compatibili con una gestione lato backend della configurazione: il caso (1) è già stato descritto, nel caso (2) e (3) l'HTML può essere generato server side a partire dalla configurazione della propria applicazione e nel caso (4) il file di configurazione può essere generato a runtime.

edigiacomo commented 1 year ago

@brancomat ti ho messo tra gli assignees perché questo potrebbe essere visto alla luce di una questione più ampia, come l'uso di una applicazione di backend che permetta la configurazione e autenticazione/autorizzazione, che può avere funzionalità più o meno complesse. Al momento, rimarrei nel campo dello statico (o quantomeno della configurazione a tempo di deploy) ma tenendo in mente eventuali sviluppi futuri.