Migliorate la vostra interfaccia desktop con i widget Web utilizzando 4D Qodly Pro

Tradotto automaticamente da Deepl

Avete mai desiderato arricchire la vostra interfaccia utente con widget conosciuti dai siti web, come ad esempio una mappa di navigazione? Non dovendo imparare JavaScript, gestire CSS e HTML e lottare per passare i dati tra questi due mondi?

Una nuova integrazione tra Web Areas e 4D Qodly Pro vi permette di offrire interfacce ricche e dinamiche all’interno dei vostri moduli 4D, mantenendo tutta la logica aziendale all’interno di 4D Server.

HDI_SESSION_SHARING

Un esempio reale: Dettagli di magazzino in un’interfaccia fluida

Gli utenti vogliono applicazioni desktop che sembrino native ma che si evolvano con la stessa rapidità del web. Con 4D 21, questo non è più un compromesso. Una nuova integrazione tra Web Areas e 4D Qodly Pro consente di offrire interfacce ricche e dinamiche all’interno dei moduli 4D, mantenendo tutta la logica aziendale all’interno del server 4D.

Il risultato è un’esperienza ibrida unificata in cui i dati fluiscono istantaneamente, gli aggiornamenti dell’interfaccia utente sono naturali e il flusso di lavoro di sviluppo rimane semplice. Questo è un ibrido fatto bene.

Configurazione dell’area Web per un’esperienza connessa

Immaginate una casella di riepilogo 4D sulla parte sinistra dello schermo, mentre sulla destra vengono visualizzati in un’area Web i dettagli dell’articolo selezionato, compresi la posizione sulla mappa e i controlli di valutazione.

Selezionate un altro magazzino e i dettagli si aggiorneranno istantaneamente senza ricaricare la pagina. Gli utenti hanno la sensazione di navigare in un pannello nativo, non in una visualizzazione web. Questa è la flessibilità di 4D Qodly Pro unita all’affidabilità di 4D.

CONFIGURAZIONE FACILE

Per consentire questa interazione senza soluzione di continuità, l’Area Web viene configurata con due semplici proprietà: Usa motore di rendering web incorporato e Accedi ai metodi 4D. Queste impostazioni danno alla pagina Qodly incorporata pieno accesso ai dati e alla logica del server.

blank

Da qui, l’evento “On Load” dell’area Web inizializza la pagina, attribuisce la sessione corretta e passa un contesto che espone i metodi della classe di dati.

Aspettate, quale sessione e perché ho bisogno di un contesto?

Sebbene in questo caso la pagina di 4D Qodly venga caricata all’interno di un’area web dell’applicazione 4D, può anche essere eseguita direttamente da un browser. Pertanto, dobbiamo dare priorità alla sicurezza. Inoltre, parla direttamente con il server 4D, quindi il server deve sapere a quale sessione client appartiene. Infine, possiamo condividere un contesto tra il desktop 4D e la pagina Qodly, consentendoci di condividere i dati. Analogamente a come si usa un contesto per condividere i dati tra 4D e 4D Write Pro.

Sia che l’applicazione venga eseguita localmente o in modalità client-server, la pagina Qodly deve operare all’interno della sessione 4D corretta. In questo modo le chiamate ai metodi sono sicure e i dati rimangono coerenti.

Ecco l’esatta configurazione utilizzata nella demo:

var $otp : Text
var $url : Text
var $context : Variant

Case of 
	: (Form event code=On Load)	
                authentify("viewDetails")
		$otp := getOtp
		$url := "http://localhost/$lib/renderer/?w=warehouses&$4DSID="+ $otp
		WA OPEN URL(warehouseDetails; $url)
		$context:=ds.WareHouse
		WA SET CONTEXT(warehouseDetails; $context)
End case 

authentify è un metodo di progetto che deve avere la proprietà “execute on server” spuntata per avere accesso all’oggetto sessione

blank

#DECLARE($privilege : Text)
Session.clearPrivileges()
Session.setPrivileges($privilege)

e lo stesso vale per getOTP

#DECLARE() : Text
return Session.createOTP(60)

viewDetails è un permesso configurato in Qodly Studio in questo modo:

blank

dove possiamo leggere l’entità Warehouse ed eseguire Warehouse.getWarehouseById per ottenere l’entità corrispondente quando l’ID cambia, per recuperare La logica è semplice. Session.setPrivileges assicura che l’utente abbia i diritti necessari.
getOTP() rilascia un token una tantum che lega l’area Web alla sessione 4D corrente.
L’URL include il token $4DSID, in modo che la pagina Qodly venga eseguita all’interno della sessione.
Infine, WA SET CONTEXT dà alla pagina l’accesso alla classe di dati Warehouse, compresi i metodi GetWarehouseById e Rate.

Questo crea una connessione pulita e sicura tra Qodly e il vostro livello di dati.

Aggiornamenti istantanei dell’interfaccia utente dalla casella di riepilogo 4D

sul metodo oggetto della Listbox:

var $result : Variant
Case of 
	: (Form event code=On Load)
		LISTBOX SELECT ROW(*; "warehouseList"; 1)	
	: (Form event code=On Clicked)
	: (Form event code=On Selection Change)
		WA EXECUTE JAVASCRIPT FUNCTION(*; "warehouseDetails"; "Qodly.setSource"; $result; "warehouseId"; Form.WareHouse.ID)	
End case 

La listbox completa il flusso di lavoro. Quando l’utente seleziona un magazzino, 4D chiama WA EXECUTE JAVASCRIPT FUNCTION per attivare Qodly.setSource nell’area Web. Il nuovo ID del magazzino viene trasmesso e la pagina Qodly si aggiorna immediatamente.

L’utente non vede un ricaricamento del web. Vede solo i nuovi dati apparire nel pannello dei dettagli.

Una pagina Qodly moderna che dà vita ai dati

All’interno di Qodly Studio, la pagina dei dettagli utilizza due componenti personalizzati. Un componente Mappa che mostra l’esatta posizione del magazzino e un componente Valutazione che consente agli utenti di aggiornare la valutazione. Entrambi i componenti sono legati all’origine dell’entità magazzino.

La pagina ascolta i cambiamenti nella sorgente warehouseId. Quando questa fonte cambia, chiama getWarehouseById per caricare l’entità corretta e la visualizza immediatamente.

blank

Se l’utente modifica la valutazione, il componente Rating attiva il metodo Rate nel contesto 4D. Gli aggiornamenti vengono salvati istantaneamente.

blank

Questo è il tipo di reattività che gli utenti si aspettano dagli strumenti moderni.

Perché i team amano questo approccio ibrido

Si mantengono la potenza, la sicurezza e la struttura di 4D sul backend. La flessibilità di progettazione e la ricchezza di componenti di 4D Qodly Pro sul front-end. E gli utenti ottengono un’applicazione fluida e moderna che risponde istantaneamente alle loro azioni.

Mourad Aouinat
Mourad Aouinat si è unito a 4D come sviluppatore full stack nel giugno 2020. È responsabile della creazione di layout di applicazioni web/interfacce utente e della raccolta e del perfezionamento di specifiche e requisiti in base alle esigenze tecniche. Mourad è uno sviluppatore autodidatta con un background in economia e finanza, appassionato di software open-source e di esperienza utente.