Se nella app hai bisogno di svolgere calcoli basati sui valori dei Campi delle Entità, puoi farlo con le Viste. Distinguiamo due casi diversi:
| Esigenza | Esempio | |
| A | Calcolare un valore da attribuire ad una Entità, partendo da valori contenuti nel Campi dell'Entità (o nei Campi di Entità in relazione con l'Entità) e mostrarlo nella Vista a fianco dell'Entità | Calcolare il prezzo di una cassetta di frutta venduta a peso, moltiplicando il prezzo al kg del tipo di frutta per il peso della cassetta. |
| B | Calcolare un valore partendo dall'insieme dei valori di un Campo delle Entità elencate nella Vista e mostrarlo in fondo alla Vista | Calcolare la media dei prezzi degli oggetti elencati |
A. Campi calcolati in base ad altri Campi
La prima esigenza sopra indicata può essere risolta installando ed attivando il modulo aggiuntivo "Views Simple Math Field" che aggiunge alle Viste il Campo Simple Math Field - Globale - Views field that performs simple math expressions. Nella configurazione di questo Campo è possibile scrivere una formula che calcola un valore sulla base del valore degli altri Campi presenti nella Vista. Nella formula si possono inserire operatori matematici, logici e di confronto ed altre operazioni complesse.
Riprendendo l'esempio sopra citato, data l'Entità "Cassetta" con un Campo "Peso", che contiene il peso in kg della cassetta ed un Campo "Tipo di Frutta", che punta ad una Entità di tipo "Frutta" che ha un Campo "Prezzo al kg", se si elencano nella Vista i Campi "Peso" e "(Tipo d Frutta) Prezzo al kg", possiamo aggiungere un Campo di tipo Simple Math in cui scrivere la formula Peso * Prezzo_al_kg e che quindi restituisce il Prezzo della cassetta.
Come esempio didattico, aggiungiamo alla Vista "Miei Prestiti conclusi" della app di esempio un Campo che indichi la durata in giorni di ogni Prestito effettuato, calcolato come differenza tra la data di consegna dell'Attrezzo al Richiedente e la data di restituzione dell'Attrezzo al Proprietario. Con l'occasione, vediamo anche un metodo per calcolare la differenza in giorni tra due date:
| aggiungi alla Vista "Miei Prestiti conclusi" il Campo "Consegna" in un formato utile al calcolo | nella sezione Campi della Vista esiste già un Campo "Consegna", mostrato all'Utente nel formato leggibile "giorno mese anno". Questo formato però non è adatto per calcolare la differenza tra date. Aggiungi quindi nella sezione Campi una seconda copia del Campo "Consegna", come Formattatore seleziona Personalizzato e come Formato data/ora digita "U": questo formato rappresenta la data come numero di secondi passati da una data fissa (1 gennaio 1970; per una spiegazione di questo riferimento temporale vedi Tempo (Unix) su Wikipedia). L'elenco completo dei formati possibili per le date è nella apposita pagina del Manuale PHP . Nascondi il Campo, perché non serve all'Utente ma al calcolo della durata. |
| aggiungi alla Vista il Campo "Restituzione" nello stesso formato | nella sezione Campi esiste già un Campo "Restituzione", mostrato all'Utente nel formato leggibile "giorno mese anno". Per lo stesso motivo sopra spiegato, nella sezione Campi aggiungi una seconda copia del Campo "Restituzione", come Formattatore selezione Personalizzato e come Formato data/ora digita "U". Nascondi il Campo. |
| aggiungi alla Vista un Campo di tipo Simple Math | nella sezione Campi della Vista aggiungi il Campo Simple Math Field - Globale - Views field that performs simple math expressions e come Etichetta digita "Durata" |
| predisponi il Campo ad usare i valori dei Campi "Consegna" e "Restituzione" per il calcolo | nell'elenco Select the fields to use in the formula della configurazione del Campo, seleziona i Campi "Consegna" e "Restituzione". A questi Campi corrispondono i Token (anch'essi elencati) "@field_restituzione_1" e "@field_consegna_1" (il _1 in fondo al nome del Token è dovuto al fatto che la Vista conteneva già un Campo "Consegna" ed un Campo "Restituzione"). |
| scrivi nel Campo la formula che calcola la differenza in giorni | Come Formula del Campo digita: (@field_restituzione_1 - @field_consegna_1) / 86400 +1 La formula è piuttosto intuitiva: dentro la parentesi viene calcolata la differenza in secondi tra la data di restituzione e la data di consegna; il risultato viene poi diviso per il numero di secondi di un giorno, per tradurre i secondi in giorni. Alla differenza in giorni così calcolata, si aggiunge 1 per evitare di mostrare 0 nel caso di un prestito che inizi e finisca nel medesimo giorno. Attiva l'opzione Arrotonda scegliendo zero numeri dopo la virgola, per mostrare un numero intero di giorni. |

| ATTENZIONE: Se nella Formula si utilizza un Token presente in Select the fields to use in the formula ma non selezionato, la Vista può andare in errore. Per rimediare, basta tornare nell'editor della Vista ed attivare il flag a fianco del Token. |
Poiché un Campo di tipo Simple Math è trattato come un qualunque altro Campo, anche ad esso corrisponde un Token - di nome {{ field_views_simple_math_field }} - che ne contiene il valore calcolato e che può essere a sua volta usato nei Campi successivi.
Il valore calcolato in un Campo Simple Math è mostrato all'Utente, ma non viene salvato nella Entità, quindi è disponibile solo dentro la Vista. Se invece si vuole salvare in un Campo dell'Entità un valore calcolato in base agli altri Campi dell'Entità stessa ci sono due modi, che richiedono altri moduli aggiuntivi:
- aggiungere all'Entità un Campo di tipo Computed, messo a disposizione dal modulo "Computed Field", che però richiede di programmare in PHP e che quindi non viene esaminato da MieApp.
- disegnare col modulo "ECA" una procedura che, al salvataggio di una Entità, esegue il calcolo usando i Campi dell'Entità stessa e scrive il risultato in un ulteriore Campo dell'Entità. Questo metodo evita di dover programmare in PHP e sarà spiegato nella sezione Automazioni di MieApp
B. Aggregare valori di un Campo delle Entità elencate
Se invece si vuole calcolare un valore sulla base dei valori di un Campo delle Entità elencate nella Vista - ad esempio il prezzo medio delle cassette di frutta - , occorre installare e attivare il modulo aggiuntivo "Views Aggregator Plus".
Questo potente modulo consente di modificare in modo significativo una Vista: In questo primo esempio ci limitiamo a sfruttarne la capacità di aggiungere in fondo alla Vista "Miei Prestiti Conclusi" sopra descritta la media della durata dei Prestiti effettuati:
| attiva l'aggregazione | nella sezione Formato della Vista seleziona Table with aggregation options |
| attiva sul Campo "Durata" il calcolo della media | nella sezione Formato della Vista, sotto Impostazioni identifica il Campo Durata, attiva Apply column function e seleziona Median |