Champs numériques

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

Champ numérique

Bloc avec le libellé "number:" et un champ numérique défini sur 100.

Champ numérique avec l'éditeur ouvert

Le même bloc avec le champ en cours de modification.

Champ numérique dans un bloc réduit

Le même bloc après avoir été réduit. Il comporte le libellé "number: 100" et un bord droit dentelé pour indiquer qu'il est 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 accepte les éléments suivants :

  • un value facultatif ;
  • un min facultatif ;
  • un max facultatif ;
  • un precision facultatif ;
  • un validator facultatif ;

value doit être converti en nombre. Si ce n'est pas le cas, la valeur 0 sera utilisée.

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 celle à 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 l'élément text interne du nœud est le value à appliquer au champ. La valeur du 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/la plus négative que le champ est autorisé à contenir.

Valeur maximale

La valeur max définit la valeur la plus élevée/la plus positive que le champ est autorisé à contenir.

Arrondi

precision arrondit la valeur au multiple de précision le plus proche. Cela peut être utilisé pour 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 des nombres positifs, définissez la valeur min sur 1.

Entiers

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

Créer un validateur de nombre

La valeur d'un champ numérique est un nombre. Par conséquent, tous les validateurs doivent accepter un number et renvoyer un number, null ou undefined.

Voici un exemple de validateur qui remplace la valeur par 0 ou 1 selon qu'elle était paire ou impaire.

function(newValue) {
  return newValue % 2;
}

GIF animé montrant le fonctionnement du validateur. Lorsque l&#39;utilisateur saisit 10 et clique ailleurs, le champ est défini sur 0. Lorsque l&#39;utilisateur saisit 11 et clique ailleurs, le champ est défini sur 1.