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.