Campos numéricos

Un campo numérico almacena un número como su value y una string como su text. Su value siempre es un número válido, según lo definido por las restricciones que se le proporcionan al campo en el momento de su creación. Su texto puede ser cualquier cadena que se ingrese en su editor.

Campo numérico

Campo numérico con el editor abierto

Campo numérico en el bloque contraído

Creación

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');
  }
};

El constructor de números incluye lo siguiente:

El value debe convertir a un número. De lo contrario, se usará 0.

Serialización

JSON

El JSON para un campo numérico tiene el siguiente aspecto:

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

En el ejemplo anterior, FIELDNAME es una cadena que hace referencia a un campo numérico y el valor es el valor que se aplica al campo. El valor sigue las mismas reglas que el valor del constructor.

XML

El XML de un campo numérico se ve así:

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

El atributo name del nodo field contiene una cadena que hace referencia a un campo numérico, y el text interno del nodo es el value que se aplicará al campo. El valor de texto interno sigue las mismas reglas que el valor del constructor.

Limitaciones

Las restricciones se pueden establecer en la definición de campo o con la función setConstraints.

Valor mínimo

El valor min establece el valor más pequeño o más negativo que el campo puede contener.

Valor máximo

El valor max establece el valor más grande o más positivo que el campo puede contener.

Redondeo

precision redondea el valor al múltiplo de precisión más cercano. Esto se puede usar para que el campo solo acepte múltiplos de .01, 10, 42, etcétera.

Limitaciones comunes

Números positivos

Para forzar que tu campo solo acepte números positivos, establece el valor min en 1.

enteros

Para forzar que tu campo acepte solo números enteros, establece precision en 1.

Cómo crear un validador de números

El valor de un campo numérico es un número, por lo que cualquier validador debe aceptar un number y mostrar un number, null o undefined.

A continuación, se muestra un ejemplo de un validador que cambia el valor a 0 o 1 en función de si el valor era impar o par.

function(newValue) {
  return newValue % 2;
}