.. _widgetpedia/elements/datastore_elements/controllers: controllers =========== .. toctree:: :maxdepth: 1 :hidden: :titlesonly: dataController dataFormula dataRpc I controller sono elementi dinamici di business logic a eventi che si attivano e vengono eseguiti a fronte di: * alcuni cambiamenti sul *datastore* se hanno parametri contenenti un *triggering_path* ovvero un path prefissato da ``^`` * eventi propagati da una *publish* (``genro.publish()``) se il controller ha il corrispondente parametro ``subscribe_`` Vediamo prima un esempio con: .. raw:: html
triggering path
Vediamo adesso la stessa cosa con: .. raw:: html
publish e subscribe
.. hint:: Da una recente *release* di luglio 2021 è diventato possibile collegare direttamente qualsiasi controller 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_``. .. raw:: html
**Parametri:** +------------------------+------+--------------------------------------------------+ | Nome parametro | Tipo | Descrizione | +========================+======+==================================================+ |_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 | +------------------------+------+--------------------------------------------------+