.. _widgetpedia/elements/datastore_elements/controllers/dataRpc: dataRpc ======= dataRpc è una chiamata ad un metodo server innescata da un evento sulla pagina, lato client. Oltre al ``path`` dove salvare il risultato della chiamata e al *callable* **method** da chiamare, la *dataRpc* riceve una serie di *kwargs*, considerati tutti parametri inviati alla rpc a meno che non siano preceduti da un *underscore*. Il metodo rpc **deve essere un callable python** definito come metodo server, preceduto per motivi di sicurezza dal decoratore ``@public_method``. La somma di due numeri attivata dai suoi: .. raw:: html
args
Vediamo un altro esempio, analogo al precedente ma con: .. raw:: html
publish e subscribe
.. hint:: Da una recente *release* di luglio 2021 il primo parametro (*path*) è diventato facoltativo, ed è quindi possibile ometterlo passando direttamente come primo parametro il ``method``. È inoltre possibile collegare direttamente la *dataRpc* a un :ref:`button` o *menuline*. L'innesco avverrà automaticamente al clic sul bottone o linea di menu, senza quindi la necessità di utilizzare il meccanismo *publish/subscribe* o l'attributo ``fired_``. Per un dettaglio sulle modalità applicative e sul funzionamento del dataRpc si rimanda alla sezione dedicata nel `Corso Genropy Base `_ .. raw:: html
**Parametri:** +------------------------+------+--------------------------------------------------+ | Nome parametro | Tipo | Descrizione | +========================+======+==================================================+ |path |T |Il path in cui verrà salvato il risultato della | | | |rpc (es: '.result'). | +------------------------+------+--------------------------------------------------+ |method |T |Il metodo python "callable" chiamato dalla rpc. | | | |Per motivi di sicurezza deve essere utilizzato il | | | |decoratore @public_method | +------------------------+------+--------------------------------------------------+ |_onResult |T |Javascript callback eseguita una volta ottenuto un| | | |risultato dall'rpc | +------------------------+------+--------------------------------------------------+ |_onCalling |T |Javascript callback eseguita prima di ottenere il | | | |risultato dall'rpc | +------------------------+------+--------------------------------------------------+ |_lockScreen |B |Se impostato a True la schermata si blocca durante| | | |l'esecuzione dell'rpc, rendendo impossibile | | | |modificare gli altri elementi | +------------------------+------+--------------------------------------------------+ |_fired |T |Parametro fittizio, popolato se l'rpc viene | | | |eseguita (es. _fired='^.result') | +------------------------+------+--------------------------------------------------+ |_timing |L |Tempo in secondi tra un'esecuzione e la successiva| | | |(es: _timing=5) | +------------------------+------+--------------------------------------------------+ | *Html Parametri* | +------------------------+------+--------------------------------------------------+ |_class |T |Permette di assegnare una specifica classe CSS al | | | |widget | +------------------------+------+--------------------------------------------------+ |height |T |Permette di assegnare un'altezza al widget | +------------------------+------+--------------------------------------------------+ |width |T |Permette di assegnare una larghezza al widget | +------------------------+------+--------------------------------------------------+ |border |T |Permette di assegnare un bordo al widget | +------------------------+------+--------------------------------------------------+ |rounded |L |Permette di assegnare un arrotondamento al widget | +------------------------+------+--------------------------------------------------+ |style |T |Permette di assegnare uno stile (da esprimersi | | | |come serie di attributi CSS) al widget | +------------------------+------+--------------------------------------------------+ |background |T |Permette di assegnare uno sfondo al widget | +------------------------+------+--------------------------------------------------+ | *Controllers Parametri* | +------------------------+------+--------------------------------------------------+ |_delay |T |Il ritardo (in ms) tra l'evento trigger e | | | |l'esecuzione del controller | +------------------------+------+--------------------------------------------------+ |_onStart |B |Se impostato a True, il controller verrà lanciato | | | |al caricamento della pagina. Può anche contenere | | | |un valore numerico (es: _onStart=500), in quel | | | |caso verrà impostato un ritardo (in ms) prima di | | | |avviare la chiamata. | +------------------------+------+--------------------------------------------------+ |subscribe\_ |T | | +------------------------+------+--------------------------------------------------+ |_ask |T |Permette di identificare in un dizionario i | | | |parametri da richiedere all'utente alla pressione | | | |del bottone, che verranno poi utilizzati | | | |nell'azione (es. _ask=dict(title='Test',fields=[di| | | |ct(name='msg',lbl='Message')])) | +------------------------+------+--------------------------------------------------+ |_if |T |Espressione javascript che permette di | | | |condizionare l'avvio del controller alla presenza | | | |di un valore (es: _if='value') | +------------------------+------+--------------------------------------------------+ |_else |T |Frammento di codice javascript che completa _if, | | | |indicando un altro comportamento da seguire | | | |qualora _if fosse falsa | +------------------------+------+--------------------------------------------------+ |_userChanges |T |Se impostato a "True" fa scattare il controller | | | |solo in caso di modifiche al record | +------------------------+------+--------------------------------------------------+