Novità sui componenti di Power Apps
Due nuove funzionalità sperimentali si aggiungono all'arsenale di PowerApps
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/