Expressões Matemáticas

Introdução

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.

Utlizaçã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 e expression.evalute().

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 varíavel.

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.