Campos numéricos

Um campo numérico armazena um número como value e uma string como text. O value é sempre um número válido, conforme definido pelas restrições atribuídas ao campo na criação. O texto pode ser qualquer string inserida no editor.

Campo de número

Um bloco com o rótulo "number:" e um campo de número definido como 100.

Campo de número com o editor aberto

O mesmo bloco com o campo sendo
editado.

Campo de número em um bloco recolhido

O mesmo bloco depois de ser recolhido. Ele tem o rótulo "number: 100" e uma borda direita irregular para mostrar que está recolhido.

Criação

JSON

{
  "type": "example_number",
  "message0": "number: %1",
  "args0": [
    {
      "type": "field_number",
      "name": "FIELDNAME",
      "value": 100,
      "min": 0,
      "max": 100,
      "precision": 10
    }
  ]
}

JavaScript

Blockly.Blocks['example_number'] = {
  init: function() {
    this.appendDummyInput()
        .appendField("number:")
        .appendField(new Blockly.FieldNumber(100, 0, 100, 10), 'FIELDNAME');
  }
};

O construtor de números usa o seguinte:

  • um value opcional
  • um min (em inglês) opcional
  • um max (em inglês) opcional
  • um precision (em inglês) opcional
  • um validator (em inglês) opcional

O value precisa ser convertido em um número. Caso contrário, será usado 0.

Serialização

JSON

O JSON de um campo numérico é assim:

{
  "fields": {
    "FIELDNAME": 0
  }
}

Em que FIELDNAME é uma string que faz referência a um campo numérico, e o valor é o valor a ser aplicado ao campo. O valor segue as mesmas regras do valor do construtor.

XML

O XML de um campo numérico é assim:

<field name="FIELDNAME">0</field>

O atributo name do nó field contém uma string que faz referência a um campo numérico, e o text interno do nó é o value a ser aplicado ao campo. O valor do texto interno segue as mesmas regras do valor do construtor.

Restrições

As restrições podem ser definidas na definição do campo ou usando a função setConstraints.

Valor mínimo

O valor min define o menor/mais negativo valor que o campo pode conter.

Valor máximo

O valor max define o maior/mais positivo valor que o campo pode conter.

Arredondamento

A precision arredonda o valor para o múltiplo mais próximo da precisão. Isso pode ser usado para fazer com que o campo aceite apenas múltiplos de 0, 01, 10, 42 etc.

Restrições comuns

Números positivos

Para forçar o campo a aceitar apenas números positivos, defina o valor min como 1.

Números inteiros

Para forçar o campo a aceitar apenas números inteiros, defina precision como 1.

Como criar um validador de números

O valor de um campo numérico é um número. Portanto, todos os validadores precisam aceitar um number e retornar um number, null ou undefined.

Confira um exemplo de um validador que muda o valor para 0 ou 1, dependendo se o valor era ímpar ou par.

function(newValue) {
  return newValue % 2;
}

Um GIF animado mostrando o validador em ação. Quando o usuário digita 10 e
clica em outro lugar, o campo é definido como 0. Quando o usuário digita 11 e clica
em outro lugar, o campo é definido como 1.