Expressões Matemáticas
A biblioteca de expressões matemáticas permite a avaliação de expressões com a utilização de variáveis dinâmicas. A biblioteca funciona a partir de uma fórmula matemática onde variáveis estão entrelaçadas com outras operações.
As expressões matemáticas não permitem a utilização de funções JavaScript em sua formulação.
Sintaxe da Expressão
As expressões devem ser declaradas normalmente como uma função matemática em JavaScript. A inclusão de variáveis deverá ser feita entre colchetes. Uma variável permite os seguintes caracteres:
- Espaços;
- Letras maiúsculas, minúsculas e acentuação;
- Os caracteres -, _ e . (ponto);
- Números;
Exemplos de variáveis válidas:
- [FAT.Preço]
- [FAT-Preço Único]
- [abc VaRiÁVEL1234__-]
Variáveis só podem começar com letras.
Utilização
O pacote uwl.expression
deverá ser importado para ter acesso a esta biblioteca. Em seguida,
a chamada ao método estático uwl.expression.createExpression()
vai retornar uma instância da
classe Expression
, onde o desenvolvedor poderá avaliar uma expressão e obter seu resultado
utilizando o método expression.evaluate()
.
Parâmetro de Entrada
O parâmetro de entrada do método evaluate
deverá ser um objeto contento em suas chaves o nome das
variáveis a serem processadas. O valor da chave deverá ser o valor a ser utilizado na expressão.
Por exemplo, para uma expressão 10*[valor]+[outro valor], o parâmetro de entrada deverá ser:
{
'valor': 10,
'outro valor': 100
}
Exceções
- Parâmetros null ou strings vazias serão consideradas como 0;
- Divisões por zero retornarão o valor 0, não realizarão cálculo e não jogarão exceções.
Exemplo
O exemplo abaixo ilustra a utilização da biblioteca:
__includeOnce('ufs:/uwl/expression/Expression.js');
var expr = uwl.expression.createExpression('10*[valor]');
var valor = expr.evaluate({ 'valor': 10 });
valor; // valor deve ser 100
Uso Avançado
É possível ainda informar fórmulas mais complexas, com a utilização de precedência entre parênteses e mais de uma variável.
O exemplo abaixo mostra como utilizar mais de uma variável com expressões mais complexas:
__includeOnce('ufs:/uwl/expression/Expression.js');
var expr = uwl.expression.createExpression('10*([valor]*0.1)+([quantidade]/100)*((100*20)+[preço])');
var valor = expr.evaluate({
'valor': 10,
'preço': 10.49,
'quantidade': 10
});
valor; // valor deve ser 211.049
Utilização de Datas
O avaliador de expressões também suporta fórmulas com datas:
__includeOnce('ufs:/uwl/expression/Expression.js');
var expr = uwl.expression.createExpression('[data]+30*[meses]');
var valor = expr.evaluate({
'data': new Date(2013, 0, 1),
'meses': 2
});
valor; // valor deve 02/03/2013
Exceções
- Expressões com data não devem conter parênteses.