Blog

Come usare i semafori con i valori booleani

Come usare i semafori con i booleani

Supponiamo di dover visualizzare in una Form un valore booleano che può assumere tre stati: Vero, Falso e nullo. Può essere per esempio il caso di un campo “Iscritto alla newsletter”, dove se presente una data di iscrizione viene restituito Vero, se presente una data di disiscrizione viene restituito Falso, o se non presente nessuna data viene restituito null. Si noti quindi che il campo in sé non prevede la possibilità di inserire alcun valore direttamente, ma dipende da altri campi, la data di iscrizione e la data di disiscrizione, che vengono peraltro compilati su una pagina esterna alla Form, e il nostro obiettivo è di mostrare nella Form questo valore di sola lettura in modo chiaro e rapido per l’utilizzatore finale.

Visualizzando il campo come div o come checkbox avremmo delle rappresentazioni funzionanti ma poco esaustive (o graficamente accattivanti): il div mostrerebbe solo una stringa testuale “true” o “false”, mentre la checkbox, seppur corretta da un punto di vista formale, non permetterebbe di distinguere il caso Falso dal nullo, e soprattutto potrebbe indurre l’utilizzatore a cliccarci sopra (la checkbox, infatti, è tipicamente un campo di inserimento attivo).

Ecco che possono venirci in soccorso i semafori, rappresentazioni grafiche che permettono di distinguere perfettamente un caso Vero (semaforo verde), un caso Falso (semaforo rosso) e un caso nullo (semaforo grigio). Per utilizzare in una Form i semafori è sufficiente utilizzare il parametro format=’semaphore’ all’interno di un div:

fb2.div('^.iscritto_newsletter', lbl='Iscritto alla newsletter', format='semaphore', dtype='B')

Si noti che è necessario specificare anche il dtype=’B’ del campo. In alternativa è possibile utilizzare anche la versione compatta:

fb2.semaphore('^.iscritto_newsletter', lbl='Iscritto alla newsletter') 

che porterà allo stesso identico risultato.

Nella View, invece, è possibile visualizzare la colonna con i semafori a due stati (verde, per il True, e rosso, per Falso e null) aggiungendo alla struct quanto segue:

r.fieldcell('iscritto_newsletter', semaphore=True)

Il semaforo può anche prevedere tre stati al posto di due (verde, rosso e giallo, quest’ultimo per i valori null), semplicemente aggiungendo il parametro three_state=True

Le applicazioni dei semafori possono essere molteplici, e ben si adatta a rappresentare la presenza o meno di dati forniti esternamente al sistema. Si pensi per esempio alla presenza di un campo IBAN obbligatorio per effettuare un bonifico: un semaforo potrebbe rappresentare in modo molto chiaro se è possibile procedere o meno al pagamento. O ancora, il consenso al trattamento dei dati in una tabella di anagrafica, la presenza o meno di fatture, l’incasso o meno di un pagamento.


Vuoi vedere i semafori all’opera? Aggiorna Genropy e provalo su Sandbox:


Ti stai avvicinando al mondo Genropy e desideri saperne di più? Seguici sui social per tenerti in contatto con le ultime novità che Genropy ha da offrire:

Genropy Seguici su Facebook
Pagina Facebook

 

Genropy Seguici Gruppo Facebook
Gruppo Facebook

 

Genropy Gruppo Telegram
Gruppo Telegram