Indice

🟦Nuova 🟩Pronta 🟨Bozza 🟥Da scrivere

Calcoli nella Viste

Campi calcolati in base agli altri Campi. Sommare valori delle Entità elencate nella Vista. Memorizzare nelle Entità il risultato di calcoli.
Aggiornata il:
Stato: 🟩Pronta

In questa Guida vediamo come svolgere calcoli nella tua app, in tre modi diversi:

  • mostrare in una Vista un valore calcolato sulla base degli altri Campi della Vista
  • mostrare in una Vista un valore calcolato su un Campo di tutte le Entità elencate nella Vista
  • memorizzare nel Campo di una Entità un valore calcolato sulla base di Campi dell'Entità stessa o di altre Entità correlate all'Entità 

Calcolare un Campo sulla base di altri Campi

Per questa esigenza possiamo installare e attivare il modulo aggiuntivo "Views Simple Math Field", che aggiunge alle Viste il Campo speciale Globale - Simple Math Field - Views field that performs simple math expressions. Nella configurazione del 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. 

Ad esempio, se all'Entità "Richiesta" della app di esempio "Vicinato" aggiungiamo un Campo data "Inizio" ed un Campo data "Fine" in cui memorizzare le date di inizio e fine del prestito, in una Vista possiamo elencare a fianco di ogni Prestito un Campo Simple Math Field "Durata" che mostra la durata in giorni del prestito. Ecco come:

Un Campo Simple Math è trattato come un qualunque altro Campo, quindi ad esso corrisponde il Token  {{ field_views_simple_math_field }} che ne contiene il valore calcolato e che può essere a sua volta usato nei Campi successivi.

Calcolare un valore basato su un Campo di tutte le Entità elencate 

Per calcolare un valore come somma o media di un Campo delle Entità elencate in una Vista occorre installare e attivare il modulo aggiuntivo "Views Aggregator Plus". Questo modulo aggiunge il nuovo formato Table with aggregation options, che consente di modificare in modo significativo una Vista, qui però ci limitiamo a sfruttarne la capacità di aggiungere in fondo ad una Vista il valore calcolato su uno dei Campi elencati. Ad esempio, alla Vista prima esemplificata aggiungiamo la media della durata dei prestiti:

Memorizzare in un Campo un valore calcolato

Il valore calcolato in un Campo Simple Math è mostrato all'Utente, ma non viene salvato nell'Entità ed è quindi disponibile solo dentro la Vista. Se invece vuoi salvare in un Campo dell'Entità un valore calcolato in base agli altri Campi dell'Entità stessa o di altre Entità, ci sono due modi:

  • aggiungere all'Entità un Campo di tipo Computed, messo a disposizione dal modulo aggiuntivo "Computed Field"; ma la configurazione di questo Campo richiede di saper programmare in PHP e quindi non rientra negli scopi di MieApp.
  • costruire una procedura ECA che, al salvataggio dell'Entità, esegue il calcolo partendo dagli altri Campi dell'Entità e memorizza il risultato in un ulteriore Campo dell'Entità stessa. 

Memorizzare in un Campo di una Entità il risultato di una elaborazione complessa consente di disporre immediatamente di quel risultato senza doverlo ricalcolare ogni volta che l'Entità viene mostrata. Tornando all'esempio svolto nei paragrafi precedenti di questa Guida, le date di inizio e fine di una Richiesta della app "Vicinato" sono desumibili dalle Consegne effettuate e una Vista EVA potrebbe mostrarle all'interno della pagina del Prestito. Ma questa soluzione sarebbe molto onerosa per mostrare tali date ad ogni Richiesta elencata in una Vista. In casi come questi, è più conveniente aggiungere alla Richiesta due Campi data, in cui una procedura ECA attivata quando lo stato della Richiesta diventa "conclusa" scrive le due date, identificate analizzando una tantum l'elenco delle Consegne associate alla Richiesta.