Champs numériques

Un champ numérique stocke un nombre en tant que value et une chaîne en tant que text. Son value est toujours un nombre valide tel que défini par les contraintes appliquées au champ lors de la création. Son texte peut être n'importe quelle chaîne saisie dans son éditeur.

Champ numérique

Champ numérique avec l'éditeur ouvert

Champ numérique dans le bloc réduit

Création

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

Le constructeur de nombres utilise les éléments suivants:

L'élément value doit être converti en nombre. Dans le cas contraire, 0 sera utilisé.

sérialisation

JSON

Le code JSON d'un champ numérique se présente comme suit:

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

FIELDNAME est une chaîne faisant référence à un champ numérique, et la valeur est la valeur à appliquer au champ. La valeur suit les mêmes règles que la valeur du constructeur.

XML

Le code XML d'un champ numérique se présente comme suit:

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

L'attribut name du nœud field contient une chaîne faisant référence à un champ numérique, et la text interne du nœud est la value à appliquer au champ. La valeur de texte interne suit les mêmes règles que la valeur du constructeur.

Contraintes

Les contraintes peuvent être définies dans la définition du champ ou à l'aide de la fonction setConstraints.

Valeur minimale

La valeur min définit la valeur la plus petite ou la plus négative que le champ peut contenir.

Valeur maximale

La valeur max définit la valeur la plus grande et la plus positive que le champ peut contenir.

Arrondi

precision arrondit la valeur au multiple de précision le plus proche. Cela permet de faire en sorte que le champ n'accepte que les multiples de 0,01, 10, 42, etc.

Contraintes courantes

Nombres positifs

Pour forcer votre champ à n'accepter que les nombres positifs, définissez la valeur min sur 1.

Entiers

Pour forcer votre champ à n'accepter que des entiers, définissez precision sur 1.

Créer un outil de validation de numéros

La valeur d'un champ numérique est un nombre. Tous les validateurs doivent donc accepter un number et renvoyer number, null ou undefined.

Voici un exemple de validateur qui modifie la valeur en 0 ou 1 selon que la valeur est impaire ou paire.

function(newValue) {
  return newValue % 2;
}