Novità sui componenti di Power Apps

Microsoft ha aggiunto due nuove funzionalità sperimentali ai componenti basati su formule:

  • Behavior properties – Proprietà di comportamento. Ora è possibile attivare un evento personalizzato dal componente all’app di hosting. In precedenza, era possibile attivare solo OnReset. È ora possibile, ad esempio, attivare il proprio evento OnChange da un componente di selezione della data.
  • Property parameters – Parametri di proprietà. È ora possibile passare parametri per una valutazione di proprietà, in modo simile a come si passerebbero parametri a una query o una funzione in altri linguaggi. È possibile, ad esempio, definire una proprietà di output MathUtils.RandBetween che esegue un calcolo in base ai suoi parametri e viene chiamata come una funzione.

Con i parametri delle proprietà, ora puoi creare semplici funzioni definite dall’utente con formule. Ci sono alcune limitazioni, ad esempio le proprietà di output devono essere pulite e senza effetti collaterali.

Trattandosi di funzionalità sperimentali, non utilizzarle in produzione fino a quando non raggiungono l’anteprima. Per abilitarle, attiva questo interruttore in File> Impostazioni> Impostazioni avanzate> Funzionalità sperimentali:

Proprietà di comportamento

Immagina di voler creare un componente per raccogliere le date di inizio e di fine. Potrebbe essere simile a questo con due controlli di selezione della data:

Supponiamo ora che tu voglia sapere nella tua app se una di queste due date cambia. I controlli di selezione della data hanno eventi OnChange, ma fino ad ora non c’era modo di collegarli all’app che ospita il componente.

Adesso invece è possibile. Possiamo aggiungere una nuova proprietà personalizzata, denominarla OnChange e fare in modo che il suo tipo di proprietà sia Behavior:

Con questo in atto, ora possiamo richiamare questa proprietà dall’interno del nostro componente come se fosse una chiamata di funzione, mostrata qui da OnChange per entrambi i selettori di data:

E dall’interno della nostra app, possiamo scrivere una funzione per agire quando uno di questi selettori di date cambia:

Il risultato:

Parametri di proprietà

Non sarebbe fantastico se potessimo passare i parametri a OnChange?

Torniamo al nostro esempio e passiamo le date di inizio e fine alla formula OnChange. In fondo alla definizione della proprietà del componente c’è una nuova funzione per l’aggiunta di parametri:

Selezionando + Nuovo parametro possiamo aggiungere Start con un tipo di dati DateTime:

E dopo aver fatto la stessa cosa per End, avremo due parametri opzionali:

Con questi parametri possiamo aggiornare il componente per passare i valori correnti dai selettori di data all’evento:

Infine, aggiorniamo la formula OnChange nell’app per utilizzare questi parametri.

Tieni presente che poiché abbiamo aggiunto i parametri all’evento, il valore della formula nell’app sarà tornato al valore predefinito e la nostra precedente personalizzazione andrà persa. Si tratta di un bug che speriamo Microsoft risolva presto.

In questo esempio, le date di inizio e di fine potrebbero essere disponibili in questo caso come proprietà di output. Ma ci sono altri casi in cui sono presenti informazioni specifiche al momento in cui l’evento è stato attivato, che potrebbero cambiare nel momento in cui la formula lo legge. L’utilizzo dei parametri corregge quei valori per quella specifica chiamata di evento.

Funzioni pure

Possiamo usare i parametri delle proprietà anche in quelle di input e output. Un buon esempio di ciò sarebbe una libreria di utilità matematiche. Al momento la funzione RandBetween di Excel non c’è in Power Apps. Ma è possibile ricrearla usando la funzione Rand.

Iniziamo creando un nuovo componente MathUtils con una proprietà personalizzata RandBetween del tipo di proprietà Output e del tipo di dati Number:

Aggiungeremo due parametri a questa proprietà per l’intervallo. Excel assegna a questi parametri il nome Bottom e Top, di tipo Number. Questi sono entrambi parametri obbligatori in Excel.

All’interno del componente, definiremo la formula per calcolare RandBetween sulla base di questi parametri:

If( Top >= Bottom, 

    Round( Rand() * (Top – Bottom) + Bottom, 0 ),

    Blank()

)

Ora possiamo chiamarlo come una funzione dall’interno della nostra app. Dovremo creare un’istanza di questo componente, con il nome predefinito MathUtils_1. Qui vengono utilizzati due controlli di scorrimento come input e il risultato viene visualizzato in un controllo etichetta:

Quando i cursori cambiano, viene calcolato un nuovo numero casuale tra i due. Si noti che se Bottom è maggiore di Top, viene restituito un valore vuoto:

Si tratta di una funzione definita dall’utente scritta nel linguaggio delle formule di Power Apps. Sono solo i primi passi e Microsoft sta iniziando a vedere alcuni dei limiti scomodi su cui lavorare:

  • RandBetween è una funzione pura: fa il suo lavoro basandosi esclusivamente sui suoi parametri di input. Non può leggere lo stato nell’app, come variabili globali o origini dati.
  • RandBetween è una proprietà del flusso di dati. Non può cambiare stato all’interno del componente o dell’app.
  • Il componente doveva essere istanziato. È un componente UX che deve essere posizionato sullo schermo, dove in effetti MathUtils non ha alcuna UI. Sarebbe meglio se RandBetween fosse semplicemente una funzione MathUtils e non orientata agli oggetti.

Le informazioni presenti in questo post, sono prese dall’articolo: https://powerapps.microsoft.com/en-us/blog/enhanced-component-properties/