Vai al contenuto

Formule

Molti widget disponibili per costruire la dashboard supportano formule personalizzate definite dall'utente.

Ecco la documentazione completa della sintassi supportata.

Sintassi delle espressioni

La sintassi accettata è abbastanza semplice. È simile alle normali espressioni JavaScript, ma più orientata alla matematica. Ad esempio, l'operatore ^ è l'esponenziazione, non xor.

Precedenza degli operatori

| Operatore | Associazione | Descrizione | | :----------------------- | :----------- | :-------------------------------------------------------------------------------------------------- | --------- | | (...) | Nessuna | Raggruppamento | | f(), x.y, a[i] | Sinistra | Chiamata di funzione, accesso a proprietà, indicizzazione di array | | ! | Sinistra | Fattoriale | | ^ | Destra | Esponenziazione | | +, -, not, sqrt, etc. | Destra | Operatori unari prefissi (vedi sotto per l'elenco completo) | | *, /, % | Sinistra | Moltiplicazione, divisione, resto | | +, -, || | Sinistra | Addizione, sottrazione, concatenazione di array/lista | | ==, !=, >=, <=, >, <, in | Sinistra | Uguale, non uguale, ecc. "in" significa "l'operando sinistro è incluso nell'array operando destro?" | | and | Sinistra | AND logico | | or | Sinistra | | OR logico | | x ? y : z | Destra | Condizionale ternario (se x allora y altrimenti z) | | ; | Sinistra | Separatore di espressioni |

Operatori unari

Il parser ha diverse "funzioni" integrate che sono in realtà operatori unari. La differenza principale tra questi e le funzioni è che possono accettare solo un argomento, e le parentesi sono opzionali. Con le parentesi, hanno la stessa precedenza delle chiamate di funzione, ma senza parentesi, mantengono la loro precedenza normale (appena sotto ^). Ad esempio, sin(x)^2 è equivalente a (sin x)^2, e sin x^2 è equivalente a sin(x^2).

Gli operatori unari + e - sono un'eccezione, e hanno sempre la loro precedenza normale.

Operatore Descrizione
-x Negazione
+x Più unario. Questo converte il suo operando in un numero, ma non ha altri effetti.
x! Fattoriale (x _ (x-1) _ (x-2) _ … _ 2 * 1). gamma(x + 1) per non interi.
abs x Valore assoluto (magnitudine) di x
acos x Arco coseno di x (in radianti)
acosh x Arco coseno iperbolico di x (in radianti)
asin x Arco seno di x (in radianti)
asinh x Arco seno iperbolico di x (in radianti)
atan x Arco tangente di x (in radianti)
atanh x Arco tangente iperbolico di x (in radianti)
cbrt x Radice cubica di x
ceil x Arrotondamento per eccesso di x — il più piccolo intero che è >= x
cos x Coseno di x (x è in radianti)
cosh x Coseno iperbolico di x (x è in radianti)
exp x e^x (funzione esponenziale/antilogaritmo con base e)
expm1 x e^x - 1
floor x Arrotondamento per difetto di x — il più grande intero che è <= x
length x Lunghezza di stringa o array di x
ln x Logaritmo naturale di x
log x Logaritmo naturale di x (sinonimo di ln, non logaritmo in base 10)
log10 x Logaritmo in base 10 di x
log2 x Logaritmo in base 2 di x
log1p x Logaritmo naturale di (1 + x)
not x Operatore NOT logico
round x X, arrotondato all'intero più vicino, usando l'arrotondamento "scolastico" (0.5 viene arrotondato al numero pari più vicino)
sign x Segno di x (-1, 0, o 1 per negativo, zero, o positivo rispettivamente)
sin x Seno di x (x è in radianti)
sinh x Seno iperbolico di x (x è in radianti)
sqrt x Radice quadrata di x. Il risultato è NaN (Not a Number) se x è negativo.
tan x Tangente di x (x è in radianti)
tanh x Tangente iperbolica di x (x è in radianti)
trunc x Parte intera di X, sembra floor(x) tranne per i numeri negativi

Funzioni predefinite

Oltre alle "funzioni" operatore, ci sono diverse altre funzioni.

Funzione Descrizione
random(n) Ottiene un numero casuale nell'intervallo [0, n). Se n è zero, o non fornito, assume il valore predefinito di 1.
fac(n) n! (fattoriale di n: "n _ (n-1) _ (n-2) _ … _ 2 * 1") Deprecato. Usa l'operatore ! invece.
min(a,b,…) Ottiene il numero più piccolo (minimo) nella lista.
max(a,b,…) Ottiene il numero più grande (massimo) nella lista.
hypot(a,b) Ipotenusa, cioè la radice quadrata della somma dei quadrati dei suoi argomenti.
pyt(a, b) Alias per hypot.
pow(x, y) Equivalente a x^y. Per coerenza con l'oggetto Math di JavaScript.
atan2(y, x) Arco tangente di x/y. i.e. l'angolo tra (0, 0) e (x, y) in radianti.
roundTo(x, n) Arrotonda x a n cifre dopo il punto decimale.
map(f, a) Mappa di array: Passa ogni elemento di a alla funzione f, e restituisce un array dei risultati.
fold(f, y, a) Fold/reduce di array: Riduce l'array a in un singolo valore, y impostando y = f(y, x, index) per ogni elemento x dell'array.
filter(f, a) Filtro di array: Restituisce un array contenente solo i valori di a dove f(x, index) è true.
indexOf(x, a) Restituisce il primo indice di stringa o array a che corrisponde al valore x, o -1 se non trovato.
join(sep, a) Concatenare gli elementi di a, separati da sep.
if(c, a, b) Forma funzionale di c ? a : b. Nota: Questo valuta sempre sia a che b, indipendentemente dal fatto che c sia true o meno. Usa c ? a : b invece se ci sono effetti collaterali, o se valutare i rami potrebbe essere costoso.

Letterali di array

Gli array possono essere creati includendo gli elementi all'interno di parentesi quadre [], separati da virgole. Ad esempio:

[ 1, 2, 3, 2+2, 10/2, 3! ]

Costanti

Il parser include anche un certo numero di costanti predefinite che possono essere utilizzate nelle espressioni. Queste sono mostrate nella tabella sottostante:

Costante Descrizione
E Numero di Eulero
PI PI (π)
true Valore logico true
false Valore logico false